packages feed

Agda 2.5.4.2 → 2.6.0

raw patch · 296 files changed

+38364/−24100 lines, 296 filesdep +aesondep +exceptionsdep +splitdep −faildep ~basedep ~containersdep ~stmsetup-changedPVP ok

version bump matches the API change (PVP)

Dependencies added: aeson, exceptions, split

Dependencies removed: fail

Dependency ranges changed: base, containers, stm, template-haskell, transformers

API changes (from Hackage documentation)

- Agda.Auto.Convert: instance Agda.Auto.Convert.Conversion Agda.Auto.Convert.TOM Agda.Syntax.Internal.Clause (GHC.Base.Maybe ([Agda.Auto.Syntax.Pat Agda.Auto.Convert.O], Agda.Auto.Syntax.MExp Agda.Auto.Convert.O))
- Agda.Interaction.BasicOps: FindInScopeOF :: b -> a -> [(a, a)] -> OutputConstraint a b
- Agda.Interaction.BasicOps: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Agda.Interaction.BasicOps.OutputConstraint a b)
- Agda.Interaction.BasicOps: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Agda.Interaction.BasicOps.OutputForm a b)
- Agda.Interaction.BasicOps: showComparison :: Comparison -> String
- Agda.Interaction.EmacsCommand: display_warning :: String -> String -> Lisp String
- Agda.Interaction.FindFile: moduleName' :: AbsolutePath -> TCM TopLevelModuleName
- Agda.Interaction.Highlighting.Precise: Option :: Aspect
- Agda.Interaction.Highlighting.Precise: ReachabilityProblem :: OtherAspect
- Agda.Interaction.Imports: errorWarningsOfTCErr :: TCErr -> TCM [TCWarning]
- Agda.Interaction.InteractionTop: Cmd_auto :: InteractionId -> range -> String -> Interaction' range
- Agda.Interaction.InteractionTop: data Command
- Agda.Interaction.InteractionTop: instance GHC.Show.Show Agda.Interaction.InteractionTop.Command
- Agda.Interaction.InteractionTop: nextCommand :: CommandM Command
- Agda.Interaction.InteractionTop: type CommandQueue = TChan Command
- Agda.Interaction.Library: instance GHC.Show.Show Agda.Interaction.Library.LibError
- Agda.Interaction.MakeCase: getClauseForIP :: QName -> Int -> TCM (CaseContext, Clause, [Clause])
- Agda.Interaction.Options: [optGuardingTypeConstructors] :: PragmaOptions -> Bool
- Agda.Interaction.Options: [optProofIrrelevance] :: PragmaOptions -> Bool
- Agda.Interaction.Options: isLiterate :: FilePath -> Bool
- Agda.Interaction.Options: parseStandardOptions :: [String] -> OptM CommandLineOptions
- Agda.Interaction.Options: parseStandardOptions' :: [String] -> Flag CommandLineOptions
- Agda.Interaction.Options.Warnings: SafeFlagPrimTrustMe_ :: WarningName
- Agda.Syntax.Abstract: CompiledDataPragma :: QName -> String -> [String] -> Pragma
- Agda.Syntax.Abstract: CompiledDataUHCPragma :: QName -> String -> [String] -> Pragma
- Agda.Syntax.Abstract: CompiledExportPragma :: QName -> String -> Pragma
- Agda.Syntax.Abstract: CompiledJSPragma :: QName -> String -> Pragma
- Agda.Syntax.Abstract: CompiledPragma :: QName -> String -> Pragma
- Agda.Syntax.Abstract: CompiledTypePragma :: QName -> String -> Pragma
- Agda.Syntax.Abstract: CompiledUHCPragma :: QName -> String -> Pragma
- Agda.Syntax.Abstract: RecordModuleIFS :: ModuleName -> ModuleApplication
- Agda.Syntax.Abstract: TypedBindings :: Range -> (Arg TypedBinding) -> TypedBindings
- Agda.Syntax.Abstract: class MaybePostfixProjP a
- Agda.Syntax.Abstract: data TypedBindings
- Agda.Syntax.Abstract: instance Agda.Syntax.Abstract.AllNames Agda.Syntax.Abstract.TypedBindings
- Agda.Syntax.Abstract: instance Agda.Syntax.Abstract.AllNames a => Agda.Syntax.Abstract.AllNames (GHC.Base.Maybe a)
- Agda.Syntax.Abstract: instance Agda.Syntax.Abstract.MaybePostfixProjP a => Agda.Syntax.Abstract.MaybePostfixProjP (Agda.Syntax.Common.Arg a)
- Agda.Syntax.Abstract: instance Agda.Syntax.Abstract.MaybePostfixProjP a => Agda.Syntax.Abstract.MaybePostfixProjP (Agda.Syntax.Common.Named n a)
- Agda.Syntax.Abstract: instance Agda.Syntax.Abstract.Name.IsProjP e => Agda.Syntax.Abstract.MaybePostfixProjP (Agda.Syntax.Abstract.Pattern' e)
- Agda.Syntax.Abstract: instance Agda.Syntax.Abstract.SubstExpr Agda.Syntax.Abstract.TypedBindings
- Agda.Syntax.Abstract: instance Agda.Syntax.Common.LensHiding Agda.Syntax.Abstract.TypedBindings
- Agda.Syntax.Abstract: instance Agda.Syntax.Position.HasRange Agda.Syntax.Abstract.TypedBindings
- Agda.Syntax.Abstract: instance Agda.Syntax.Position.KillRange Agda.Syntax.Abstract.TypedBindings
- Agda.Syntax.Abstract: instance Data.Data.Data Agda.Syntax.Abstract.TypedBindings
- Agda.Syntax.Abstract: instance Data.Generics.Geniplate.UniverseBi Agda.Syntax.Abstract.Declaration Agda.Syntax.Common.RString
- Agda.Syntax.Abstract: instance GHC.Classes.Eq Agda.Syntax.Abstract.TypedBindings
- Agda.Syntax.Abstract: instance GHC.Show.Show Agda.Syntax.Abstract.TypedBindings
- Agda.Syntax.Abstract: maybePostfixProjP :: MaybePostfixProjP a => a -> Maybe (ProjOrigin, AmbiguousQName)
- Agda.Syntax.Abstract.Copatterns: instance Agda.Syntax.Abstract.Copatterns.Rename Agda.Syntax.Abstract.TypedBindings
- Agda.Syntax.Abstract.Pattern: instance Agda.Syntax.Abstract.Pattern.APatternLike a b => Agda.Syntax.Abstract.Pattern.APatternLike a (GHC.Base.Maybe b)
- Agda.Syntax.Abstract.Pattern: instance Agda.Syntax.Abstract.Pattern.MapNamedArgPattern a => Agda.Syntax.Abstract.Pattern.MapNamedArgPattern (GHC.Base.Maybe a)
- Agda.Syntax.Abstract.Views: instance Agda.Syntax.Abstract.Views.ExprLike Agda.Syntax.Abstract.TypedBindings
- Agda.Syntax.Common: instance (Data.Data.Data a, Data.Data.Data b) => Data.Data.Data (Agda.Syntax.Common.ImportDirective' a b)
- Agda.Syntax.Common: instance (Data.Data.Data a, Data.Data.Data b) => Data.Data.Data (Agda.Syntax.Common.ImportedName' a b)
- Agda.Syntax.Common: instance (Data.Data.Data a, Data.Data.Data b) => Data.Data.Data (Agda.Syntax.Common.Renaming' a b)
- Agda.Syntax.Common: instance (Data.Data.Data a, Data.Data.Data b) => Data.Data.Data (Agda.Syntax.Common.Using' a b)
- Agda.Syntax.Common: instance (GHC.Classes.Eq b, GHC.Classes.Eq a) => GHC.Classes.Eq (Agda.Syntax.Common.ImportDirective' a b)
- Agda.Syntax.Common: instance (GHC.Classes.Eq b, GHC.Classes.Eq a) => GHC.Classes.Eq (Agda.Syntax.Common.ImportedName' a b)
- Agda.Syntax.Common: instance (GHC.Classes.Eq b, GHC.Classes.Eq a) => GHC.Classes.Eq (Agda.Syntax.Common.Renaming' a b)
- Agda.Syntax.Common: instance (GHC.Classes.Eq b, GHC.Classes.Eq a) => GHC.Classes.Eq (Agda.Syntax.Common.Using' a b)
- Agda.Syntax.Common: instance (GHC.Classes.Ord b, GHC.Classes.Ord a) => GHC.Classes.Ord (Agda.Syntax.Common.ImportedName' a b)
- Agda.Syntax.Common: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Agda.Syntax.Common.ImportedName' a b)
- Agda.Syntax.Common: instance GHC.Base.Monoid (Agda.Syntax.Common.Using' a b)
- Agda.Syntax.Common: instance GHC.Base.Semigroup (Agda.Syntax.Common.Using' a b)
- Agda.Syntax.Common: instance GHC.Show.Show a => GHC.Show.Show (Agda.Syntax.Common.Arg a)
- Agda.Syntax.Common: instance GHC.Show.Show a => GHC.Show.Show (Agda.Syntax.Common.Dom a)
- Agda.Syntax.Common: instance GHC.Show.Show a => GHC.Show.Show (Agda.Syntax.Common.Named_ a)
- Agda.Syntax.Common: unusableRelevance :: LensRelevance a => a -> Bool
- Agda.Syntax.Concrete: CompiledDataPragma :: Range -> QName -> String -> [String] -> Pragma
- Agda.Syntax.Concrete: CompiledDataUHCPragma :: Range -> QName -> String -> [String] -> Pragma
- Agda.Syntax.Concrete: CompiledExportPragma :: Range -> QName -> String -> Pragma
- Agda.Syntax.Concrete: CompiledJSPragma :: Range -> QName -> String -> Pragma
- Agda.Syntax.Concrete: CompiledPragma :: Range -> QName -> String -> Pragma
- Agda.Syntax.Concrete: CompiledTypePragma :: Range -> QName -> String -> Pragma
- Agda.Syntax.Concrete: CompiledUHCPragma :: Range -> QName -> String -> Pragma
- Agda.Syntax.Concrete: HaskellCodePragma :: Range -> String -> Pragma
- Agda.Syntax.Concrete: ImportPragma :: Range -> String -> Pragma
- Agda.Syntax.Concrete: ImportUHCPragma :: Range -> String -> Pragma
- Agda.Syntax.Concrete: RecordModuleIFS :: Range -> QName -> ModuleApplication
- Agda.Syntax.Concrete: TypedBindings :: Range -> (Arg a) -> TypedBindings' a
- Agda.Syntax.Concrete: [boundLabel] :: BoundName -> Name
- Agda.Syntax.Concrete: data AsName
- Agda.Syntax.Concrete: data TypedBindings' a
- Agda.Syntax.Concrete: instance Agda.Syntax.Common.LensHiding Agda.Syntax.Concrete.TypedBindings
- Agda.Syntax.Concrete: instance Agda.Syntax.Common.LensRelevance Agda.Syntax.Concrete.TypedBindings
- Agda.Syntax.Concrete: instance Agda.Syntax.Position.HasRange Agda.Syntax.Concrete.TypedBindings
- Agda.Syntax.Concrete: instance Agda.Syntax.Position.KillRange Agda.Syntax.Concrete.TypedBindings
- Agda.Syntax.Concrete: instance Agda.Syntax.Position.SetRange Agda.Syntax.Concrete.TypedBindings
- Agda.Syntax.Concrete: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Agda.Syntax.Concrete.TypedBindings' a)
- Agda.Syntax.Concrete: instance Data.Data.Data Agda.Syntax.Concrete.AsName
- Agda.Syntax.Concrete: instance Data.Data.Data a => Data.Data.Data (Agda.Syntax.Concrete.TypedBindings' a)
- Agda.Syntax.Concrete: instance Data.Foldable.Foldable Agda.Syntax.Concrete.TypedBindings'
- Agda.Syntax.Concrete: instance Data.Traversable.Traversable Agda.Syntax.Concrete.TypedBindings'
- Agda.Syntax.Concrete: instance GHC.Base.Functor Agda.Syntax.Concrete.TypedBindings'
- Agda.Syntax.Concrete: instance GHC.Show.Show Agda.Syntax.Concrete.AsName
- Agda.Syntax.Concrete: type TypedBindings = TypedBindings' TypedBinding
- Agda.Syntax.Concrete.Definitions: DataDef :: Range -> Fixity' -> IsAbstract -> PositivityCheck -> Name -> [LamBinding] -> [NiceConstructor] -> NiceDeclaration
- Agda.Syntax.Concrete.Definitions: MissingDefinition :: Name -> DeclarationException
- Agda.Syntax.Concrete.Definitions: MultipleFixityDecls :: [(Name, [Fixity'])] -> DeclarationException
- Agda.Syntax.Concrete.Definitions: MultiplePolarityPragmas :: [Name] -> DeclarationException
- Agda.Syntax.Concrete.Definitions: RecDef :: Range -> Fixity' -> IsAbstract -> PositivityCheck -> Name -> (Maybe (Ranged Induction)) -> (Maybe HasEta) -> (Maybe (ThingWithFixity Name, IsInstance)) -> [LamBinding] -> [NiceDeclaration] -> NiceDeclaration
- Agda.Syntax.Concrete.Definitions: WrongParameters :: Name -> Params -> Params -> DeclarationException
- Agda.Syntax.Concrete.Definitions: instance GHC.Base.Monoid (Agda.Syntax.Concrete.Definitions.Nice (Agda.Syntax.Concrete.Definitions.Fixities, Agda.Syntax.Concrete.Definitions.Polarities))
- Agda.Syntax.Concrete.Definitions: instance GHC.Base.Semigroup (Agda.Syntax.Concrete.Definitions.Nice (Agda.Syntax.Concrete.Definitions.Fixities, Agda.Syntax.Concrete.Definitions.Polarities))
- Agda.Syntax.Concrete.Generic: instance Agda.Syntax.Concrete.Generic.ExprLike Agda.Syntax.Concrete.TypedBindings
- Agda.Syntax.Concrete.Generic: instance Agda.Syntax.Concrete.Generic.ExprLike a => Agda.Syntax.Concrete.Generic.ExprLike (GHC.Base.Maybe a)
- Agda.Syntax.Concrete.Pattern: instance Agda.Syntax.Concrete.Pattern.CPatternLike p => Agda.Syntax.Concrete.Pattern.CPatternLike (GHC.Base.Maybe p)
- Agda.Syntax.Concrete.Pretty: instance (Agda.Utils.Pretty.Pretty a, Agda.Utils.Pretty.Pretty b) => GHC.Show.Show (Agda.Syntax.Common.ImportDirective' a b)
- Agda.Syntax.Concrete.Pretty: instance Agda.Utils.Pretty.Pretty Agda.Syntax.Common.Induction
- Agda.Syntax.Concrete.Pretty: instance Agda.Utils.Pretty.Pretty Agda.Syntax.Concrete.TypedBindings
- Agda.Syntax.Concrete.Pretty: instance GHC.Show.Show Agda.Syntax.Concrete.LamBinding
- Agda.Syntax.Concrete.Pretty: instance GHC.Show.Show Agda.Syntax.Concrete.RHS
- Agda.Syntax.Concrete.Pretty: instance GHC.Show.Show Agda.Syntax.Concrete.TypedBinding
- Agda.Syntax.Concrete.Pretty: instance GHC.Show.Show Agda.Syntax.Concrete.TypedBindings
- Agda.Syntax.Concrete.Pretty: instance GHC.Show.Show Agda.Syntax.Concrete.WhereClause
- Agda.Syntax.Internal: argFromElim :: Elim' a -> Arg a
- Agda.Syntax.Internal: dropProjElims :: IsProjElim e => [e] -> [e]
- Agda.Syntax.Internal: hackReifyToMeta :: Term
- Agda.Syntax.Internal: isHackReifyToMeta :: Term -> Bool
- Agda.Syntax.Internal: notInScopeName :: ArgName -> ArgName
- Agda.Syntax.Internal: typeDontCare :: Type
- Agda.Syntax.Internal: unNotInScopeName :: ArgName -> ArgName
- Agda.Syntax.Internal.Defs: instance Agda.Syntax.Internal.Defs.GetDefs a => Agda.Syntax.Internal.Defs.GetDefs (GHC.Base.Maybe a)
- Agda.Syntax.Internal.Generic: instance Agda.Syntax.Internal.Generic.TermLike a => Agda.Syntax.Internal.Generic.TermLike (GHC.Base.Maybe a)
- Agda.Syntax.Internal.Names: instance Agda.Syntax.Internal.Names.NamesIn a => Agda.Syntax.Internal.Names.NamesIn (GHC.Base.Maybe a)
- Agda.Syntax.Parser: parseFile' :: (Show a) => Parser a -> AbsolutePath -> PM a
- Agda.Syntax.Parser.Literate: literateExts :: [String]
- Agda.Syntax.Parser.Monad: parseFile :: ParseFlags -> [LexState] -> Parser a -> AbsolutePath -> IO (ParseResult a)
- Agda.Syntax.Parser.Tokens: KwCOMPILED :: Keyword
- Agda.Syntax.Parser.Tokens: KwCOMPILED_DATA :: Keyword
- Agda.Syntax.Parser.Tokens: KwCOMPILED_DATA_UHC :: Keyword
- Agda.Syntax.Parser.Tokens: KwCOMPILED_EXPORT :: Keyword
- Agda.Syntax.Parser.Tokens: KwCOMPILED_JS :: Keyword
- Agda.Syntax.Parser.Tokens: KwCOMPILED_TYPE :: Keyword
- Agda.Syntax.Parser.Tokens: KwCOMPILED_UHC :: Keyword
- Agda.Syntax.Parser.Tokens: KwHASKELL :: Keyword
- Agda.Syntax.Parser.Tokens: KwIMPORT :: Keyword
- Agda.Syntax.Parser.Tokens: KwIMPORT_UHC :: Keyword
- Agda.Syntax.Position: dropI :: String -> Interval' a -> Interval' a
- Agda.Syntax.Position: instance Agda.Syntax.Position.HasRange a => Agda.Syntax.Position.HasRange (GHC.Base.Maybe a)
- Agda.Syntax.Position: instance Agda.Syntax.Position.KillRange a => Agda.Syntax.Position.KillRange (GHC.Base.Maybe a)
- Agda.Syntax.Position: instance GHC.Show.Show a => GHC.Show.Show (Agda.Syntax.Position.Range' (GHC.Base.Maybe a))
- Agda.Syntax.Position: takeI :: String -> Interval' a -> Interval' a
- Agda.Syntax.Translation.AbstractToConcrete: data DontTouchMe a
- Agda.Syntax.Translation.AbstractToConcrete: instance Agda.Syntax.Translation.AbstractToConcrete.ToConcrete (Agda.Syntax.Translation.AbstractToConcrete.DontTouchMe a) a
- Agda.Syntax.Translation.AbstractToConcrete: instance Agda.Syntax.Translation.AbstractToConcrete.ToConcrete (GHC.Base.Maybe Agda.Syntax.Abstract.Name.QName) (GHC.Base.Maybe Agda.Syntax.Concrete.Name.Name)
- Agda.Syntax.Translation.AbstractToConcrete: instance Agda.Syntax.Translation.AbstractToConcrete.ToConcrete Agda.Syntax.Abstract.BindName Agda.Syntax.Concrete.Name.Name
- Agda.Syntax.Translation.AbstractToConcrete: instance Agda.Syntax.Translation.AbstractToConcrete.ToConcrete Agda.Syntax.Abstract.LamBinding [Agda.Syntax.Concrete.LamBinding]
- Agda.Syntax.Translation.AbstractToConcrete: instance Agda.Syntax.Translation.AbstractToConcrete.ToConcrete Agda.Syntax.Abstract.TypedBindings [Agda.Syntax.Concrete.TypedBindings]
- Agda.Syntax.Translation.AbstractToConcrete: instance Agda.Syntax.Translation.AbstractToConcrete.ToConcrete Agda.Syntax.Translation.AbstractToConcrete.FreshName Agda.Syntax.Abstract.Name.Name
- Agda.Syntax.Translation.ConcreteToAbstract: data LetDef
- Agda.Syntax.Translation.ConcreteToAbstract: data LetDefs
- Agda.Syntax.Translation.ConcreteToAbstract: instance Agda.Syntax.Translation.ConcreteToAbstract.EnsureNoLetStms a => Agda.Syntax.Translation.ConcreteToAbstract.EnsureNoLetStms (Agda.Syntax.Concrete.TypedBindings' a)
- Agda.Syntax.Translation.ConcreteToAbstract: instance Agda.Syntax.Translation.ConcreteToAbstract.ToAbstract (Agda.Syntax.Translation.ConcreteToAbstract.NewName Agda.Syntax.Concrete.BoundName) Agda.Syntax.Abstract.Name.Name
- Agda.Syntax.Translation.ConcreteToAbstract: instance Agda.Syntax.Translation.ConcreteToAbstract.ToAbstract Agda.Syntax.Concrete.TypedBindings Agda.Syntax.Abstract.TypedBindings
- Agda.Syntax.Translation.ConcreteToAbstract: instance Agda.Syntax.Translation.ConcreteToAbstract.ToAbstract c a => Agda.Syntax.Translation.ConcreteToAbstract.ToAbstract (GHC.Base.Maybe c) (GHC.Base.Maybe a)
- Agda.Syntax.Translation.InternalToAbstract: instance Agda.Syntax.Translation.InternalToAbstract.Binder (Agda.Syntax.Common.WithHiding Agda.Syntax.Abstract.BindName)
- Agda.Syntax.Translation.InternalToAbstract: instance Agda.Syntax.Translation.InternalToAbstract.Binder (Agda.Syntax.Common.WithHiding Agda.Syntax.Abstract.Name.Name)
- Agda.Syntax.Translation.InternalToAbstract: instance Agda.Syntax.Translation.InternalToAbstract.Binder Agda.Syntax.Abstract.TypedBindings
- Agda.Syntax.Translation.InternalToAbstract: instance Agda.Syntax.Translation.InternalToAbstract.BlankVars Agda.Syntax.Abstract.TypedBindings
- Agda.Syntax.Translation.InternalToAbstract: instance Agda.Syntax.Translation.InternalToAbstract.BlankVars a => Agda.Syntax.Translation.InternalToAbstract.BlankVars (Agda.Syntax.Abstract.Pattern' a)
- Agda.Syntax.Translation.ReflectedToAbstract: instance Agda.Syntax.Translation.ReflectedToAbstract.ToAbstract r Agda.Syntax.Abstract.Expr => Agda.Syntax.Translation.ReflectedToAbstract.ToAbstract (Agda.Syntax.Common.Dom r, Agda.Syntax.Abstract.Name.Name) Agda.Syntax.Abstract.TypedBindings
- Agda.Termination.Monad: [terGuardingTypeConstructors] :: TerEnv -> Bool
- Agda.Termination.Monad: instance Control.Monad.Reader.Class.MonadReader Agda.TypeChecking.Monad.Base.TCEnv Agda.Termination.Monad.TerM
- Agda.Termination.Monad: instance Control.Monad.State.Class.MonadState Agda.TypeChecking.Monad.Base.TCState Agda.Termination.Monad.TerM
- Agda.Termination.Monad: terGetGuardingTypeConstructors :: TerM Bool
- Agda.Termination.Monad: terPiGuarded :: TerM a -> TerM a
- Agda.TypeChecking.Abstract: instance Agda.TypeChecking.Abstract.AbsTerm a => Agda.TypeChecking.Abstract.AbsTerm (GHC.Base.Maybe a)
- Agda.TypeChecking.Conversion: unifyPointers :: Comparison -> Term -> Term -> TCM () -> TCM ()
- Agda.TypeChecking.Coverage: instance Agda.TypeChecking.Pretty.PrettyTCM Agda.TypeChecking.Coverage.CosplitError
- Agda.TypeChecking.Coverage.Match: blockedOnConstructor :: Nat -> ConHead -> Match a
- Agda.TypeChecking.Coverage.Match: blockedOnLiteral :: Nat -> Literal -> Match a
- Agda.TypeChecking.Coverage.Match: blockedOnProjection :: Match a
- Agda.TypeChecking.Coverage.Match: choice :: Match a -> Match a -> Match a
- Agda.TypeChecking.Coverage.Match: fromSplitPSubst :: SplitPSubstitution -> PatternSubstitution
- Agda.TypeChecking.Coverage.Match: fromSplitVar :: SplitPatVar -> DBPatVar
- Agda.TypeChecking.Coverage.Match: instance (GHC.Base.Semigroup a, GHC.Base.Monoid a) => GHC.Base.Monoid (Agda.TypeChecking.Coverage.Match.Match a)
- Agda.TypeChecking.Coverage.Match: instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Agda.TypeChecking.Coverage.Match.Match a)
- Agda.TypeChecking.Coverage.Match: mapBlockingVarCons :: ([ConHead] -> [ConHead]) -> BlockingVar -> BlockingVar
- Agda.TypeChecking.Coverage.Match: mapBlockingVarLits :: ([Literal] -> [Literal]) -> BlockingVar -> BlockingVar
- Agda.TypeChecking.Coverage.Match: matchClause :: [NamedArg SplitPattern] -> Clause -> MatchResult
- Agda.TypeChecking.Coverage.Match: matchPat :: Pattern' a -> SplitPattern -> MatchResult
- Agda.TypeChecking.Coverage.Match: matchPats :: [NamedArg (Pattern' a)] -> [NamedArg SplitPattern] -> MatchResult
- Agda.TypeChecking.Coverage.Match: overlapping :: BlockingVars -> BlockingVars
- Agda.TypeChecking.Coverage.Match: toSplitVar :: DBPatVar -> SplitPatVar
- Agda.TypeChecking.Coverage.Match: type MatchResult = Match [SplitPattern]
- Agda.TypeChecking.Coverage.Match: type SplitPSubstitution = Substitution' SplitPattern
- Agda.TypeChecking.Coverage.Match: zipBlockingVars :: BlockingVars -> BlockingVars -> BlockingVars
- Agda.TypeChecking.Coverage.SplitTree: instance Agda.TypeChecking.Pretty.PrettyTCM Agda.TypeChecking.Coverage.SplitTree.SplitTag
- Agda.TypeChecking.DisplayForm: instance Agda.TypeChecking.DisplayForm.SubstWithOrigin (Agda.Syntax.Common.Arg a) => Agda.TypeChecking.DisplayForm.SubstWithOrigin (Agda.Syntax.Internal.Elim' a)
- Agda.TypeChecking.DropArgs: instance Agda.TypeChecking.DropArgs.DropArgs a => Agda.TypeChecking.DropArgs.DropArgs (GHC.Base.Maybe a)
- Agda.TypeChecking.Free.Lazy: instance Agda.TypeChecking.Free.Lazy.Free a => Agda.TypeChecking.Free.Lazy.Free (GHC.Base.Maybe a)
- Agda.TypeChecking.Free.Old: instance Agda.TypeChecking.Free.Old.Free a => Agda.TypeChecking.Free.Old.Free (GHC.Base.Maybe a)
- Agda.TypeChecking.Free.Precompute: instance Agda.TypeChecking.Free.Precompute.PrecomputeFreeVars a => Agda.TypeChecking.Free.Precompute.PrecomputeFreeVars (GHC.Base.Maybe a)
- Agda.TypeChecking.Implicit: NoInsertNeeded :: ImplicitInsertion
- Agda.TypeChecking.Implicit: impInsert :: [Hiding] -> ImplicitInsertion
- Agda.TypeChecking.InstanceArguments: HellNo :: TCErr -> YesNoMaybe
- Agda.TypeChecking.InstanceArguments: Maybe :: YesNoMaybe
- Agda.TypeChecking.InstanceArguments: No :: YesNoMaybe
- Agda.TypeChecking.InstanceArguments: Yes :: YesNoMaybe
- Agda.TypeChecking.InstanceArguments: applyDroppingParameters :: Term -> Args -> TCM Term
- Agda.TypeChecking.InstanceArguments: areThereNonRigidMetaArguments :: Term -> TCM (Maybe MetaId)
- Agda.TypeChecking.InstanceArguments: checkCandidates :: MetaId -> Type -> [Candidate] -> TCM (Maybe [Candidate])
- Agda.TypeChecking.InstanceArguments: data YesNoMaybe
- Agda.TypeChecking.InstanceArguments: dropSameCandidates :: MetaId -> [(Candidate, Term, Type, a)] -> TCM [(Candidate, Term, Type, a)]
- Agda.TypeChecking.InstanceArguments: filterResetingState :: MetaId -> [Candidate] -> (Candidate -> TCM YesNoMaybe) -> TCM [Candidate]
- Agda.TypeChecking.InstanceArguments: findInScope :: MetaId -> Maybe [Candidate] -> TCM ()
- Agda.TypeChecking.InstanceArguments: findInScope' :: MetaId -> [Candidate] -> TCM (Maybe ([Candidate], Maybe MetaId))
- Agda.TypeChecking.InstanceArguments: initialIFSCandidates :: Type -> TCM (Maybe [Candidate])
- Agda.TypeChecking.InstanceArguments: insidePi :: Type -> (Type -> TCM a) -> TCM a
- Agda.TypeChecking.InstanceArguments: isIFSConstraint :: Constraint -> Bool
- Agda.TypeChecking.InstanceArguments: isNo :: YesNoMaybe -> Bool
- Agda.TypeChecking.InstanceArguments: isRigid :: MetaId -> TCM Bool
- Agda.TypeChecking.InstanceArguments: rigidlyConstrainedMetas :: TCM [MetaId]
- Agda.TypeChecking.Irrelevance: applyRelevance :: Relevance -> Dom a -> Dom a
- Agda.TypeChecking.Irrelevance: inverseApplyRelevance :: Relevance -> Dom a -> Dom a
- Agda.TypeChecking.MetaVars: newIFSMeta :: MetaNameSuggestion -> Type -> TCM (MetaId, Term)
- Agda.TypeChecking.MetaVars: newIFSMetaCtx :: MetaNameSuggestion -> Type -> Args -> TCM (MetaId, Term)
- Agda.TypeChecking.MetaVars: newSortMeta' :: (Type -> Judgement ()) -> TCM Sort
- Agda.TypeChecking.MetaVars: newSortMetaCtx' :: (Type -> Judgement ()) -> Args -> TCM Sort
- Agda.TypeChecking.MetaVars.Mention: instance Agda.TypeChecking.MetaVars.Mention.MentionsMeta t => Agda.TypeChecking.MetaVars.Mention.MentionsMeta (GHC.Base.Maybe t)
- Agda.TypeChecking.MetaVars.Occurs: instance Agda.TypeChecking.MetaVars.Occurs.Occurs a => Agda.TypeChecking.MetaVars.Occurs.Occurs (GHC.Base.Maybe a)
- Agda.TypeChecking.Monad.Base: DifferentArities :: TypeError
- Agda.TypeChecking.Monad.Base: ExplicitStayExplicit :: ExplicitToInstance
- Agda.TypeChecking.Monad.Base: ExplicitToInstance :: ExplicitToInstance
- Agda.TypeChecking.Monad.Base: FindInScope :: MetaId -> (Maybe MetaId) -> (Maybe [Candidate]) -> Constraint
- Agda.TypeChecking.Monad.Base: IFSNoCandidateInScope :: Type -> TypeError
- Agda.TypeChecking.Monad.Base: OpenIFS :: MetaInstantiation
- Agda.TypeChecking.Monad.Base: SafeFlagPrimTrustMe :: Warning
- Agda.TypeChecking.Monad.Base: SetOmegaNotValidType :: TypeError
- Agda.TypeChecking.Monad.Base: TerminationCheckFailed :: [TerminationError] -> TypeError
- Agda.TypeChecking.Monad.Base: UninstantiatedModule :: QName -> TypeError
- Agda.TypeChecking.Monad.Base: [candidateEti] :: Candidate -> ExplicitToInstance
- Agda.TypeChecking.Monad.Base: [envAllowDestructiveUpdate] :: TCEnv -> Bool
- Agda.TypeChecking.Monad.Base: [envRelevance] :: TCEnv -> Relevance
- Agda.TypeChecking.Monad.Base: data ExplicitToInstance
- Agda.TypeChecking.Monad.Base: disableDestructiveUpdate :: TCM a -> TCM a
- Agda.TypeChecking.Monad.Base: eAllowDestructiveUpdate :: Lens' Bool TCEnv
- Agda.TypeChecking.Monad.Base: instance Control.Monad.IO.Class.MonadIO m => Control.Monad.Reader.Class.MonadReader Agda.TypeChecking.Monad.Base.TCEnv (Agda.TypeChecking.Monad.Base.TCMT m)
- Agda.TypeChecking.Monad.Base: instance Control.Monad.IO.Class.MonadIO m => Control.Monad.State.Class.MonadState Agda.TypeChecking.Monad.Base.TCState (Agda.TypeChecking.Monad.Base.TCMT m)
- Agda.TypeChecking.Monad.Base: instance Control.Monad.Reader.Class.MonadReader Agda.TypeChecking.Monad.Base.TCEnv Agda.TypeChecking.Monad.Base.ReduceM
- Agda.TypeChecking.Monad.Base: instance Data.Data.Data Agda.TypeChecking.Monad.Base.ExplicitToInstance
- Agda.TypeChecking.Monad.Base: instance GHC.Classes.Eq Agda.TypeChecking.Monad.Base.ExplicitToInstance
- Agda.TypeChecking.Monad.Base: instance GHC.Classes.Eq Agda.TypeChecking.Monad.Base.ExtLamInfo
- Agda.TypeChecking.Monad.Base: instance GHC.Classes.Ord Agda.TypeChecking.Monad.Base.ExtLamInfo
- Agda.TypeChecking.Monad.Base: instance GHC.Exception.Exception Agda.TypeChecking.Monad.Base.TCErr
- Agda.TypeChecking.Monad.Base: instance GHC.Show.Show Agda.TypeChecking.Monad.Base.ExplicitToInstance
- Agda.TypeChecking.Monad.Base: uhcBackendName :: BackendName
- Agda.TypeChecking.Monad.Builtin: builtinAbs :: String
- Agda.TypeChecking.Monad.Builtin: builtinAbsAbs :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaClause :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaClauseAbsurd :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaClauseClause :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaDefinition :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaDefinitionDataConstructor :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaDefinitionDataDef :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaDefinitionFunDef :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaDefinitionPostulate :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaDefinitionPrimitive :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaDefinitionRecordDef :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaErrorPart :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaErrorPartName :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaErrorPartString :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaErrorPartTerm :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaLitChar :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaLitFloat :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaLitMeta :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaLitNat :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaLitQName :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaLitString :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaLitWord64 :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaLiteral :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaMeta :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaPatAbsurd :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaPatCon :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaPatDot :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaPatLit :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaPatProj :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaPatVar :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaPattern :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaSort :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaSortLit :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaSortSet :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaSortUnsupported :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCM :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMBind :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMBlockOnMeta :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMCatchError :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMCheckType :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMCommit :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMDebugPrint :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMDeclareDef :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMDeclarePostulate :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMDefineFun :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMExtendContext :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMFreshName :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMGetContext :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMGetDefinition :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMGetType :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMInContext :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMInferType :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMIsMacro :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMNormalise :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMQuoteTerm :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMReduce :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMReturn :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMTypeError :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMUnify :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMUnquoteTerm :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTCMWithNormalisation :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTerm :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTermCon :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTermDef :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTermExtLam :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTermLam :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTermLit :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTermMeta :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTermPi :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTermSort :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTermUnsupported :: String
- Agda.TypeChecking.Monad.Builtin: builtinAgdaTermVar :: String
- Agda.TypeChecking.Monad.Builtin: builtinArg :: String
- Agda.TypeChecking.Monad.Builtin: builtinArgArg :: String
- Agda.TypeChecking.Monad.Builtin: builtinArgArgInfo :: String
- Agda.TypeChecking.Monad.Builtin: builtinArgInfo :: String
- Agda.TypeChecking.Monad.Builtin: builtinAssoc :: String
- Agda.TypeChecking.Monad.Builtin: builtinAssocLeft :: String
- Agda.TypeChecking.Monad.Builtin: builtinAssocNon :: String
- Agda.TypeChecking.Monad.Builtin: builtinAssocRight :: String
- Agda.TypeChecking.Monad.Builtin: builtinBool :: String
- Agda.TypeChecking.Monad.Builtin: builtinChar :: String
- Agda.TypeChecking.Monad.Builtin: builtinCons :: String
- Agda.TypeChecking.Monad.Builtin: builtinEquality :: String
- Agda.TypeChecking.Monad.Builtin: builtinFalse :: String
- Agda.TypeChecking.Monad.Builtin: builtinFixity :: String
- Agda.TypeChecking.Monad.Builtin: builtinFixityFixity :: String
- Agda.TypeChecking.Monad.Builtin: builtinFlat :: String
- Agda.TypeChecking.Monad.Builtin: builtinFloat :: String
- Agda.TypeChecking.Monad.Builtin: builtinFromNat :: String
- Agda.TypeChecking.Monad.Builtin: builtinFromNeg :: String
- Agda.TypeChecking.Monad.Builtin: builtinFromString :: String
- Agda.TypeChecking.Monad.Builtin: builtinHidden :: String
- Agda.TypeChecking.Monad.Builtin: builtinHiding :: String
- Agda.TypeChecking.Monad.Builtin: builtinIO :: String
- Agda.TypeChecking.Monad.Builtin: builtinInf :: String
- Agda.TypeChecking.Monad.Builtin: builtinInstance :: String
- Agda.TypeChecking.Monad.Builtin: builtinInteger :: String
- Agda.TypeChecking.Monad.Builtin: builtinIntegerNegSuc :: String
- Agda.TypeChecking.Monad.Builtin: builtinIntegerPos :: String
- Agda.TypeChecking.Monad.Builtin: builtinIrrelevant :: String
- Agda.TypeChecking.Monad.Builtin: builtinLevel :: String
- Agda.TypeChecking.Monad.Builtin: builtinLevelMax :: String
- Agda.TypeChecking.Monad.Builtin: builtinLevelSuc :: String
- Agda.TypeChecking.Monad.Builtin: builtinLevelZero :: String
- Agda.TypeChecking.Monad.Builtin: builtinList :: String
- Agda.TypeChecking.Monad.Builtin: builtinNat :: String
- Agda.TypeChecking.Monad.Builtin: builtinNatDivSucAux :: String
- Agda.TypeChecking.Monad.Builtin: builtinNatEquals :: String
- Agda.TypeChecking.Monad.Builtin: builtinNatLess :: String
- Agda.TypeChecking.Monad.Builtin: builtinNatMinus :: String
- Agda.TypeChecking.Monad.Builtin: builtinNatModSucAux :: String
- Agda.TypeChecking.Monad.Builtin: builtinNatPlus :: String
- Agda.TypeChecking.Monad.Builtin: builtinNatTimes :: String
- Agda.TypeChecking.Monad.Builtin: builtinNil :: String
- Agda.TypeChecking.Monad.Builtin: builtinPrecRelated :: String
- Agda.TypeChecking.Monad.Builtin: builtinPrecUnrelated :: String
- Agda.TypeChecking.Monad.Builtin: builtinPrecedence :: String
- Agda.TypeChecking.Monad.Builtin: builtinQName :: String
- Agda.TypeChecking.Monad.Builtin: builtinRefl :: String
- Agda.TypeChecking.Monad.Builtin: builtinRelevance :: String
- Agda.TypeChecking.Monad.Builtin: builtinRelevant :: String
- Agda.TypeChecking.Monad.Builtin: builtinRewrite :: String
- Agda.TypeChecking.Monad.Builtin: builtinSharp :: String
- Agda.TypeChecking.Monad.Builtin: builtinSize :: String
- Agda.TypeChecking.Monad.Builtin: builtinSizeInf :: String
- Agda.TypeChecking.Monad.Builtin: builtinSizeLt :: String
- Agda.TypeChecking.Monad.Builtin: builtinSizeMax :: String
- Agda.TypeChecking.Monad.Builtin: builtinSizeSuc :: String
- Agda.TypeChecking.Monad.Builtin: builtinSizeUniv :: String
- Agda.TypeChecking.Monad.Builtin: builtinString :: String
- Agda.TypeChecking.Monad.Builtin: builtinSuc :: String
- Agda.TypeChecking.Monad.Builtin: builtinTrue :: String
- Agda.TypeChecking.Monad.Builtin: builtinUnit :: String
- Agda.TypeChecking.Monad.Builtin: builtinUnitUnit :: String
- Agda.TypeChecking.Monad.Builtin: builtinVisible :: String
- Agda.TypeChecking.Monad.Builtin: builtinWord64 :: String
- Agda.TypeChecking.Monad.Builtin: builtinZero :: String
- Agda.TypeChecking.Monad.Builtin: builtinsNoDef :: [String]
- Agda.TypeChecking.Monad.Caching: noCacheForImportedModule :: TCM a -> TCM a
- Agda.TypeChecking.Monad.Context: dummyDom :: Dom Type
- Agda.TypeChecking.Monad.Context: unshadowName :: MonadTCM tcm => Name -> tcm Name
- Agda.TypeChecking.Monad.Context: unshadowedName :: [Name] -> Name -> Name
- Agda.TypeChecking.Monad.MetaVars: instance Agda.TypeChecking.Monad.MetaVars.IsInstantiatedMeta a => Agda.TypeChecking.Monad.MetaVars.IsInstantiatedMeta (GHC.Base.Maybe a)
- Agda.TypeChecking.Monad.Options: CurrentDir :: RelativeTo
- Agda.TypeChecking.Monad.Options: ProjectRoot :: AbsolutePath -> RelativeTo
- Agda.TypeChecking.Monad.Options: data RelativeTo
- Agda.TypeChecking.Monad.Options: getProjectRoot :: RelativeTo -> TCM AbsolutePath
- Agda.TypeChecking.Monad.Options: proofIrrelevance :: TCM Bool
- Agda.TypeChecking.Monad.Signature: addCoreCode :: QName -> CoreCode -> TCM ()
- Agda.TypeChecking.Monad.Signature: addCoreType :: QName -> CoreCode -> [CoreCode] -> TCM ()
- Agda.TypeChecking.Monad.Signature: addDeprecatedPragma :: String -> BackendName -> QName -> String -> TCM ()
- Agda.TypeChecking.Monad.Signature: addHaskellCode :: QName -> HaskellCode -> TCM ()
- Agda.TypeChecking.Monad.Signature: addHaskellData :: QName -> HaskellType -> [HaskellCode] -> TCM ()
- Agda.TypeChecking.Monad.Signature: addHaskellExport :: QName -> String -> TCM ()
- Agda.TypeChecking.Monad.Signature: addHaskellType :: QName -> HaskellType -> TCM ()
- Agda.TypeChecking.Monad.Signature: addJSCode :: QName -> JSCode -> TCM ()
- Agda.TypeChecking.Monad.Signature: dataFormat :: String -> [String] -> String
- Agda.TypeChecking.Monad.Signature: type CoreCode = String
- Agda.TypeChecking.Monad.Signature: type HaskellCode = String
- Agda.TypeChecking.Monad.Signature: type HaskellType = String
- Agda.TypeChecking.Monad.Signature: type JSCode = String
- Agda.TypeChecking.Monad.State: addDeprecatedForeignCode :: String -> BackendName -> String -> TCM ()
- Agda.TypeChecking.Monad.State: addHaskellImport :: String -> TCM ()
- Agda.TypeChecking.Monad.State: addHaskellImportUHC :: String -> TCM ()
- Agda.TypeChecking.Monad.State: addInlineHaskell :: String -> TCM ()
- Agda.TypeChecking.Patterns.Abstract: instance Agda.TypeChecking.Patterns.Abstract.ExpandPatternSynonyms a => Agda.TypeChecking.Patterns.Abstract.ExpandPatternSynonyms (GHC.Base.Maybe a)
- Agda.TypeChecking.Positivity: (:++) :: OccursWheres -> OccursWheres -> OccursWheres
- Agda.TypeChecking.Positivity: (>*<) :: OccursWhere -> OccursWhere -> OccursWhere
- Agda.TypeChecking.Positivity: Occurs :: OccursWhere -> OccursWheres
- Agda.TypeChecking.Positivity: data OccursWheres
- Agda.TypeChecking.Positivity: instance Agda.TypeChecking.Positivity.ComputeOccurrences a => Agda.TypeChecking.Positivity.ComputeOccurrences (GHC.Base.Maybe a)
- Agda.TypeChecking.Positivity: instance Agda.TypeChecking.Pretty.PrettyTCM Agda.TypeChecking.Positivity.Occurrence.OccursWhere
- Agda.TypeChecking.Positivity: instance Agda.TypeChecking.Pretty.PrettyTCM n => Agda.TypeChecking.Pretty.PrettyTCM (Agda.TypeChecking.Pretty.WithNode n Agda.TypeChecking.Positivity.Edge)
- Agda.TypeChecking.Positivity: instance Agda.Utils.Null.Null Agda.TypeChecking.Positivity.Edge
- Agda.TypeChecking.Positivity: instance Agda.Utils.SemiRing.SemiRing Agda.TypeChecking.Positivity.Edge
- Agda.TypeChecking.Positivity: instance Agda.Utils.SemiRing.StarSemiRing Agda.TypeChecking.Positivity.Edge
- Agda.TypeChecking.Positivity: instance Agda.Utils.Size.Sized Agda.TypeChecking.Positivity.Occurrence.OccursWhere
- Agda.TypeChecking.Positivity: instance GHC.Classes.Eq Agda.TypeChecking.Positivity.Edge
- Agda.TypeChecking.Positivity: instance GHC.Classes.Ord Agda.TypeChecking.Positivity.Edge
- Agda.TypeChecking.Positivity: instance GHC.Show.Show Agda.TypeChecking.Positivity.Edge
- Agda.TypeChecking.Positivity.Occurrence: Known :: Range -> (Seq Where) -> OccursWhere
- Agda.TypeChecking.Positivity.Occurrence: Unknown :: OccursWhere
- Agda.TypeChecking.Primitive: primTrustMe :: TCM PrimitiveImpl
- Agda.TypeChecking.RecordPatterns: instance Control.Monad.Reader.Class.MonadReader Agda.TypeChecking.Monad.Base.TCEnv Agda.TypeChecking.RecordPatterns.RecPatM
- Agda.TypeChecking.RecordPatterns: instance Control.Monad.State.Class.MonadState Agda.TypeChecking.Monad.Base.TCState Agda.TypeChecking.RecordPatterns.RecPatM
- Agda.TypeChecking.Reduce: instance Agda.TypeChecking.Reduce.InstantiateFull a => Agda.TypeChecking.Reduce.InstantiateFull (GHC.Base.Maybe a)
- Agda.TypeChecking.Reduce: instance Agda.TypeChecking.Reduce.Normalise a => Agda.TypeChecking.Reduce.Normalise (GHC.Base.Maybe a)
- Agda.TypeChecking.Reduce: instance Agda.TypeChecking.Reduce.Simplify a => Agda.TypeChecking.Reduce.Simplify (GHC.Base.Maybe a)
- Agda.TypeChecking.Reduce: reduceHead' :: Term -> ReduceM (Blocked Term)
- Agda.TypeChecking.Reduce: unfoldInlined' :: Term -> ReduceM Term
- Agda.TypeChecking.Reduce.Fast: instance Agda.Utils.Pretty.Pretty Agda.Syntax.Common.NameId
- Agda.TypeChecking.Reduce.Fast: instance GHC.Classes.Eq (Agda.TypeChecking.Reduce.Fast.ElimZipper a)
- Agda.TypeChecking.Reduce.Fast: instance GHC.Classes.Ord (Agda.TypeChecking.Reduce.Fast.ElimZipper a)
- Agda.TypeChecking.Reduce.Fast: instance GHC.Show.Show (Agda.TypeChecking.Reduce.Fast.ElimZipper a)
- Agda.TypeChecking.Reduce.Monad: instance Agda.TypeChecking.Monad.Base.HasOptions Agda.TypeChecking.Monad.Base.ReduceM
- Agda.TypeChecking.Rewriting.NonLinMatch: instance (Agda.TypeChecking.Rewriting.NonLinMatch.Match a b, Agda.TypeChecking.Substitute.Class.Subst t1 a, Agda.TypeChecking.Substitute.Class.Subst t2 b) => Agda.TypeChecking.Rewriting.NonLinMatch.Match (Agda.Syntax.Internal.Abs a) (Agda.Syntax.Internal.Abs b)
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.Match Agda.TypeChecking.Monad.Base.NLPType Agda.Syntax.Internal.Type
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.Match Agda.TypeChecking.Monad.Base.NLPat Agda.Syntax.Internal.Level
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.Match Agda.TypeChecking.Monad.Base.NLPat Agda.Syntax.Internal.Sort
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.Match Agda.TypeChecking.Monad.Base.NLPat Agda.Syntax.Internal.Term
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.Match a b => Agda.TypeChecking.Rewriting.NonLinMatch.Match (Agda.Syntax.Common.Arg a) (Agda.Syntax.Common.Arg b)
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.Match a b => Agda.TypeChecking.Rewriting.NonLinMatch.Match (Agda.Syntax.Common.Dom a) (Agda.Syntax.Common.Dom b)
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.Match a b => Agda.TypeChecking.Rewriting.NonLinMatch.Match (Agda.Syntax.Internal.Elim' a) (Agda.Syntax.Internal.Elim' b)
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.Match a b => Agda.TypeChecking.Rewriting.NonLinMatch.Match [a] [b]
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom Agda.Syntax.Internal.Sort Agda.TypeChecking.Monad.Base.NLPat
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom Agda.Syntax.Internal.Term Agda.TypeChecking.Monad.Base.NLPat
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom Agda.Syntax.Internal.Type Agda.TypeChecking.Monad.Base.NLPType
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom a Agda.TypeChecking.Monad.Base.NLPat => Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom (Agda.Syntax.Internal.Elim' a) (Agda.Syntax.Internal.Elim' Agda.TypeChecking.Monad.Base.NLPat)
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom a b => Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom (Agda.Syntax.Common.Arg a) (Agda.Syntax.Common.Arg b)
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom a b => Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom (Agda.Syntax.Common.Dom a) (Agda.Syntax.Common.Dom b)
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom a b => Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom (Agda.Syntax.Internal.Abs a) (Agda.Syntax.Internal.Abs b)
- Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom a b => Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom [a] [b]
- Agda.TypeChecking.Rewriting.NonLinMatch: liftRed :: ReduceM a -> NLM a
- Agda.TypeChecking.Rewriting.NonLinMatch: normaliseB' :: (Reduce t, Normalise t) => t -> ReduceM (Blocked t)
- Agda.TypeChecking.Rules.Data: bindParameters' :: [Type] -> [LamBinding] -> Type -> (Telescope -> Type -> TCM a) -> TCM a
- Agda.TypeChecking.Rules.LHS.Problem: instance Agda.TypeChecking.Rules.LHS.Problem.ChooseFlex a => Agda.TypeChecking.Rules.LHS.Problem.ChooseFlex (GHC.Base.Maybe a)
- Agda.TypeChecking.Rules.Term: checkTypedBinding :: LamOrPi -> ArgInfo -> TypedBinding -> (ListTel -> TCM a) -> TCM a
- Agda.TypeChecking.Serialise.Base: [bstringC] :: Dict -> !(IORef FreshAndReuse)
- Agda.TypeChecking.Serialise.Base: [bstringD] :: Dict -> !(HashTable ByteString Int32)
- Agda.TypeChecking.Serialise.Base: [bstringE] :: St -> !(Array Int32 ByteString)
- Agda.TypeChecking.Serialise.Base: instance (Agda.Utils.TypeLevel.IsBase t ~ 'GHC.Types.True) => Agda.TypeChecking.Serialise.Base.ICODE t 'GHC.Types.True
- Agda.TypeChecking.Serialise.Instances.Common: instance Agda.TypeChecking.Serialise.Base.EmbPrj Data.ByteString.Lazy.Internal.ByteString
- Agda.TypeChecking.Serialise.Instances.Common: instance Agda.TypeChecking.Serialise.Base.EmbPrj a => Agda.TypeChecking.Serialise.Base.EmbPrj (GHC.Base.Maybe a)
- Agda.TypeChecking.Substitute: bindsWithHidingToTel :: [WithHiding Name] -> Dom Type -> ListTel
- Agda.TypeChecking.Substitute: bindsWithHidingToTel' :: (Name -> a) -> [WithHiding Name] -> Dom Type -> ListTel' a
- Agda.TypeChecking.Substitute: instance Agda.TypeChecking.Substitute.Class.Abstract t => Agda.TypeChecking.Substitute.Class.Abstract (GHC.Base.Maybe t)
- Agda.TypeChecking.Substitute: instance Agda.TypeChecking.Substitute.Class.Apply t => Agda.TypeChecking.Substitute.Class.Apply (GHC.Base.Maybe t)
- Agda.TypeChecking.Substitute: instance Agda.TypeChecking.Substitute.Class.Subst t a => Agda.TypeChecking.Substitute.Class.Subst t (GHC.Base.Maybe a)
- Agda.TypeChecking.Telescope: piApply1 :: MonadTCM tcm => Type -> Term -> tcm Type
- Agda.TypeChecking.Unquote: getCurrentPath :: TCM AbsolutePath
- Agda.TypeChecking.Unquote: liftU :: TCM a -> UnquoteM a
- Agda.Utils.Hash: hashFile :: AbsolutePath -> IO Hash
- Agda.Utils.Impossible: instance GHC.Exception.Exception Agda.Utils.Impossible.Impossible
- Agda.Utils.List: IsBothfix :: PreOrSuffix a
- Agda.Utils.List: IsNofix :: PreOrSuffix a
- Agda.Utils.List: IsPrefix :: a -> [a] -> PreOrSuffix a
- Agda.Utils.List: IsSuffix :: a -> [a] -> PreOrSuffix a
- Agda.Utils.List: data PreOrSuffix a
- Agda.Utils.List: preOrSuffix :: Eq a => [a] -> [a] -> PreOrSuffix a
- Agda.Utils.Null: instance Agda.Utils.Null.Null (Data.HashSet.HashSet a)
- Agda.Utils.Null: instance Agda.Utils.Null.Null (GHC.Base.Maybe a)
- Agda.Utils.PartialOrd: instance Agda.Utils.PartialOrd.PartialOrd a => Agda.Utils.PartialOrd.PartialOrd (GHC.Base.Maybe a)
- Agda.Utils.Permutation: instance Agda.Utils.Permutation.InversePermute (GHC.Types.Int -> a) [GHC.Base.Maybe a]
- Agda.Utils.Permutation: instance Agda.Utils.Permutation.InversePermute [GHC.Base.Maybe a] (Data.IntMap.Internal.IntMap a)
- Agda.Utils.Permutation: instance Agda.Utils.Permutation.InversePermute [GHC.Base.Maybe a] [(GHC.Types.Int, a)]
- Agda.Utils.Permutation: instance Agda.Utils.Permutation.InversePermute [GHC.Base.Maybe a] [GHC.Base.Maybe a]
- Agda.Utils.Pretty: instance Agda.Utils.Pretty.Pretty a => Agda.Utils.Pretty.Pretty (GHC.Base.Maybe a)
- Agda.Utils.SemiRing: instance Agda.Utils.SemiRing.SemiRing a => Agda.Utils.SemiRing.SemiRing (GHC.Base.Maybe a)
- Agda.Utils.SemiRing: instance Agda.Utils.SemiRing.StarSemiRing a => Agda.Utils.SemiRing.StarSemiRing (GHC.Base.Maybe a)
- Agda.Utils.Singleton: instance Agda.Utils.Singleton.Singleton a (GHC.Base.Maybe a)
- Agda.Utils.Singleton: instance Data.Hashable.Class.Hashable a => Agda.Utils.Singleton.Singleton a (Data.HashSet.HashSet a)
- Agda.Utils.Size: instance Agda.Utils.Size.Sized (Data.HashSet.HashSet a)
- Agda.Utils.Suffix: nameVariant :: (String -> Bool) -> String -> String
- Agda.Utils.Update: instance Agda.Utils.Update.Updater1 GHC.Base.Maybe
- Agda.Utils.Zipper: instance (Agda.Utils.Zipper.Zipper f, Agda.Utils.Zipper.Zipper g, Agda.Utils.Zipper.Element f ~ Agda.Utils.Zipper.Carrier g) => Agda.Utils.Zipper.Zipper (Agda.Utils.Zipper.ComposeZipper f g)
+ Agda.Auto.Convert: hitsNotImplemented :: TCM a
+ Agda.Auto.Convert: instance Agda.Auto.Convert.Conversion Agda.Auto.Convert.TOM Agda.Syntax.Internal.Clause (GHC.Maybe.Maybe ([Agda.Auto.Syntax.Pat Agda.Auto.Convert.O], Agda.Auto.Syntax.MExp Agda.Auto.Convert.O))
+ Agda.Auto.Options: parseTime :: String -> Int
+ Agda.Benchmarking: Generalize :: Phase
+ Agda.Benchmarking: InstanceSearch :: Phase
+ Agda.Compiler.MAlonzo.Pragmas: type HaskellCode = String
+ Agda.Compiler.MAlonzo.Pragmas: type HaskellType = String
+ Agda.Interaction.AgdaTop: repl :: InteractionOutputCallback -> String -> TCM () -> TCM ()
+ Agda.Interaction.BasicOps: FindInstanceOF :: b -> a -> [(a, a)] -> OutputConstraint a b
+ Agda.Interaction.BasicOps: PostponedCheckFunDef :: QName -> a -> OutputConstraint a b
+ Agda.Interaction.BasicOps: instance (Agda.Utils.Pretty.Pretty a, Agda.Utils.Pretty.Pretty b) => Agda.Utils.Pretty.Pretty (Agda.Interaction.BasicOps.OutputConstraint a b)
+ Agda.Interaction.BasicOps: instance (Agda.Utils.Pretty.Pretty a, Agda.Utils.Pretty.Pretty b) => Agda.Utils.Pretty.Pretty (Agda.Interaction.BasicOps.OutputForm a b)
+ Agda.Interaction.Highlighting.Common: chooseHighlightingMethod :: HighlightingInfo -> HighlightingMethod -> HighlightingMethod
+ Agda.Interaction.Highlighting.Common: toAtoms :: Aspects -> [String]
+ Agda.Interaction.Highlighting.Generate: disambiguateRecordFields :: [Name] -> [QName] -> TCM ()
+ Agda.Interaction.Highlighting.Generate: generateTokenInfoFromSource :: AbsolutePath -> String -> TCM CompressedFile
+ Agda.Interaction.Highlighting.JSON: instance Data.Aeson.Types.ToJSON.ToJSON Agda.Interaction.Highlighting.Precise.TokenBased
+ Agda.Interaction.Highlighting.JSON: jsonifyHighlightingInfo :: HighlightingInfo -> RemoveTokenBasedHighlighting -> HighlightingMethod -> ModuleToSource -> IO Value
+ Agda.Interaction.Highlighting.Precise: Background :: Aspect
+ Agda.Interaction.Highlighting.Precise: Deadcode :: OtherAspect
+ Agda.Interaction.Highlighting.Precise: Generalizable :: NameKind
+ Agda.Interaction.Highlighting.Precise: Markup :: Aspect
+ Agda.Interaction.Highlighting.Precise: Pragma :: Aspect
+ Agda.Interaction.Highlighting.Precise: instance GHC.Classes.Ord Agda.Interaction.Highlighting.Precise.OtherAspect
+ Agda.Interaction.Imports: SourceInfo :: Text -> FileType -> Module -> TopLevelModuleName -> SourceInfo
+ Agda.Interaction.Imports: [siFileType] :: SourceInfo -> FileType
+ Agda.Interaction.Imports: [siModuleName] :: SourceInfo -> TopLevelModuleName
+ Agda.Interaction.Imports: [siModule] :: SourceInfo -> Module
+ Agda.Interaction.Imports: [siSource] :: SourceInfo -> Text
+ Agda.Interaction.Imports: checkOptionsCompatible :: PragmaOptions -> PragmaOptions -> ModuleName -> TCM Bool
+ Agda.Interaction.Imports: concreteOptionsToOptionPragmas :: [Pragma] -> TCM [OptionsPragma]
+ Agda.Interaction.Imports: data SourceInfo
+ Agda.Interaction.Imports: getAllWarningsOfTCErr :: TCErr -> TCM [TCWarning]
+ Agda.Interaction.Imports: instance GHC.Show.Show a => GHC.Show.Show (Agda.Interaction.Imports.MaybeWarnings' a)
+ Agda.Interaction.Imports: sourceInfo :: AbsolutePath -> TCM SourceInfo
+ Agda.Interaction.InteractionTop: Cmd_autoAll :: Interaction' range
+ Agda.Interaction.InteractionTop: Cmd_autoOne :: InteractionId -> range -> String -> Interaction' range
+ Agda.Interaction.InteractionTop: Cmd_elaborate_give :: Rewrite -> InteractionId -> range -> String -> Interaction' range
+ Agda.Interaction.InteractionTop: CommandQueue :: !TChan (Integer, Command) -> !TVar (Maybe Integer) -> CommandQueue
+ Agda.Interaction.InteractionTop: ElaborateGive :: GiveRefine
+ Agda.Interaction.InteractionTop: [abort] :: CommandQueue -> !TVar (Maybe Integer)
+ Agda.Interaction.InteractionTop: [commands] :: CommandQueue -> !TChan (Integer, Command)
+ Agda.Interaction.InteractionTop: data Command' a
+ Agda.Interaction.InteractionTop: data CommandQueue
+ Agda.Interaction.InteractionTop: instance GHC.Show.Show a => GHC.Show.Show (Agda.Interaction.InteractionTop.Command' a)
+ Agda.Interaction.InteractionTop: revLiftTC :: MonadTCState m => (forall c. m c -> TCState -> k (c, TCState)) -> (forall b. k b -> m b) -> (forall x. (m a -> k x) -> k x) -> m a
+ Agda.Interaction.InteractionTop: type Command = Command' IOTCM
+ Agda.Interaction.JSONTop: instance Data.Aeson.Types.ToJSON.ToJSON Agda.Interaction.Response.DisplayInfo
+ Agda.Interaction.JSONTop: instance Data.Aeson.Types.ToJSON.ToJSON Agda.Interaction.Response.GiveResult
+ Agda.Interaction.JSONTop: instance Data.Aeson.Types.ToJSON.ToJSON Agda.Interaction.Response.MakeCaseVariant
+ Agda.Interaction.JSONTop: instance Data.Aeson.Types.ToJSON.ToJSON Agda.Interaction.Response.Status
+ Agda.Interaction.JSONTop: instance Data.Aeson.Types.ToJSON.ToJSON Agda.Syntax.Common.InteractionId
+ Agda.Interaction.JSONTop: jsonREPL :: TCM () -> TCM ()
+ Agda.Interaction.Library: LibPositionInfo :: Maybe FilePath -> LineNumber -> FilePath -> LibPositionInfo
+ Agda.Interaction.Library: LibWarning :: LibPositionInfo -> LibWarning' -> LibWarning
+ Agda.Interaction.Library: [filePos] :: LibPositionInfo -> FilePath
+ Agda.Interaction.Library: [libFilePos] :: LibPositionInfo -> Maybe FilePath
+ Agda.Interaction.Library: [lineNumPos] :: LibPositionInfo -> LineNumber
+ Agda.Interaction.Library: data LibPositionInfo
+ Agda.Interaction.Library: data LibWarning
+ Agda.Interaction.Library: instance Agda.Utils.Pretty.Pretty Agda.Interaction.Library.LibWarning
+ Agda.Interaction.Library: instance Agda.Utils.Pretty.Pretty Agda.Interaction.Library.Parse.LibWarning'
+ Agda.Interaction.Library: instance Data.Data.Data Agda.Interaction.Library.LibPositionInfo
+ Agda.Interaction.Library: instance Data.Data.Data Agda.Interaction.Library.LibWarning
+ Agda.Interaction.Library: instance GHC.Show.Show Agda.Interaction.Library.LibError'
+ Agda.Interaction.Library: instance GHC.Show.Show Agda.Interaction.Library.LibPositionInfo
+ Agda.Interaction.Library: instance GHC.Show.Show Agda.Interaction.Library.LibWarning
+ Agda.Interaction.Library: libraryWarningName :: LibWarning -> WarningName
+ Agda.Interaction.Library.Parse: UnknownField :: String -> LibWarning'
+ Agda.Interaction.Library.Parse: data LibWarning'
+ Agda.Interaction.Library.Parse: instance Data.Data.Data Agda.Interaction.Library.Parse.LibWarning'
+ Agda.Interaction.Library.Parse: instance GHC.Show.Show Agda.Interaction.Library.Parse.LibWarning'
+ Agda.Interaction.Library.Parse: runP :: P a -> (Either String a, [LibWarning'])
+ Agda.Interaction.MakeCase: getClauseZipperForIP :: QName -> Int -> TCM (CaseContext, ClauseZipper)
+ Agda.Interaction.MakeCase: type ClauseZipper = ([Clause], Clause, [Clause])
+ Agda.Interaction.Options: HighlightAll :: HtmlHighlight
+ Agda.Interaction.Options: HighlightAuto :: HtmlHighlight
+ Agda.Interaction.Options: HighlightCode :: HtmlHighlight
+ Agda.Interaction.Options: [optCubical] :: PragmaOptions -> Bool
+ Agda.Interaction.Options: [optDoubleCheck] :: PragmaOptions -> Bool
+ Agda.Interaction.Options: [optFastReduce] :: PragmaOptions -> Bool
+ Agda.Interaction.Options: [optGuardedness] :: PragmaOptions -> WithDefault 'True
+ Agda.Interaction.Options: [optHTMLHighlight] :: CommandLineOptions -> HtmlHighlight
+ Agda.Interaction.Options: [optIgnoreAllInterfaces] :: CommandLineOptions -> Bool
+ Agda.Interaction.Options: [optJSONInteraction] :: CommandLineOptions -> Bool
+ Agda.Interaction.Options: [optOmegaInOmega] :: PragmaOptions -> Bool
+ Agda.Interaction.Options: [optOverlappingInstances] :: PragmaOptions -> Bool
+ Agda.Interaction.Options: [optProp] :: PragmaOptions -> Bool
+ Agda.Interaction.Options: [optSyntacticEquality] :: PragmaOptions -> Bool
+ Agda.Interaction.Options: coinfectiveOptions :: [(PragmaOptions -> Bool, String)]
+ Agda.Interaction.Options: data HtmlHighlight
+ Agda.Interaction.Options: deadStandardOptions :: [OptDescr (Flag CommandLineOptions)]
+ Agda.Interaction.Options: infectiveOptions :: [(PragmaOptions -> Bool, String)]
+ Agda.Interaction.Options: instance GHC.Classes.Eq Agda.Interaction.Options.HtmlHighlight
+ Agda.Interaction.Options: instance GHC.Classes.Eq Agda.Interaction.Options.RestartCodomain
+ Agda.Interaction.Options: instance GHC.Show.Show Agda.Interaction.Options.HtmlHighlight
+ Agda.Interaction.Options: restartOptions :: [(PragmaOptions -> RestartCodomain, String)]
+ Agda.Interaction.Options: safeFlag :: Flag PragmaOptions
+ Agda.Interaction.Options: stripRTS :: [String] -> [String]
+ Agda.Interaction.Options.Lenses: builtinModules :: Set FilePath
+ Agda.Interaction.Options.Lenses: builtinModulesWithSafePostulates :: Set FilePath
+ Agda.Interaction.Options.Lenses: builtinModulesWithUnsafePostulates :: Set FilePath
+ Agda.Interaction.Options.Lenses: isBuiltinModule :: FilePath -> TCM Bool
+ Agda.Interaction.Options.Lenses: isBuiltinModuleWithSafePostulates :: FilePath -> TCM Bool
+ Agda.Interaction.Options.Lenses: lensPragmaOptions :: LensPragmaOptions a => Lens' PragmaOptions a
+ Agda.Interaction.Options.Lenses: primitiveModules :: Set FilePath
+ Agda.Interaction.Options.Warnings: AbsurdPatternRequiresNoRHS_ :: WarningName
+ Agda.Interaction.Options.Warnings: CantGeneralizeOverSorts_ :: WarningName
+ Agda.Interaction.Options.Warnings: CoInfectiveImport_ :: WarningName
+ Agda.Interaction.Options.Warnings: EmptyGeneralize_ :: WarningName
+ Agda.Interaction.Options.Warnings: EmptyPrimitive_ :: WarningName
+ Agda.Interaction.Options.Warnings: IllformedAsClause_ :: WarningName
+ Agda.Interaction.Options.Warnings: InfectiveImport_ :: WarningName
+ Agda.Interaction.Options.Warnings: InstanceArgWithExplicitArg_ :: WarningName
+ Agda.Interaction.Options.Warnings: InstanceNoOutputTypeName_ :: WarningName
+ Agda.Interaction.Options.Warnings: InstanceWithExplicitArg_ :: WarningName
+ Agda.Interaction.Options.Warnings: InvalidNoUniverseCheckPragma_ :: WarningName
+ Agda.Interaction.Options.Warnings: LibUnknownField_ :: WarningName
+ Agda.Interaction.Options.Warnings: MissingDefinitions_ :: WarningName
+ Agda.Interaction.Options.Warnings: ModuleDoesntExport_ :: WarningName
+ Agda.Interaction.Options.Warnings: NotAllowedInMutual_ :: WarningName
+ Agda.Interaction.Options.Warnings: PragmaCompiled_ :: WarningName
+ Agda.Interaction.Options.Warnings: PragmaNoTerminationCheck_ :: WarningName
+ Agda.Interaction.Options.Warnings: SafeFlagNoUniverseCheck_ :: WarningName
+ Agda.Interaction.Options.Warnings: SafeFlagWithoutKFlagPrimEraseEquality_ :: WarningName
+ Agda.Interaction.Options.Warnings: WithoutKFlagPrimEraseEquality_ :: WarningName
+ Agda.Interaction.Options.Warnings: WrongInstanceDeclaration_ :: WarningName
+ Agda.Syntax.Abstract: DataDefParams :: Set Name -> [LamBinding] -> DataDefParams
+ Agda.Syntax.Abstract: EqualP :: PatInfo -> [(e, e)] -> Pattern' e
+ Agda.Syntax.Abstract: Generalize :: Set QName -> DefInfo -> ArgInfo -> QName -> Expr -> Declaration
+ Agda.Syntax.Abstract: GeneralizeTel :: Map QName Name -> Telescope -> GeneralizeTelescope
+ Agda.Syntax.Abstract: Generalized :: Set QName -> Expr -> Expr
+ Agda.Syntax.Abstract: RecordModuleInstance :: ModuleName -> ModuleApplication
+ Agda.Syntax.Abstract: [dataDefGeneralizedParams] :: DataDefParams -> Set Name
+ Agda.Syntax.Abstract: [dataDefParams] :: DataDefParams -> [LamBinding]
+ Agda.Syntax.Abstract: [generalizeTelVars] :: GeneralizeTelescope -> Map QName Name
+ Agda.Syntax.Abstract: [generalizeTel] :: GeneralizeTelescope -> Telescope
+ Agda.Syntax.Abstract: [nameIsRecordName] :: Name -> Bool
+ Agda.Syntax.Abstract: data DataDefParams
+ Agda.Syntax.Abstract: data GeneralizeTelescope
+ Agda.Syntax.Abstract: generalized :: Set QName -> Expr -> Expr
+ Agda.Syntax.Abstract: instance Agda.Syntax.Abstract.AllNames a => Agda.Syntax.Abstract.AllNames (GHC.Maybe.Maybe a)
+ Agda.Syntax.Abstract: instance Agda.Syntax.Common.LensHiding Agda.Syntax.Abstract.TypedBinding
+ Agda.Syntax.Abstract: instance Agda.Syntax.Position.KillRange Agda.Syntax.Abstract.DataDefParams
+ Agda.Syntax.Abstract: instance Agda.Syntax.Position.KillRange Agda.Syntax.Abstract.GeneralizeTelescope
+ Agda.Syntax.Abstract: instance Data.Data.Data Agda.Syntax.Abstract.DataDefParams
+ Agda.Syntax.Abstract: instance Data.Data.Data Agda.Syntax.Abstract.GeneralizeTelescope
+ Agda.Syntax.Abstract: instance Data.Generics.Geniplate.UniverseBi Agda.Syntax.Abstract.Declaration (Agda.Syntax.Common.NamedArg Agda.Syntax.Abstract.BindName)
+ Agda.Syntax.Abstract: instance Data.Generics.Geniplate.UniverseBi Agda.Syntax.Abstract.Declaration (Agda.Syntax.Common.NamedArg Agda.Syntax.Abstract.Expr)
+ Agda.Syntax.Abstract: instance Data.Generics.Geniplate.UniverseBi Agda.Syntax.Abstract.Declaration (Agda.Syntax.Common.NamedArg Agda.Syntax.Abstract.LHSCore)
+ Agda.Syntax.Abstract: instance Data.Generics.Geniplate.UniverseBi Agda.Syntax.Abstract.Declaration (Agda.Syntax.Common.NamedArg Agda.Syntax.Abstract.Pattern)
+ Agda.Syntax.Abstract: instance GHC.Classes.Eq Agda.Syntax.Abstract.DataDefParams
+ Agda.Syntax.Abstract: instance GHC.Classes.Eq Agda.Syntax.Abstract.GeneralizeTelescope
+ Agda.Syntax.Abstract: instance GHC.Show.Show Agda.Syntax.Abstract.DataDefParams
+ Agda.Syntax.Abstract: instance GHC.Show.Show Agda.Syntax.Abstract.GeneralizeTelescope
+ Agda.Syntax.Abstract: noDataDefParams :: DataDefParams
+ Agda.Syntax.Abstract: sameRoot :: Name -> Name -> Bool
+ Agda.Syntax.Abstract: uglyShowName :: Name -> String
+ Agda.Syntax.Abstract.Name: [nameIsRecordName] :: Name -> Bool
+ Agda.Syntax.Abstract.Name: instance Agda.Syntax.Concrete.Name.LensInScope Agda.Syntax.Abstract.Name.Name
+ Agda.Syntax.Abstract.Name: instance Agda.Syntax.Concrete.Name.LensInScope Agda.Syntax.Abstract.Name.QName
+ Agda.Syntax.Abstract.Name: sameRoot :: Name -> Name -> Bool
+ Agda.Syntax.Abstract.Name: uglyShowName :: Name -> String
+ Agda.Syntax.Abstract.Pattern: instance Agda.Syntax.Abstract.Pattern.APatternLike a b => Agda.Syntax.Abstract.Pattern.APatternLike a (GHC.Maybe.Maybe b)
+ Agda.Syntax.Abstract.Pattern: instance Agda.Syntax.Abstract.Pattern.MapNamedArgPattern a => Agda.Syntax.Abstract.Pattern.MapNamedArgPattern (GHC.Maybe.Maybe a)
+ Agda.Syntax.Abstract.Views: instance Agda.Syntax.Abstract.Views.ExprLike Agda.Syntax.Abstract.DataDefParams
+ Agda.Syntax.Abstract.Views: instance Agda.Syntax.Abstract.Views.ExprLike Agda.Syntax.Abstract.GeneralizeTelescope
+ Agda.Syntax.Builtin: builtinAbs :: String
+ Agda.Syntax.Builtin: builtinAbsAbs :: String
+ Agda.Syntax.Builtin: builtinAgdaClause :: String
+ Agda.Syntax.Builtin: builtinAgdaClauseAbsurd :: String
+ Agda.Syntax.Builtin: builtinAgdaClauseClause :: String
+ Agda.Syntax.Builtin: builtinAgdaDefinition :: String
+ Agda.Syntax.Builtin: builtinAgdaDefinitionDataConstructor :: String
+ Agda.Syntax.Builtin: builtinAgdaDefinitionDataDef :: String
+ Agda.Syntax.Builtin: builtinAgdaDefinitionFunDef :: String
+ Agda.Syntax.Builtin: builtinAgdaDefinitionPostulate :: String
+ Agda.Syntax.Builtin: builtinAgdaDefinitionPrimitive :: String
+ Agda.Syntax.Builtin: builtinAgdaDefinitionRecordDef :: String
+ Agda.Syntax.Builtin: builtinAgdaErrorPart :: String
+ Agda.Syntax.Builtin: builtinAgdaErrorPartName :: String
+ Agda.Syntax.Builtin: builtinAgdaErrorPartString :: String
+ Agda.Syntax.Builtin: builtinAgdaErrorPartTerm :: String
+ Agda.Syntax.Builtin: builtinAgdaLitChar :: String
+ Agda.Syntax.Builtin: builtinAgdaLitFloat :: String
+ Agda.Syntax.Builtin: builtinAgdaLitMeta :: String
+ Agda.Syntax.Builtin: builtinAgdaLitNat :: String
+ Agda.Syntax.Builtin: builtinAgdaLitQName :: String
+ Agda.Syntax.Builtin: builtinAgdaLitString :: String
+ Agda.Syntax.Builtin: builtinAgdaLitWord64 :: String
+ Agda.Syntax.Builtin: builtinAgdaLiteral :: String
+ Agda.Syntax.Builtin: builtinAgdaMeta :: String
+ Agda.Syntax.Builtin: builtinAgdaPatAbsurd :: String
+ Agda.Syntax.Builtin: builtinAgdaPatCon :: String
+ Agda.Syntax.Builtin: builtinAgdaPatDot :: String
+ Agda.Syntax.Builtin: builtinAgdaPatLit :: String
+ Agda.Syntax.Builtin: builtinAgdaPatProj :: String
+ Agda.Syntax.Builtin: builtinAgdaPatVar :: String
+ Agda.Syntax.Builtin: builtinAgdaPattern :: String
+ Agda.Syntax.Builtin: builtinAgdaSort :: String
+ Agda.Syntax.Builtin: builtinAgdaSortLit :: String
+ Agda.Syntax.Builtin: builtinAgdaSortSet :: String
+ Agda.Syntax.Builtin: builtinAgdaSortUnsupported :: String
+ Agda.Syntax.Builtin: builtinAgdaTCM :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMBind :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMBlockOnMeta :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMCatchError :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMCheckType :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMCommit :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMDebugPrint :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMDeclareDef :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMDeclarePostulate :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMDefineFun :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMExtendContext :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMFreshName :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMGetContext :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMGetDefinition :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMGetType :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMInContext :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMInferType :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMIsMacro :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMNoConstraints :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMNormalise :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMQuoteTerm :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMReduce :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMReturn :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMRunSpeculative :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMTypeError :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMUnify :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMUnquoteTerm :: String
+ Agda.Syntax.Builtin: builtinAgdaTCMWithNormalisation :: String
+ Agda.Syntax.Builtin: builtinAgdaTerm :: String
+ Agda.Syntax.Builtin: builtinAgdaTermCon :: String
+ Agda.Syntax.Builtin: builtinAgdaTermDef :: String
+ Agda.Syntax.Builtin: builtinAgdaTermExtLam :: String
+ Agda.Syntax.Builtin: builtinAgdaTermLam :: String
+ Agda.Syntax.Builtin: builtinAgdaTermLit :: String
+ Agda.Syntax.Builtin: builtinAgdaTermMeta :: String
+ Agda.Syntax.Builtin: builtinAgdaTermPi :: String
+ Agda.Syntax.Builtin: builtinAgdaTermSort :: String
+ Agda.Syntax.Builtin: builtinAgdaTermUnsupported :: String
+ Agda.Syntax.Builtin: builtinAgdaTermVar :: String
+ Agda.Syntax.Builtin: builtinArg :: String
+ Agda.Syntax.Builtin: builtinArgArg :: String
+ Agda.Syntax.Builtin: builtinArgArgInfo :: String
+ Agda.Syntax.Builtin: builtinArgInfo :: String
+ Agda.Syntax.Builtin: builtinAssoc :: String
+ Agda.Syntax.Builtin: builtinAssocLeft :: String
+ Agda.Syntax.Builtin: builtinAssocNon :: String
+ Agda.Syntax.Builtin: builtinAssocRight :: String
+ Agda.Syntax.Builtin: builtinBool :: String
+ Agda.Syntax.Builtin: builtinChar :: String
+ Agda.Syntax.Builtin: builtinComp :: String
+ Agda.Syntax.Builtin: builtinConId :: String
+ Agda.Syntax.Builtin: builtinCons :: String
+ Agda.Syntax.Builtin: builtinEquality :: String
+ Agda.Syntax.Builtin: builtinEquiv :: String
+ Agda.Syntax.Builtin: builtinEquivFun :: String
+ Agda.Syntax.Builtin: builtinEquivProof :: String
+ Agda.Syntax.Builtin: builtinFaceForall :: String
+ Agda.Syntax.Builtin: builtinFalse :: String
+ Agda.Syntax.Builtin: builtinFixity :: String
+ Agda.Syntax.Builtin: builtinFixityFixity :: String
+ Agda.Syntax.Builtin: builtinFlat :: String
+ Agda.Syntax.Builtin: builtinFloat :: String
+ Agda.Syntax.Builtin: builtinFromNat :: String
+ Agda.Syntax.Builtin: builtinFromNeg :: String
+ Agda.Syntax.Builtin: builtinFromString :: String
+ Agda.Syntax.Builtin: builtinGlue :: String
+ Agda.Syntax.Builtin: builtinHComp :: String
+ Agda.Syntax.Builtin: builtinHidden :: String
+ Agda.Syntax.Builtin: builtinHiding :: String
+ Agda.Syntax.Builtin: builtinIMax :: String
+ Agda.Syntax.Builtin: builtinIMin :: String
+ Agda.Syntax.Builtin: builtinINeg :: String
+ Agda.Syntax.Builtin: builtinIO :: String
+ Agda.Syntax.Builtin: builtinIOne :: String
+ Agda.Syntax.Builtin: builtinIZero :: String
+ Agda.Syntax.Builtin: builtinId :: String
+ Agda.Syntax.Builtin: builtinIdElim :: String
+ Agda.Syntax.Builtin: builtinInf :: String
+ Agda.Syntax.Builtin: builtinInstance :: String
+ Agda.Syntax.Builtin: builtinInteger :: String
+ Agda.Syntax.Builtin: builtinIntegerNegSuc :: String
+ Agda.Syntax.Builtin: builtinIntegerPos :: String
+ Agda.Syntax.Builtin: builtinInterval :: String
+ Agda.Syntax.Builtin: builtinIrrelevant :: String
+ Agda.Syntax.Builtin: builtinIsOne :: String
+ Agda.Syntax.Builtin: builtinIsOne1 :: String
+ Agda.Syntax.Builtin: builtinIsOne2 :: String
+ Agda.Syntax.Builtin: builtinIsOneEmpty :: String
+ Agda.Syntax.Builtin: builtinItIsOne :: String
+ Agda.Syntax.Builtin: builtinLevel :: String
+ Agda.Syntax.Builtin: builtinLevelMax :: String
+ Agda.Syntax.Builtin: builtinLevelSuc :: String
+ Agda.Syntax.Builtin: builtinLevelZero :: String
+ Agda.Syntax.Builtin: builtinList :: String
+ Agda.Syntax.Builtin: builtinNat :: String
+ Agda.Syntax.Builtin: builtinNatDivSucAux :: String
+ Agda.Syntax.Builtin: builtinNatEquals :: String
+ Agda.Syntax.Builtin: builtinNatLess :: String
+ Agda.Syntax.Builtin: builtinNatMinus :: String
+ Agda.Syntax.Builtin: builtinNatModSucAux :: String
+ Agda.Syntax.Builtin: builtinNatPlus :: String
+ Agda.Syntax.Builtin: builtinNatTimes :: String
+ Agda.Syntax.Builtin: builtinNil :: String
+ Agda.Syntax.Builtin: builtinPOr :: String
+ Agda.Syntax.Builtin: builtinPartial :: String
+ Agda.Syntax.Builtin: builtinPartialP :: String
+ Agda.Syntax.Builtin: builtinPath :: String
+ Agda.Syntax.Builtin: builtinPathP :: String
+ Agda.Syntax.Builtin: builtinPathToEquiv :: String
+ Agda.Syntax.Builtin: builtinPrecRelated :: String
+ Agda.Syntax.Builtin: builtinPrecUnrelated :: String
+ Agda.Syntax.Builtin: builtinPrecedence :: String
+ Agda.Syntax.Builtin: builtinQName :: String
+ Agda.Syntax.Builtin: builtinRefl :: String
+ Agda.Syntax.Builtin: builtinRelevance :: String
+ Agda.Syntax.Builtin: builtinRelevant :: String
+ Agda.Syntax.Builtin: builtinRewrite :: String
+ Agda.Syntax.Builtin: builtinSetOmega :: String
+ Agda.Syntax.Builtin: builtinSharp :: String
+ Agda.Syntax.Builtin: builtinSigma :: String
+ Agda.Syntax.Builtin: builtinSize :: String
+ Agda.Syntax.Builtin: builtinSizeInf :: String
+ Agda.Syntax.Builtin: builtinSizeLt :: String
+ Agda.Syntax.Builtin: builtinSizeMax :: String
+ Agda.Syntax.Builtin: builtinSizeSuc :: String
+ Agda.Syntax.Builtin: builtinSizeUniv :: String
+ Agda.Syntax.Builtin: builtinString :: String
+ Agda.Syntax.Builtin: builtinSub :: String
+ Agda.Syntax.Builtin: builtinSubIn :: String
+ Agda.Syntax.Builtin: builtinSubOut :: String
+ Agda.Syntax.Builtin: builtinSuc :: String
+ Agda.Syntax.Builtin: builtinTrans :: String
+ Agda.Syntax.Builtin: builtinTrue :: String
+ Agda.Syntax.Builtin: builtinUnit :: String
+ Agda.Syntax.Builtin: builtinUnitUnit :: String
+ Agda.Syntax.Builtin: builtinVisible :: String
+ Agda.Syntax.Builtin: builtinWord64 :: String
+ Agda.Syntax.Builtin: builtinZero :: String
+ Agda.Syntax.Builtin: builtin_glue :: String
+ Agda.Syntax.Builtin: builtin_unglue :: String
+ Agda.Syntax.Builtin: builtinsNoDef :: [String]
+ Agda.Syntax.Builtin: sizeBuiltins :: [String]
+ Agda.Syntax.Common: AgdaFileType :: FileType
+ Agda.Syntax.Common: MdFileType :: FileType
+ Agda.Syntax.Common: NoUniverseCheck :: UniverseCheck
+ Agda.Syntax.Common: OrgFileType :: FileType
+ Agda.Syntax.Common: Quantity1 :: Quantity
+ Agda.Syntax.Common: RstFileType :: FileType
+ Agda.Syntax.Common: Substitution :: Origin
+ Agda.Syntax.Common: TexFileType :: FileType
+ Agda.Syntax.Common: YesUniverseCheck :: UniverseCheck
+ Agda.Syntax.Common: [domFinite] :: Dom e -> !Bool
+ Agda.Syntax.Common: [domName] :: Dom e -> Maybe RString
+ Agda.Syntax.Common: applyModality :: LensModality a => Modality -> a -> a
+ Agda.Syntax.Common: applyQuantity :: LensQuantity a => Quantity -> a -> a
+ Agda.Syntax.Common: applyRelevance :: LensRelevance a => Relevance -> a -> a
+ Agda.Syntax.Common: class LensNamed name a | a -> name
+ Agda.Syntax.Common: composeModality :: Modality -> Modality -> Modality
+ Agda.Syntax.Common: composeQuantity :: Quantity -> Quantity -> Quantity
+ Agda.Syntax.Common: data FileType
+ Agda.Syntax.Common: data UniverseCheck
+ Agda.Syntax.Common: defaultArgDom :: ArgInfo -> a -> Dom a
+ Agda.Syntax.Common: defaultNamedArgDom :: ArgInfo -> String -> a -> Dom a
+ Agda.Syntax.Common: domFromNamedArg :: NamedArg a -> Dom a
+ Agda.Syntax.Common: getNameOf :: LensNamed name a => a -> Maybe name
+ Agda.Syntax.Common: instance (Data.Data.Data n, Data.Data.Data m) => Data.Data.Data (Agda.Syntax.Common.ImportDirective' n m)
+ Agda.Syntax.Common: instance (Data.Data.Data n, Data.Data.Data m) => Data.Data.Data (Agda.Syntax.Common.ImportedName' n m)
+ Agda.Syntax.Common: instance (Data.Data.Data n, Data.Data.Data m) => Data.Data.Data (Agda.Syntax.Common.Renaming' n m)
+ Agda.Syntax.Common: instance (Data.Data.Data n, Data.Data.Data m) => Data.Data.Data (Agda.Syntax.Common.Using' n m)
+ Agda.Syntax.Common: instance (GHC.Classes.Eq m, GHC.Classes.Eq n) => GHC.Classes.Eq (Agda.Syntax.Common.ImportDirective' n m)
+ Agda.Syntax.Common: instance (GHC.Classes.Eq m, GHC.Classes.Eq n) => GHC.Classes.Eq (Agda.Syntax.Common.ImportedName' n m)
+ Agda.Syntax.Common: instance (GHC.Classes.Eq m, GHC.Classes.Eq n) => GHC.Classes.Eq (Agda.Syntax.Common.Renaming' n m)
+ Agda.Syntax.Common: instance (GHC.Classes.Eq m, GHC.Classes.Eq n) => GHC.Classes.Eq (Agda.Syntax.Common.Using' n m)
+ Agda.Syntax.Common: instance (GHC.Classes.Ord m, GHC.Classes.Ord n) => GHC.Classes.Ord (Agda.Syntax.Common.ImportedName' n m)
+ Agda.Syntax.Common: instance (GHC.Show.Show m, GHC.Show.Show n) => GHC.Show.Show (Agda.Syntax.Common.ImportedName' n m)
+ Agda.Syntax.Common: instance (GHC.Show.Show name, GHC.Show.Show a) => GHC.Show.Show (Agda.Syntax.Common.Named name a)
+ Agda.Syntax.Common: instance Agda.Syntax.Common.LensNamed name (Agda.Syntax.Common.Named name a)
+ Agda.Syntax.Common: instance Agda.Syntax.Common.LensNamed name a => Agda.Syntax.Common.LensNamed name (Agda.Syntax.Common.Arg a)
+ Agda.Syntax.Common: instance Agda.Syntax.Position.KillRange Agda.Syntax.Common.UniverseCheck
+ Agda.Syntax.Common: instance Agda.Utils.POMonoid.LeftClosedPOMonoid Agda.Syntax.Common.Modality
+ Agda.Syntax.Common: instance Agda.Utils.POMonoid.LeftClosedPOMonoid Agda.Syntax.Common.Quantity
+ Agda.Syntax.Common: instance Agda.Utils.Pretty.Pretty Agda.Syntax.Common.FileType
+ Agda.Syntax.Common: instance Agda.Utils.Pretty.Pretty Agda.Syntax.Common.Hiding
+ Agda.Syntax.Common: instance Agda.Utils.Pretty.Pretty Agda.Syntax.Common.Induction
+ Agda.Syntax.Common: instance Agda.Utils.Pretty.Pretty Agda.Syntax.Common.InteractionId
+ Agda.Syntax.Common: instance Agda.Utils.Pretty.Pretty Agda.Syntax.Common.NameId
+ Agda.Syntax.Common: instance Agda.Utils.Pretty.Pretty a => Agda.Utils.Pretty.Pretty (Agda.Syntax.Common.Ranged a)
+ Agda.Syntax.Common: instance Data.Data.Data Agda.Syntax.Common.FileType
+ Agda.Syntax.Common: instance Data.Data.Data Agda.Syntax.Common.UniverseCheck
+ Agda.Syntax.Common: instance GHC.Base.Monoid (Agda.Syntax.Common.Using' n m)
+ Agda.Syntax.Common: instance GHC.Base.Semigroup (Agda.Syntax.Common.Using' n m)
+ Agda.Syntax.Common: instance GHC.Classes.Eq Agda.Syntax.Common.FileType
+ Agda.Syntax.Common: instance GHC.Classes.Eq Agda.Syntax.Common.UniverseCheck
+ Agda.Syntax.Common: instance GHC.Classes.Ord Agda.Syntax.Common.FileType
+ Agda.Syntax.Common: instance GHC.Classes.Ord Agda.Syntax.Common.UniverseCheck
+ Agda.Syntax.Common: instance GHC.Enum.Bounded Agda.Syntax.Common.UniverseCheck
+ Agda.Syntax.Common: instance GHC.Enum.Enum Agda.Syntax.Common.UniverseCheck
+ Agda.Syntax.Common: instance GHC.Show.Show Agda.Syntax.Common.FileType
+ Agda.Syntax.Common: instance GHC.Show.Show Agda.Syntax.Common.UniverseCheck
+ Agda.Syntax.Common: instance GHC.Show.Show e => GHC.Show.Show (Agda.Syntax.Common.Arg e)
+ Agda.Syntax.Common: instance GHC.Show.Show e => GHC.Show.Show (Agda.Syntax.Common.Dom e)
+ Agda.Syntax.Common: inverseApplyModality :: LensModality a => Modality -> a -> a
+ Agda.Syntax.Common: inverseApplyQuantity :: LensQuantity a => Quantity -> a -> a
+ Agda.Syntax.Common: inverseApplyRelevance :: LensRelevance a => Relevance -> a -> a
+ Agda.Syntax.Common: inverseComposeModality :: Modality -> Modality -> Modality
+ Agda.Syntax.Common: inverseComposeQuantity :: Quantity -> Quantity -> Quantity
+ Agda.Syntax.Common: lModQuantity :: Lens' Quantity Modality
+ Agda.Syntax.Common: lModRelevance :: Lens' Relevance Modality
+ Agda.Syntax.Common: lensNamed :: LensNamed name a => Lens' (Maybe name) a
+ Agda.Syntax.Common: mapNameOf :: LensNamed name a => (Maybe name -> Maybe name) -> a -> a
+ Agda.Syntax.Common: moreQuantity :: Quantity -> Quantity -> Bool
+ Agda.Syntax.Common: moreUsableModality :: Modality -> Modality -> Bool
+ Agda.Syntax.Common: namedArgFromDom :: Dom a -> NamedArg a
+ Agda.Syntax.Common: setNameOf :: LensNamed name a => Maybe name -> a -> a
+ Agda.Syntax.Common: unnamedArg :: ArgInfo -> a -> NamedArg a
+ Agda.Syntax.Common: usableModality :: LensModality a => a -> Bool
+ Agda.Syntax.Common: usableQuantity :: LensQuantity a => a -> Bool
+ Agda.Syntax.Common: usableRelevance :: LensRelevance a => a -> Bool
+ Agda.Syntax.Concrete: DataDef :: Range -> Induction -> Name -> [LamBinding] -> [TypeSignatureOrInstanceBlock] -> Declaration
+ Agda.Syntax.Concrete: EqualP :: Range -> [(Expr, Expr)] -> Pattern
+ Agda.Syntax.Concrete: Generalize :: Range -> [TypeSignature] -> Declaration
+ Agda.Syntax.Concrete: Generalized :: Expr -> Expr
+ Agda.Syntax.Concrete: NoUniverseCheckPragma :: Range -> Pragma
+ Agda.Syntax.Concrete: PropN :: Range -> Integer -> Expr
+ Agda.Syntax.Concrete: RecordDef :: Range -> Name -> Maybe (Ranged Induction) -> Maybe HasEta -> Maybe (Name, IsInstance) -> [LamBinding] -> [Declaration] -> Declaration
+ Agda.Syntax.Concrete: RecordModuleInstance :: Range -> QName -> ModuleApplication
+ Agda.Syntax.Concrete: data AsName' a
+ Agda.Syntax.Concrete: instance Agda.Syntax.Common.LensHiding Agda.Syntax.Concrete.TypedBinding
+ Agda.Syntax.Concrete: instance Agda.Syntax.Common.LensRelevance Agda.Syntax.Concrete.TypedBinding
+ Agda.Syntax.Concrete: instance Agda.Syntax.Position.SetRange Agda.Syntax.Concrete.TypedBinding
+ Agda.Syntax.Concrete: instance Data.Data.Data a => Data.Data.Data (Agda.Syntax.Concrete.AsName' a)
+ Agda.Syntax.Concrete: instance Data.Foldable.Foldable Agda.Syntax.Concrete.AsName'
+ Agda.Syntax.Concrete: instance Data.Traversable.Traversable Agda.Syntax.Concrete.AsName'
+ Agda.Syntax.Concrete: instance GHC.Base.Functor Agda.Syntax.Concrete.AsName'
+ Agda.Syntax.Concrete: instance GHC.Show.Show a => GHC.Show.Show (Agda.Syntax.Concrete.AsName' a)
+ Agda.Syntax.Concrete: isSingleIdentifierP :: Pattern -> Maybe Name
+ Agda.Syntax.Concrete: lamBindingsToTelescope :: Range -> [LamBinding] -> Telescope
+ Agda.Syntax.Concrete: makePi :: Telescope -> Expr -> Expr
+ Agda.Syntax.Concrete: removeSingletonRawAppP :: Pattern -> Pattern
+ Agda.Syntax.Concrete: type AsName = AsName' (Either Expr Name)
+ Agda.Syntax.Concrete.Attribute: QuantityAttribute :: Quantity -> Attribute
+ Agda.Syntax.Concrete.Attribute: RelevanceAttribute :: Relevance -> Attribute
+ Agda.Syntax.Concrete.Attribute: attributesMap :: Map String Attribute
+ Agda.Syntax.Concrete.Attribute: data Attribute
+ Agda.Syntax.Concrete.Attribute: instance GHC.Classes.Eq Agda.Syntax.Concrete.Attribute.Attribute
+ Agda.Syntax.Concrete.Attribute: instance GHC.Classes.Ord Agda.Syntax.Concrete.Attribute.Attribute
+ Agda.Syntax.Concrete.Attribute: instance GHC.Show.Show Agda.Syntax.Concrete.Attribute.Attribute
+ Agda.Syntax.Concrete.Attribute: isQuantityAttribute :: Attribute -> Maybe Quantity
+ Agda.Syntax.Concrete.Attribute: isRelevanceAttribute :: Attribute -> Maybe Relevance
+ Agda.Syntax.Concrete.Attribute: quantityAttributeTable :: [(String, Quantity)]
+ Agda.Syntax.Concrete.Attribute: quantityAttributes :: [Attribute] -> [Attribute]
+ Agda.Syntax.Concrete.Attribute: relevanceAttributeTable :: [(String, Relevance)]
+ Agda.Syntax.Concrete.Attribute: relevanceAttributes :: [Attribute] -> [Attribute]
+ Agda.Syntax.Concrete.Attribute: setAttribute :: LensAttribute a => Attribute -> a -> a
+ Agda.Syntax.Concrete.Attribute: setAttributes :: LensAttribute a => [Attribute] -> a -> a
+ Agda.Syntax.Concrete.Attribute: setPristineAttribute :: LensAttribute a => Attribute -> a -> Maybe a
+ Agda.Syntax.Concrete.Attribute: setPristineAttributes :: LensAttribute a => [Attribute] -> a -> Maybe a
+ Agda.Syntax.Concrete.Attribute: setPristineQuantity :: LensQuantity a => Quantity -> a -> Maybe a
+ Agda.Syntax.Concrete.Attribute: setPristineRelevance :: LensRelevance a => Relevance -> a -> Maybe a
+ Agda.Syntax.Concrete.Attribute: stringToAttribute :: String -> Maybe Attribute
+ Agda.Syntax.Concrete.Attribute: type LensAttribute a = (LensRelevance a, LensQuantity a)
+ Agda.Syntax.Concrete.Definitions: EmptyGeneralize :: Range -> DeclarationWarning
+ Agda.Syntax.Concrete.Definitions: EmptyPrimitive :: Range -> DeclarationWarning
+ Agda.Syntax.Concrete.Definitions: InvalidNoUniverseCheckPragma :: Range -> DeclarationWarning
+ Agda.Syntax.Concrete.Definitions: MissingDefinitions :: [Name] -> DeclarationWarning
+ Agda.Syntax.Concrete.Definitions: NiceDataDef :: Range -> Origin -> IsAbstract -> PositivityCheck -> UniverseCheck -> Name -> [LamBinding] -> [NiceConstructor] -> NiceDeclaration
+ Agda.Syntax.Concrete.Definitions: NiceGeneralize :: Range -> Access -> ArgInfo -> Name -> Expr -> NiceDeclaration
+ Agda.Syntax.Concrete.Definitions: NiceRecDef :: Range -> Origin -> IsAbstract -> PositivityCheck -> UniverseCheck -> Name -> Maybe (Ranged Induction) -> Maybe HasEta -> Maybe (Name, IsInstance) -> [LamBinding] -> [Declaration] -> NiceDeclaration
+ Agda.Syntax.Concrete.Definitions: PragmaCompiled :: Range -> DeclarationWarning
+ Agda.Syntax.Concrete.Definitions: instance Agda.Utils.Pretty.Pretty Agda.Syntax.Concrete.Definitions.NiceDeclaration
+ Agda.Syntax.Concrete.Fixity: DoWarn :: DoWarn
+ Agda.Syntax.Concrete.Fixity: NoWarn :: DoWarn
+ Agda.Syntax.Concrete.Fixity: class Monad m => MonadFixityError m
+ Agda.Syntax.Concrete.Fixity: data DoWarn
+ Agda.Syntax.Concrete.Fixity: fixitiesAndPolarities :: MonadFixityError m => DoWarn -> [Declaration] -> m (Fixities, Polarities)
+ Agda.Syntax.Concrete.Fixity: instance Agda.Syntax.Concrete.Fixity.MonadFixityError m => GHC.Base.Monoid (Agda.Syntax.Concrete.Fixity.MonadicFixPol m)
+ Agda.Syntax.Concrete.Fixity: instance Agda.Syntax.Concrete.Fixity.MonadFixityError m => GHC.Base.Semigroup (Agda.Syntax.Concrete.Fixity.MonadicFixPol m)
+ Agda.Syntax.Concrete.Fixity: instance GHC.Base.Monoid Agda.Syntax.Concrete.Fixity.DeclaredNames
+ Agda.Syntax.Concrete.Fixity: instance GHC.Base.Semigroup Agda.Syntax.Concrete.Fixity.DeclaredNames
+ Agda.Syntax.Concrete.Fixity: instance GHC.Classes.Eq Agda.Syntax.Concrete.Fixity.DoWarn
+ Agda.Syntax.Concrete.Fixity: instance GHC.Show.Show Agda.Syntax.Concrete.Fixity.DoWarn
+ Agda.Syntax.Concrete.Fixity: throwMultipleFixityDecls :: MonadFixityError m => [(Name, [Fixity'])] -> m a
+ Agda.Syntax.Concrete.Fixity: throwMultiplePolarityPragmas :: MonadFixityError m => [Name] -> m a
+ Agda.Syntax.Concrete.Fixity: type Fixities = Map Name Fixity'
+ Agda.Syntax.Concrete.Fixity: type Polarities = Map Name [Occurrence]
+ Agda.Syntax.Concrete.Fixity: warnPolarityPragmasButNotPostulates :: MonadFixityError m => [Name] -> m ()
+ Agda.Syntax.Concrete.Fixity: warnUnknownFixityInMixfixDecl :: MonadFixityError m => [Name] -> m ()
+ Agda.Syntax.Concrete.Fixity: warnUnknownNamesInFixityDecl :: MonadFixityError m => [Name] -> m ()
+ Agda.Syntax.Concrete.Fixity: warnUnknownNamesInPolarityPragmas :: MonadFixityError m => [Name] -> m ()
+ Agda.Syntax.Concrete.Generic: instance Agda.Syntax.Concrete.Generic.ExprLike a => Agda.Syntax.Concrete.Generic.ExprLike (GHC.Maybe.Maybe a)
+ Agda.Syntax.Concrete.Name: InScope :: NameInScope
+ Agda.Syntax.Concrete.Name: NotInScope :: NameInScope
+ Agda.Syntax.Concrete.Name: [nameId] :: Name -> NameId
+ Agda.Syntax.Concrete.Name: [nameInScope] :: Name -> NameInScope
+ Agda.Syntax.Concrete.Name: [nameNameParts] :: Name -> [NamePart]
+ Agda.Syntax.Concrete.Name: [nameRange] :: Name -> Range
+ Agda.Syntax.Concrete.Name: class LensInScope a
+ Agda.Syntax.Concrete.Name: data NameInScope
+ Agda.Syntax.Concrete.Name: firstNonTakenName :: (Name -> Bool) -> Name -> Name
+ Agda.Syntax.Concrete.Name: instance Agda.Syntax.Concrete.Name.LensInScope Agda.Syntax.Concrete.Name.Name
+ Agda.Syntax.Concrete.Name: instance Agda.Syntax.Concrete.Name.LensInScope Agda.Syntax.Concrete.Name.NameInScope
+ Agda.Syntax.Concrete.Name: instance Agda.Syntax.Concrete.Name.LensInScope Agda.Syntax.Concrete.Name.QName
+ Agda.Syntax.Concrete.Name: instance Control.DeepSeq.NFData Agda.Syntax.Concrete.Name.NameInScope
+ Agda.Syntax.Concrete.Name: instance Data.Data.Data Agda.Syntax.Concrete.Name.NameInScope
+ Agda.Syntax.Concrete.Name: instance GHC.Classes.Eq Agda.Syntax.Concrete.Name.NameInScope
+ Agda.Syntax.Concrete.Name: instance GHC.Show.Show Agda.Syntax.Concrete.Name.NameInScope
+ Agda.Syntax.Concrete.Name: isInScope :: LensInScope a => a -> NameInScope
+ Agda.Syntax.Concrete.Name: lensInScope :: LensInScope a => Lens' NameInScope a
+ Agda.Syntax.Concrete.Name: mapInScope :: LensInScope a => (NameInScope -> NameInScope) -> a -> a
+ Agda.Syntax.Concrete.Name: nameRoot :: Name -> RawName
+ Agda.Syntax.Concrete.Name: nextName :: Name -> Name
+ Agda.Syntax.Concrete.Name: nextStr :: String -> String
+ Agda.Syntax.Concrete.Name: sameRoot :: Name -> Name -> Bool
+ Agda.Syntax.Concrete.Name: setInScope :: LensInScope a => a -> a
+ Agda.Syntax.Concrete.Name: setNotInScope :: LensInScope a => a -> a
+ Agda.Syntax.Concrete.Operators.Parser: type family OperatorType (k :: NotationKind) (e :: *) :: *
+ Agda.Syntax.Concrete.Pattern: instance Agda.Syntax.Concrete.Pattern.CPatternLike p => Agda.Syntax.Concrete.Pattern.CPatternLike (GHC.Maybe.Maybe p)
+ Agda.Syntax.Concrete.Pretty: NamedBinding :: Bool -> NamedArg BoundName -> NamedBinding
+ Agda.Syntax.Concrete.Pretty: [namedBinding] :: NamedBinding -> NamedArg BoundName
+ Agda.Syntax.Concrete.Pretty: [withHiding] :: NamedBinding -> Bool
+ Agda.Syntax.Concrete.Pretty: data NamedBinding
+ Agda.Syntax.Concrete.Pretty: getLabel :: NamedArg a -> Maybe String
+ Agda.Syntax.Concrete.Pretty: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Agda.Syntax.Common.ImportDirective' a b)
+ Agda.Syntax.Concrete.Pretty: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Agda.Syntax.Common.Renaming' a b)
+ Agda.Syntax.Concrete.Pretty: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Agda.Syntax.Common.Using' a b)
+ Agda.Syntax.Concrete.Pretty: instance Agda.Utils.Pretty.Pretty Agda.Syntax.Concrete.Pretty.NamedBinding
+ Agda.Syntax.Concrete.Pretty: instance Agda.Utils.Pretty.Pretty a => Agda.Utils.Pretty.Pretty (Agda.Syntax.Common.Dom a)
+ Agda.Syntax.Concrete.Pretty: instance GHC.Show.Show (Agda.Syntax.Concrete.LamBinding' Agda.Syntax.Concrete.TypedBinding)
+ Agda.Syntax.Concrete.Pretty: instance GHC.Show.Show (Agda.Syntax.Concrete.RHS' Agda.Syntax.Concrete.Expr)
+ Agda.Syntax.Concrete.Pretty: instance GHC.Show.Show (Agda.Syntax.Concrete.TypedBinding' Agda.Syntax.Concrete.Expr)
+ Agda.Syntax.Concrete.Pretty: instance GHC.Show.Show (Agda.Syntax.Concrete.WhereClause' [Agda.Syntax.Concrete.Declaration])
+ Agda.Syntax.Concrete.Pretty: instance GHC.Show.Show Agda.Syntax.Concrete.DoStmt
+ Agda.Syntax.Concrete.Pretty: instance GHC.Show.Show Agda.Syntax.Concrete.LamClause
+ Agda.Syntax.Concrete.Pretty: instance GHC.Show.Show Agda.Syntax.Concrete.ModuleAssignment
+ Agda.Syntax.Concrete.Pretty: instance GHC.Show.Show a => GHC.Show.Show (Agda.Syntax.Concrete.OpApp a)
+ Agda.Syntax.Concrete.Pretty: isLabeled :: NamedArg BoundName -> Bool
+ Agda.Syntax.Concrete.Pretty: pRecord :: Name -> Maybe (Ranged Induction) -> Maybe HasEta -> Maybe (Name, IsInstance) -> [LamBinding] -> Maybe Expr -> [Declaration] -> Doc
+ Agda.Syntax.Info: ConPatEager :: ConPatLazy
+ Agda.Syntax.Info: ConPatLazy :: ConPatLazy
+ Agda.Syntax.Info: data ConPatLazy
+ Agda.Syntax.Info: instance Data.Data.Data Agda.Syntax.Info.ConPatLazy
+ Agda.Syntax.Info: instance GHC.Classes.Eq Agda.Syntax.Info.ConPatLazy
+ Agda.Syntax.Info: instance GHC.Classes.Ord Agda.Syntax.Info.ConPatLazy
+ Agda.Syntax.Info: instance GHC.Enum.Bounded Agda.Syntax.Info.ConPatLazy
+ Agda.Syntax.Info: instance GHC.Enum.Enum Agda.Syntax.Info.ConPatLazy
+ Agda.Syntax.Info: instance GHC.Show.Show Agda.Syntax.Info.ConPatLazy
+ Agda.Syntax.Internal: DefP :: PatOrigin -> QName -> [NamedArg (Pattern' x)] -> Pattern' x
+ Agda.Syntax.Internal: DefS :: QName -> Elims -> Sort
+ Agda.Syntax.Internal: Dummy :: String -> Term
+ Agda.Syntax.Internal: DummyS :: String -> Sort
+ Agda.Syntax.Internal: IApply :: a -> a -> a -> Elim' a
+ Agda.Syntax.Internal: IApplyP :: PatOrigin -> Term -> Term -> x -> Pattern' x
+ Agda.Syntax.Internal: IMax :: Arg Term -> Arg Term -> IntervalView
+ Agda.Syntax.Internal: IMin :: Arg Term -> Arg Term -> IntervalView
+ Agda.Syntax.Internal: INeg :: Arg Term -> IntervalView
+ Agda.Syntax.Internal: IOne :: IntervalView
+ Agda.Syntax.Internal: IZero :: IntervalView
+ Agda.Syntax.Internal: OTerm :: Term -> IntervalView
+ Agda.Syntax.Internal: OType :: Type -> PathView
+ Agda.Syntax.Internal: PathType :: Sort -> QName -> Arg Term -> Arg Term -> Arg Term -> Arg Term -> PathView
+ Agda.Syntax.Internal: [conPFallThrough] :: ConPatternInfo -> Bool
+ Agda.Syntax.Internal: [pathLevel] :: PathView -> Arg Term
+ Agda.Syntax.Internal: [pathLhs] :: PathView -> Arg Term
+ Agda.Syntax.Internal: [pathName] :: PathView -> QName
+ Agda.Syntax.Internal: [pathRhs] :: PathView -> Arg Term
+ Agda.Syntax.Internal: [pathSort] :: PathView -> Sort
+ Agda.Syntax.Internal: [pathType] :: PathView -> Arg Term
+ Agda.Syntax.Internal: data IntervalView
+ Agda.Syntax.Internal: data PathView
+ Agda.Syntax.Internal: dummyDom :: String -> Int -> Dom Type
+ Agda.Syntax.Internal: dummyLevel :: String -> Int -> Level
+ Agda.Syntax.Internal: dummyLevel' :: String -> Int -> Level
+ Agda.Syntax.Internal: dummySort :: String -> Int -> Sort
+ Agda.Syntax.Internal: dummyTerm :: String -> Int -> Term
+ Agda.Syntax.Internal: dummyTerm' :: String -> Int -> Term
+ Agda.Syntax.Internal: dummyType :: String -> Int -> Type
+ Agda.Syntax.Internal: infixr 4 :#
+ Agda.Syntax.Internal: instance Agda.Syntax.Internal.LensSort a => Agda.Syntax.Internal.LensSort (Agda.Syntax.Common.Arg a)
+ Agda.Syntax.Internal: instance GHC.Show.Show Agda.Syntax.Internal.IntervalView
+ Agda.Syntax.Internal: isPathType :: PathView -> Bool
+ Agda.Syntax.Internal: listTel :: Lens' ListTel Telescope
+ Agda.Syntax.Internal: mkProp :: Integer -> Sort
+ Agda.Syntax.Internal: namedArgName :: NamedArg Name -> ArgName
+ Agda.Syntax.Internal: tmSort :: Term -> Sort
+ Agda.Syntax.Internal: type NAPs = [NamedArg DeBruijnPattern]
+ Agda.Syntax.Internal: unreducedLevel :: Term -> Level
+ Agda.Syntax.Internal.Defs: instance Agda.Syntax.Internal.Defs.GetDefs a => Agda.Syntax.Internal.Defs.GetDefs (GHC.Maybe.Maybe a)
+ Agda.Syntax.Internal.Generic: instance Agda.Syntax.Internal.Generic.TermLike Agda.Syntax.Internal.Sort
+ Agda.Syntax.Internal.Generic: instance Agda.Syntax.Internal.Generic.TermLike a => Agda.Syntax.Internal.Generic.TermLike (Agda.Syntax.Internal.Tele a)
+ Agda.Syntax.Internal.Generic: instance Agda.Syntax.Internal.Generic.TermLike a => Agda.Syntax.Internal.Generic.TermLike (GHC.Maybe.Maybe a)
+ Agda.Syntax.Internal.Names: instance Agda.Syntax.Internal.Names.NamesIn Agda.TypeChecking.Monad.Base.CompKit
+ Agda.Syntax.Internal.Names: instance Agda.Syntax.Internal.Names.NamesIn a => Agda.Syntax.Internal.Names.NamesIn (GHC.Maybe.Maybe a)
+ Agda.Syntax.Notation: instance Agda.Syntax.Position.HasRange Agda.Syntax.Notation.GenPart
+ Agda.Syntax.Notation: instance Agda.Syntax.Position.SetRange Agda.Syntax.Notation.GenPart
+ Agda.Syntax.Parser: acceptableFileExts :: [String]
+ Agda.Syntax.Parser: parseFile :: Show a => Parser a -> AbsolutePath -> String -> PM (a, FileType)
+ Agda.Syntax.Parser: readFilePM :: AbsolutePath -> PM Text
+ Agda.Syntax.Parser.Literate: literateOrg :: Position -> String -> [Layer]
+ Agda.Syntax.Parser.LookAhead: lookAheadError :: String -> LookAhead a
+ Agda.Syntax.Parser.Monad: parseErrorRange :: HasRange r => r -> String -> Parser a
+ Agda.Syntax.Parser.Parser: instance Agda.Syntax.Position.HasRange Agda.Syntax.Parser.Parser.Attr
+ Agda.Syntax.Parser.Parser: instance Agda.Syntax.Position.SetRange Agda.Syntax.Parser.Parser.Attr
+ Agda.Syntax.Parser.Tokens: KwNO_UNIVERSE_CHECK :: Keyword
+ Agda.Syntax.Parser.Tokens: KwVariable :: Keyword
+ Agda.Syntax.Parser.Tokens: TokMarkup :: (Interval, String) -> Token
+ Agda.Syntax.Parser.Tokens: TokPropN :: (Interval, Integer) -> Token
+ Agda.Syntax.Position: instance Agda.Syntax.Position.HasRange a => Agda.Syntax.Position.HasRange (GHC.Maybe.Maybe a)
+ Agda.Syntax.Position: instance Agda.Syntax.Position.KillRange a => Agda.Syntax.Position.KillRange (GHC.Maybe.Maybe a)
+ Agda.Syntax.Position: instance GHC.Show.Show a => GHC.Show.Show (Agda.Syntax.Position.Range' (GHC.Maybe.Maybe a))
+ Agda.Syntax.Scope.Base: DisallowedGeneralizeName :: KindOfName
+ Agda.Syntax.Scope.Base: GeneralizeName :: KindOfName
+ Agda.Syntax.Scope.Base: GeneralizedVarsMetadata :: Map QName Name -> NameMetadata
+ Agda.Syntax.Scope.Base: NoMetadata :: NameMetadata
+ Agda.Syntax.Scope.Base: [anameMetadata] :: AbstractName -> NameMetadata
+ Agda.Syntax.Scope.Base: [scopeFixities] :: ScopeInfo -> Fixities
+ Agda.Syntax.Scope.Base: [scopePolarities] :: ScopeInfo -> Polarities
+ Agda.Syntax.Scope.Base: data NameMetadata
+ Agda.Syntax.Scope.Base: disallowGeneralizedVars :: Scope -> Scope
+ Agda.Syntax.Scope.Base: everythingInScopeQualified :: ScopeInfo -> NameSpace
+ Agda.Syntax.Scope.Base: instance Data.Data.Data Agda.Syntax.Scope.Base.NameMetadata
+ Agda.Syntax.Scope.Base: instance GHC.Show.Show Agda.Syntax.Scope.Base.NameMetadata
+ Agda.Syntax.Scope.Base: patternToModuleBound :: LocalVar -> LocalVar
+ Agda.Syntax.Scope.Base: type ModuleMap = Map ModuleName [QName]
+ Agda.Syntax.Scope.Base: type NameMap = Map QName (NonemptyList QName)
+ Agda.Syntax.Scope.Monad: LetOpenModule :: OpenKind
+ Agda.Syntax.Scope.Monad: TopOpenModule :: OpenKind
+ Agda.Syntax.Scope.Monad: bindName' :: Access -> KindOfName -> NameMetadata -> Name -> QName -> ScopeM ()
+ Agda.Syntax.Scope.Monad: computeFixitiesAndPolarities :: DoWarn -> [Declaration] -> ScopeM a -> ScopeM a
+ Agda.Syntax.Scope.Monad: data OpenKind
+ Agda.Syntax.Scope.Monad: freshAbstractQName' :: Name -> ScopeM QName
+ Agda.Syntax.Scope.Monad: getConcreteFixity :: Name -> ScopeM Fixity'
+ Agda.Syntax.Scope.Monad: getConcretePolarity :: Name -> ScopeM (Maybe [Occurrence])
+ Agda.Syntax.Scope.Monad: instance Agda.Syntax.Concrete.Fixity.MonadFixityError Agda.Syntax.Scope.Monad.ScopeM
+ Agda.Syntax.Scope.Monad: noGeneralizedVarsIfLetOpen :: OpenKind -> Scope -> Scope
+ Agda.Syntax.Translation.AbstractToConcrete: instance Agda.Syntax.Position.HasRange a => Agda.Syntax.Position.HasRange (Agda.Syntax.Translation.AbstractToConcrete.MaybeSection a)
+ Agda.Syntax.Translation.AbstractToConcrete: instance Agda.Syntax.Translation.AbstractToConcrete.ToConcrete (GHC.Maybe.Maybe Agda.Syntax.Abstract.Name.QName) (GHC.Maybe.Maybe Agda.Syntax.Concrete.Name.Name)
+ Agda.Syntax.Translation.AbstractToConcrete: instance Agda.Syntax.Translation.AbstractToConcrete.ToConcrete Agda.Syntax.Abstract.BindName Agda.Syntax.Concrete.BoundName
+ Agda.Syntax.Translation.AbstractToConcrete: instance Agda.Syntax.Translation.AbstractToConcrete.ToConcrete Agda.Syntax.Abstract.LamBinding Agda.Syntax.Concrete.LamBinding
+ Agda.Syntax.Translation.AbstractToConcrete: instance Agda.Syntax.Translation.AbstractToConcrete.ToConcrete Agda.Syntax.Translation.AbstractToConcrete.FreshenName Agda.Syntax.Abstract.Name.Name
+ Agda.Syntax.Translation.AbstractToConcrete: instance Data.Foldable.Foldable Agda.Syntax.Translation.AbstractToConcrete.MaybeSection
+ Agda.Syntax.Translation.AbstractToConcrete: instance Data.Traversable.Traversable Agda.Syntax.Translation.AbstractToConcrete.MaybeSection
+ Agda.Syntax.Translation.AbstractToConcrete: instance GHC.Base.Functor Agda.Syntax.Translation.AbstractToConcrete.MaybeSection
+ Agda.Syntax.Translation.AbstractToConcrete: instance GHC.Classes.Eq a => GHC.Classes.Eq (Agda.Syntax.Translation.AbstractToConcrete.MaybeSection a)
+ Agda.Syntax.Translation.AbstractToConcrete: instance GHC.Show.Show a => GHC.Show.Show (Agda.Syntax.Translation.AbstractToConcrete.MaybeSection a)
+ Agda.Syntax.Translation.ConcreteToAbstract: instance Agda.Syntax.Translation.ConcreteToAbstract.ToAbstract (Agda.Syntax.Translation.ConcreteToAbstract.NewName Agda.Syntax.Concrete.BoundName) Agda.Syntax.Abstract.BindName
+ Agda.Syntax.Translation.ConcreteToAbstract: instance Agda.Syntax.Translation.ConcreteToAbstract.ToAbstract Agda.Syntax.Translation.ConcreteToAbstract.GenTel Agda.Syntax.Abstract.GeneralizeTelescope
+ Agda.Syntax.Translation.ConcreteToAbstract: instance Agda.Syntax.Translation.ConcreteToAbstract.ToAbstract Agda.Syntax.Translation.ConcreteToAbstract.GenTelAndType (Agda.Syntax.Abstract.GeneralizeTelescope, Agda.Syntax.Abstract.Expr)
+ Agda.Syntax.Translation.ConcreteToAbstract: instance Agda.Syntax.Translation.ConcreteToAbstract.ToAbstract Agda.Syntax.Translation.ConcreteToAbstract.RecordConstructorType Agda.Syntax.Abstract.Expr
+ Agda.Syntax.Translation.ConcreteToAbstract: instance Agda.Syntax.Translation.ConcreteToAbstract.ToAbstract c a => Agda.Syntax.Translation.ConcreteToAbstract.ToAbstract (GHC.Maybe.Maybe c) (GHC.Maybe.Maybe a)
+ Agda.Syntax.Translation.InternalToAbstract: instance Agda.Syntax.Translation.InternalToAbstract.Binder Agda.Syntax.Abstract.BindName
+ Agda.Syntax.Translation.InternalToAbstract: instance Agda.Syntax.Translation.InternalToAbstract.BlankVars Agda.Syntax.Abstract.Pattern
+ Agda.Syntax.Translation.InternalToAbstract: instance Agda.Syntax.Translation.InternalToAbstract.Reify (Agda.Syntax.Abstract.Name.QNamed Agda.TypeChecking.Monad.Base.System) [Agda.Syntax.Abstract.Clause]
+ Agda.Syntax.Translation.ReflectedToAbstract: instance Agda.Syntax.Translation.ReflectedToAbstract.ToAbstract r Agda.Syntax.Abstract.Expr => Agda.Syntax.Translation.ReflectedToAbstract.ToAbstract (Agda.Syntax.Common.Dom r, Agda.Syntax.Abstract.Name.Name) Agda.Syntax.Abstract.TypedBinding
+ Agda.Syntax.Treeless: EagerEvaluation :: EvaluationStrategy
+ Agda.Syntax.Treeless: LazyEvaluation :: EvaluationStrategy
+ Agda.Syntax.Treeless: data EvaluationStrategy
+ Agda.Syntax.Treeless: instance GHC.Classes.Eq Agda.Syntax.Treeless.EvaluationStrategy
+ Agda.Syntax.Treeless: instance GHC.Show.Show Agda.Syntax.Treeless.EvaluationStrategy
+ Agda.Syntax.Treeless: pattern TPFn :: TPrim -> TTerm -> TTerm
+ Agda.Syntax.Treeless: pattern TPOp :: TPrim -> TTerm -> TTerm -> TTerm
+ Agda.Termination.Monad: instance Agda.TypeChecking.Monad.Base.MonadReduce Agda.Termination.Monad.TerM
+ Agda.Termination.Monad: instance Agda.TypeChecking.Monad.Base.MonadTCEnv Agda.Termination.Monad.TerM
+ Agda.Termination.Monad: instance Agda.TypeChecking.Monad.Base.MonadTCState Agda.Termination.Monad.TerM
+ Agda.Termination.Monad: instance Agda.TypeChecking.Monad.Base.ReadTCState Agda.Termination.Monad.TerM
+ Agda.Termination.Monad: instance Control.Monad.Fail.MonadFail Agda.Termination.Monad.TerM
+ Agda.TypeChecking.Abstract: instance Agda.TypeChecking.Abstract.AbsTerm a => Agda.TypeChecking.Abstract.AbsTerm (GHC.Maybe.Maybe a)
+ Agda.TypeChecking.CheckInternal: checkSort :: Action -> Sort -> TCM Sort
+ Agda.TypeChecking.CheckInternal: checkType' :: Type -> TCM Sort
+ Agda.TypeChecking.CheckInternal: shouldBeSort :: Type -> TCM Sort
+ Agda.TypeChecking.CompiledClause: [fallThrough] :: Case c -> Maybe Bool
+ Agda.TypeChecking.Constraints: solveSomeAwakeConstraints :: (ProblemConstraint -> Bool) -> Bool -> TCM ()
+ Agda.TypeChecking.Constraints: wakeConstraints' :: (ProblemConstraint -> TCM Bool) -> TCM ()
+ Agda.TypeChecking.Conversion: compareInterval :: Comparison -> Type -> Term -> Term -> TCM ()
+ Agda.TypeChecking.Conversion: compareTermOnFace :: Comparison -> Term -> Type -> Term -> Term -> TCM ()
+ Agda.TypeChecking.Conversion: compareTermOnFace' :: (Comparison -> Type -> Term -> Term -> TCM ()) -> Comparison -> Term -> Type -> Term -> Term -> TCM ()
+ Agda.TypeChecking.Conversion: equalTermOnFace :: Term -> Type -> Term -> Term -> TCM ()
+ Agda.TypeChecking.Conversion: forallFaceMaps :: Term -> (Map Int Bool -> MetaId -> Term -> TCM a) -> (Substitution -> TCM a) -> TCM [a]
+ Agda.TypeChecking.Conversion: isCanonical :: [Conj] -> Bool
+ Agda.TypeChecking.Conversion: leqConj :: Conj -> Conj -> TCM Bool
+ Agda.TypeChecking.Conversion: leqInterval :: [Conj] -> [Conj] -> TCM Bool
+ Agda.TypeChecking.Conversion: type Conj = (Map Int (Set Bool), [Term])
+ Agda.TypeChecking.Coverage.Match: BlockedOnApply :: ApplyOrIApply -> BlockedOnResult
+ Agda.TypeChecking.Coverage.Match: BlockedOnProj :: Bool -> BlockedOnResult
+ Agda.TypeChecking.Coverage.Match: IsApply :: ApplyOrIApply
+ Agda.TypeChecking.Coverage.Match: IsIApply :: ApplyOrIApply
+ Agda.TypeChecking.Coverage.Match: NotBlockedOnResult :: BlockedOnResult
+ Agda.TypeChecking.Coverage.Match: [blockedOnResultIApply] :: BlockedOnResult -> ApplyOrIApply
+ Agda.TypeChecking.Coverage.Match: [blockedOnResultOverlap] :: BlockedOnResult -> Bool
+ Agda.TypeChecking.Coverage.Match: data ApplyOrIApply
+ Agda.TypeChecking.Coverage.Match: data BlockedOnResult
+ Agda.TypeChecking.Coverage.Match: instance Agda.TypeChecking.Substitute.DeBruijn.DeBruijn Agda.TypeChecking.Coverage.Match.SplitPatVar
+ Agda.TypeChecking.Coverage.SplitTree: instance Agda.Syntax.Position.KillRange Agda.TypeChecking.Coverage.SplitTree.SplitTag
+ Agda.TypeChecking.Coverage.SplitTree: instance Agda.Syntax.Position.KillRange a => Agda.Syntax.Position.KillRange (Agda.TypeChecking.Coverage.SplitTree.SplitTree' a)
+ Agda.TypeChecking.Coverage.SplitTree: instance Data.Data.Data Agda.TypeChecking.Coverage.SplitTree.SplitTag
+ Agda.TypeChecking.Coverage.SplitTree: instance Data.Data.Data a => Data.Data.Data (Agda.TypeChecking.Coverage.SplitTree.SplitTree' a)
+ Agda.TypeChecking.Coverage.SplitTree: instance GHC.Show.Show a => GHC.Show.Show (Agda.TypeChecking.Coverage.SplitTree.SplitTree' a)
+ Agda.TypeChecking.Datatypes: consOfHIT :: QName -> TCM Bool
+ Agda.TypeChecking.DisplayForm: instance (Agda.TypeChecking.DisplayForm.SubstWithOrigin a, Agda.TypeChecking.DisplayForm.SubstWithOrigin (Agda.Syntax.Common.Arg a)) => Agda.TypeChecking.DisplayForm.SubstWithOrigin (Agda.Syntax.Internal.Elim' a)
+ Agda.TypeChecking.DropArgs: instance Agda.TypeChecking.DropArgs.DropArgs Agda.TypeChecking.Coverage.SplitTree.SplitTree
+ Agda.TypeChecking.DropArgs: instance Agda.TypeChecking.DropArgs.DropArgs a => Agda.TypeChecking.DropArgs.DropArgs (GHC.Maybe.Maybe a)
+ Agda.TypeChecking.Empty: ensureEmptyType :: Range -> Type -> TCM ()
+ Agda.TypeChecking.Empty: isEmptyTel :: Telescope -> TCM Bool
+ Agda.TypeChecking.Errors: instance Agda.TypeChecking.Errors.Verbalize Agda.Syntax.Common.Quantity
+ Agda.TypeChecking.EtaExpand: deepEtaExpand :: Term -> Type -> TCM Term
+ Agda.TypeChecking.EtaExpand: etaExpandAction :: Action
+ Agda.TypeChecking.EtaExpand: etaExpandOnce :: Type -> Term -> TCM Term
+ Agda.TypeChecking.Forcing: rebinds :: DeBruijnPattern -> DeBruijnPattern -> Bool
+ Agda.TypeChecking.Free: type MetaSet = Set MetaId
+ Agda.TypeChecking.Free.Lazy: instance Agda.TypeChecking.Free.Lazy.Free a => Agda.TypeChecking.Free.Lazy.Free (GHC.Maybe.Maybe a)
+ Agda.TypeChecking.Free.Old: instance Agda.TypeChecking.Free.Old.Free a => Agda.TypeChecking.Free.Old.Free (GHC.Maybe.Maybe a)
+ Agda.TypeChecking.Free.Precompute: instance Agda.TypeChecking.Free.Precompute.PrecomputeFreeVars a => Agda.TypeChecking.Free.Precompute.PrecomputeFreeVars (GHC.Maybe.Maybe a)
+ Agda.TypeChecking.Free.Reduce: MaybeFree :: MetaSet -> IsFree
+ Agda.TypeChecking.Free.Reduce: NotFree :: IsFree
+ Agda.TypeChecking.Free.Reduce: class (PrecomputeFreeVars a, Subst Term a) => ForceNotFree a
+ Agda.TypeChecking.Free.Reduce: data IsFree
+ Agda.TypeChecking.Free.Reduce: instance GHC.Classes.Eq Agda.TypeChecking.Free.Reduce.IsFree
+ Agda.TypeChecking.Free.Reduce: instance GHC.Show.Show Agda.TypeChecking.Free.Reduce.IsFree
+ Agda.TypeChecking.Generalize: generalizeTelescope :: Map QName Name -> (forall a. (Telescope -> TCM a) -> TCM a) -> ([Maybe Name] -> Telescope -> TCM a) -> TCM a
+ Agda.TypeChecking.Generalize: generalizeType :: Set QName -> TCM Type -> TCM ([Maybe QName], Type)
+ Agda.TypeChecking.Generalize: generalizeType' :: Set QName -> TCM (Type, a) -> TCM ([Maybe QName], Type, a)
+ Agda.TypeChecking.IApplyConfluence: checkIApplyConfluence :: QName -> Closure Clause -> TCM ()
+ Agda.TypeChecking.IApplyConfluence: checkIApplyConfluence_ :: QName -> TCM ()
+ Agda.TypeChecking.Implicit: insertImplicit' :: NamedArg e -> [Arg ArgName] -> ImplicitInsertion
+ Agda.TypeChecking.Implicit: pattern NoInsertNeeded :: ImplicitInsertion
+ Agda.TypeChecking.InstanceArguments: findInstance :: MetaId -> Maybe [Candidate] -> TCM ()
+ Agda.TypeChecking.InstanceArguments: isConsideringInstance :: (ReadTCState m, HasOptions m) => m Bool
+ Agda.TypeChecking.InstanceArguments: isInstanceConstraint :: Constraint -> Bool
+ Agda.TypeChecking.InstanceArguments: postponeInstanceConstraints :: TCM a -> TCM a
+ Agda.TypeChecking.Irrelevance: applyModalityToContext :: (MonadTCEnv tcm, LensModality m) => m -> tcm a -> tcm a
+ Agda.TypeChecking.Irrelevance: applyModalityToContextFunBody :: (MonadTCM tcm, LensModality r) => r -> tcm a -> tcm a
+ Agda.TypeChecking.Irrelevance: applyModalityToContextOnly :: MonadTCEnv tcm => Modality -> tcm a -> tcm a
+ Agda.TypeChecking.Irrelevance: applyModalityToJudgementOnly :: MonadTCEnv tcm => Modality -> tcm a -> tcm a
+ Agda.TypeChecking.Irrelevance: applyQuantityToContext :: (MonadTCEnv tcm, LensQuantity q) => q -> tcm a -> tcm a
+ Agda.TypeChecking.Irrelevance: applyQuantityToContextOnly :: MonadTCEnv tcm => Quantity -> tcm a -> tcm a
+ Agda.TypeChecking.Irrelevance: applyQuantityToJudgementOnly :: MonadTCEnv tcm => Quantity -> tcm a -> tcm a
+ Agda.TypeChecking.Irrelevance: applyRelevanceToContextFunBody :: (MonadTCM tcm, LensRelevance r) => r -> tcm a -> tcm a
+ Agda.TypeChecking.Irrelevance: applyRelevanceToContextOnly :: MonadTCEnv tcm => Relevance -> tcm a -> tcm a
+ Agda.TypeChecking.Irrelevance: applyRelevanceToJudgementOnly :: MonadTCEnv tcm => Relevance -> tcm a -> tcm a
+ Agda.TypeChecking.Irrelevance: class UsableModality a
+ Agda.TypeChecking.Irrelevance: instance (Agda.TypeChecking.Irrelevance.UsableModality a, Agda.TypeChecking.Irrelevance.UsableModality b) => Agda.TypeChecking.Irrelevance.UsableModality (a, b)
+ Agda.TypeChecking.Irrelevance: instance (Agda.TypeChecking.Substitute.Class.Subst t a, Agda.TypeChecking.Irrelevance.UsableModality a) => Agda.TypeChecking.Irrelevance.UsableModality (Agda.Syntax.Internal.Abs a)
+ Agda.TypeChecking.Irrelevance: instance Agda.TypeChecking.Irrelevance.UsableModality Agda.Syntax.Internal.Level
+ Agda.TypeChecking.Irrelevance: instance Agda.TypeChecking.Irrelevance.UsableModality Agda.Syntax.Internal.Sort
+ Agda.TypeChecking.Irrelevance: instance Agda.TypeChecking.Irrelevance.UsableModality Agda.Syntax.Internal.Term
+ Agda.TypeChecking.Irrelevance: instance Agda.TypeChecking.Irrelevance.UsableModality a => Agda.TypeChecking.Irrelevance.UsableModality (Agda.Syntax.Common.Arg a)
+ Agda.TypeChecking.Irrelevance: instance Agda.TypeChecking.Irrelevance.UsableModality a => Agda.TypeChecking.Irrelevance.UsableModality (Agda.Syntax.Common.Dom a)
+ Agda.TypeChecking.Irrelevance: instance Agda.TypeChecking.Irrelevance.UsableModality a => Agda.TypeChecking.Irrelevance.UsableModality (Agda.Syntax.Internal.Elim' a)
+ Agda.TypeChecking.Irrelevance: instance Agda.TypeChecking.Irrelevance.UsableModality a => Agda.TypeChecking.Irrelevance.UsableModality [a]
+ Agda.TypeChecking.Irrelevance: instance Agda.TypeChecking.Irrelevance.UsableRelevance a => Agda.TypeChecking.Irrelevance.UsableModality (Agda.Syntax.Internal.Type' a)
+ Agda.TypeChecking.Irrelevance: isIrrelevantOrPropM :: (LensRelevance a, LensSort a, MonadReduce m) => a -> m Bool
+ Agda.TypeChecking.Irrelevance: isPropM :: (LensSort a, MonadReduce m) => a -> m Bool
+ Agda.TypeChecking.Irrelevance: usableMod :: UsableModality a => Modality -> a -> TCM Bool
+ Agda.TypeChecking.MetaVars: newInstanceMeta :: MetaNameSuggestion -> Type -> TCM (MetaId, Term)
+ Agda.TypeChecking.MetaVars: newInstanceMetaCtx :: MetaNameSuggestion -> Type -> Args -> TCM (MetaId, Term)
+ Agda.TypeChecking.MetaVars.Mention: instance Agda.TypeChecking.MetaVars.Mention.MentionsMeta t => Agda.TypeChecking.MetaVars.Mention.MentionsMeta (GHC.Maybe.Maybe t)
+ Agda.TypeChecking.MetaVars.Occurs: instance Agda.TypeChecking.MetaVars.Occurs.Occurs a => Agda.TypeChecking.MetaVars.Occurs.Occurs (GHC.Maybe.Maybe a)
+ Agda.TypeChecking.Monad.Base: CannotCreateMissingClause :: QName -> (Telescope, [NamedArg DeBruijnPattern]) -> Doc -> Closure (Abs Type) -> SplitError
+ Agda.TypeChecking.Monad.Base: CantGeneralizeOverSorts :: [MetaId] -> Warning
+ Agda.TypeChecking.Monad.Base: CheckConstructorFitsIn :: QName -> Type -> Sort -> Call
+ Agda.TypeChecking.Monad.Base: CheckProjAppToKnownPrincipalArg :: Comparison -> Expr -> ProjOrigin -> NonemptyList QName -> Args -> Type -> Int -> Term -> Type -> TypeCheckingProblem
+ Agda.TypeChecking.Monad.Base: CoInfectiveImport :: String -> ModuleName -> Warning
+ Agda.TypeChecking.Monad.Base: CompKit :: Maybe QName -> Maybe QName -> CompKit
+ Agda.TypeChecking.Monad.Base: CosplitCatchall :: SplitError
+ Agda.TypeChecking.Monad.Base: CosplitNoRecordType :: Closure Type -> SplitError
+ Agda.TypeChecking.Monad.Base: CosplitNoTarget :: SplitError
+ Agda.TypeChecking.Monad.Base: DataOrRecSig :: Int -> Defn
+ Agda.TypeChecking.Monad.Base: DoQuoteTerm :: Comparison -> Term -> Type -> TypeCheckingProblem
+ Agda.TypeChecking.Monad.Base: DuplicatePrimitiveBinding :: String -> QName -> QName -> TypeError
+ Agda.TypeChecking.Monad.Base: ErasedDatatype :: Closure Type -> SplitError
+ Agda.TypeChecking.Monad.Base: FindInstance :: MetaId -> Maybe MetaId -> Maybe [Candidate] -> Constraint
+ Agda.TypeChecking.Monad.Base: GeneralizableVar :: Defn
+ Agda.TypeChecking.Monad.Base: GeneralizeCyclicDependency :: TypeError
+ Agda.TypeChecking.Monad.Base: GeneralizeNotSupportedHere :: QName -> TypeError
+ Agda.TypeChecking.Monad.Base: GeneralizeUnsolvedMeta :: TypeError
+ Agda.TypeChecking.Monad.Base: GeneralizedValue :: CheckpointId -> Term -> Type -> GeneralizedValue
+ Agda.TypeChecking.Monad.Base: IllformedAsClause :: String -> Warning
+ Agda.TypeChecking.Monad.Base: InfectiveImport :: String -> ModuleName -> Warning
+ Agda.TypeChecking.Monad.Base: InstanceArgWithExplicitArg :: Doc -> Warning
+ Agda.TypeChecking.Monad.Base: InstanceNoCandidate :: Type -> [(Term, TCErr)] -> TypeError
+ Agda.TypeChecking.Monad.Base: InstanceNoOutputTypeName :: Doc -> Warning
+ Agda.TypeChecking.Monad.Base: InstanceWithExplicitArg :: QName -> Warning
+ Agda.TypeChecking.Monad.Base: LibraryWarning :: LibWarning -> Warning
+ Agda.TypeChecking.Monad.Base: MultipleFixityDecls :: [(Name, [Fixity'])] -> TypeError
+ Agda.TypeChecking.Monad.Base: MultiplePolarityPragmas :: [Name] -> TypeError
+ Agda.TypeChecking.Monad.Base: NeedOptionProp :: TypeError
+ Agda.TypeChecking.Monad.Base: NoGeneralizableArgs :: NumGeneralizableArgs
+ Agda.TypeChecking.Monad.Base: NoGeneralize :: DoGeneralize
+ Agda.TypeChecking.Monad.Base: OpenInstance :: MetaInstantiation
+ Agda.TypeChecking.Monad.Base: SafeFlagNoUniverseCheck :: Warning
+ Agda.TypeChecking.Monad.Base: SafeFlagWithoutKFlagPrimEraseEquality :: Warning
+ Agda.TypeChecking.Monad.Base: ShouldBePath :: Type -> TypeError
+ Agda.TypeChecking.Monad.Base: SomeGeneralizableArgs :: Int -> NumGeneralizableArgs
+ Agda.TypeChecking.Monad.Base: System :: Telescope -> [(Face, Term)] -> System
+ Agda.TypeChecking.Monad.Base: TriedToCopyConstrainedPrim :: QName -> TypeError
+ Agda.TypeChecking.Monad.Base: ValueCmpOnFace :: Comparison -> Term -> Type -> Term -> Term -> Constraint
+ Agda.TypeChecking.Monad.Base: VariableIsErased :: Name -> TypeError
+ Agda.TypeChecking.Monad.Base: WithoutKFlagPrimEraseEquality :: Warning
+ Agda.TypeChecking.Monad.Base: WrongQuantityInLambda :: TypeError
+ Agda.TypeChecking.Monad.Base: YesGeneralize :: DoGeneralize
+ Agda.TypeChecking.Monad.Base: [conComp] :: Defn -> (CompKit, Maybe [QName])
+ Agda.TypeChecking.Monad.Base: [dataPathCons] :: Defn -> [QName]
+ Agda.TypeChecking.Monad.Base: [datarecPars] :: Defn -> Int
+ Agda.TypeChecking.Monad.Base: [defArgGeneralizable] :: Definition -> NumGeneralizableArgs
+ Agda.TypeChecking.Monad.Base: [defGeneralizedParams] :: Definition -> [Maybe Name]
+ Agda.TypeChecking.Monad.Base: [defNoCompilation] :: Definition -> Bool
+ Agda.TypeChecking.Monad.Base: [envCheckOptionConsistency] :: TCEnv -> Bool
+ Agda.TypeChecking.Monad.Base: [envGeneralizeMetas] :: TCEnv -> DoGeneralize
+ Agda.TypeChecking.Monad.Base: [envGeneralizedVars] :: TCEnv -> Map QName GeneralizedValue
+ Agda.TypeChecking.Monad.Base: [envModality] :: TCEnv -> Modality
+ Agda.TypeChecking.Monad.Base: [extLamSys] :: ExtLamInfo -> !Maybe System
+ Agda.TypeChecking.Monad.Base: [funCovering] :: Defn -> [Closure Clause]
+ Agda.TypeChecking.Monad.Base: [funSplitTree] :: Defn -> Maybe SplitTree
+ Agda.TypeChecking.Monad.Base: [genvalCheckpoint] :: GeneralizedValue -> CheckpointId
+ Agda.TypeChecking.Monad.Base: [genvalTerm] :: GeneralizedValue -> Term
+ Agda.TypeChecking.Monad.Base: [genvalType] :: GeneralizedValue -> Type
+ Agda.TypeChecking.Monad.Base: [iFileType] :: Interface -> FileType
+ Agda.TypeChecking.Monad.Base: [iOptionsUsed] :: Interface -> PragmaOptions
+ Agda.TypeChecking.Monad.Base: [iSource] :: Interface -> Text
+ Agda.TypeChecking.Monad.Base: [miGeneralizable] :: MetaInfo -> Arg DoGeneralize
+ Agda.TypeChecking.Monad.Base: [miPrimitive] :: ModuleInfo -> Bool
+ Agda.TypeChecking.Monad.Base: [nameOfHComp] :: CompKit -> Maybe QName
+ Agda.TypeChecking.Monad.Base: [nameOfTransp] :: CompKit -> Maybe QName
+ Agda.TypeChecking.Monad.Base: [recComp] :: Defn -> CompKit
+ Agda.TypeChecking.Monad.Base: [stPostConcreteNames] :: PostScopeState -> !Map Name [Name]
+ Agda.TypeChecking.Monad.Base: [stPostConsideringInstance] :: PostScopeState -> !Bool
+ Agda.TypeChecking.Monad.Base: [stPostShadowingNames] :: PostScopeState -> !Map Name [Name]
+ Agda.TypeChecking.Monad.Base: [stPreGeneralizedVars] :: PreScopeState -> !Maybe (Set QName)
+ Agda.TypeChecking.Monad.Base: [systemClauses] :: System -> [(Face, Term)]
+ Agda.TypeChecking.Monad.Base: [systemTel] :: System -> Telescope
+ Agda.TypeChecking.Monad.Base: askR :: ReduceM ReduceEnv
+ Agda.TypeChecking.Monad.Base: askTC :: MonadTCEnv m => m TCEnv
+ Agda.TypeChecking.Monad.Base: asksTC :: MonadTCEnv m => (TCEnv -> a) -> m a
+ Agda.TypeChecking.Monad.Base: class (Applicative m, MonadTCEnv m, ReadTCState m, HasOptions m) => MonadReduce m
+ Agda.TypeChecking.Monad.Base: class Monad m => MonadTCEnv m
+ Agda.TypeChecking.Monad.Base: class Monad m => MonadTCState m
+ Agda.TypeChecking.Monad.Base: data CompKit
+ Agda.TypeChecking.Monad.Base: data DoGeneralize
+ Agda.TypeChecking.Monad.Base: data GeneralizedValue
+ Agda.TypeChecking.Monad.Base: data NumGeneralizableArgs
+ Agda.TypeChecking.Monad.Base: data System
+ Agda.TypeChecking.Monad.Base: eGeneralizeMetas :: Lens' DoGeneralize TCEnv
+ Agda.TypeChecking.Monad.Base: eGeneralizedVars :: Lens' (Map QName GeneralizedValue) TCEnv
+ Agda.TypeChecking.Monad.Base: eModality :: Lens' Modality TCEnv
+ Agda.TypeChecking.Monad.Base: eQuantity :: Lens' Quantity TCEnv
+ Agda.TypeChecking.Monad.Base: emptyCompKit :: CompKit
+ Agda.TypeChecking.Monad.Base: envRelevance :: TCEnv -> Relevance
+ Agda.TypeChecking.Monad.Base: freshRecordName :: MonadTCState m => m Name
+ Agda.TypeChecking.Monad.Base: generalizedFieldName :: String
+ Agda.TypeChecking.Monad.Base: getGeneralizedFieldName :: QName -> Maybe String
+ Agda.TypeChecking.Monad.Base: getMetaModality :: MetaVariable -> Modality
+ Agda.TypeChecking.Monad.Base: getTC :: MonadTCState m => m TCState
+ Agda.TypeChecking.Monad.Base: getsTC :: MonadTCState m => (TCState -> a) -> m a
+ Agda.TypeChecking.Monad.Base: guardednessOption :: HasOptions m => m Bool
+ Agda.TypeChecking.Monad.Base: infix 4 `setTCLens`
+ Agda.TypeChecking.Monad.Base: instance (Data.String.IsString a, Control.Monad.IO.Class.MonadIO m) => Data.String.IsString (Agda.TypeChecking.Monad.Base.TCMT m a)
+ Agda.TypeChecking.Monad.Base: instance (GHC.Base.Monoid w, Agda.TypeChecking.Monad.Base.MonadReduce m) => Agda.TypeChecking.Monad.Base.MonadReduce (Control.Monad.Trans.Writer.Lazy.WriterT w m)
+ Agda.TypeChecking.Monad.Base: instance (GHC.Base.Monoid w, Agda.TypeChecking.Monad.Base.MonadTCEnv m) => Agda.TypeChecking.Monad.Base.MonadTCEnv (Control.Monad.Trans.Writer.Lazy.WriterT w m)
+ Agda.TypeChecking.Monad.Base: instance (GHC.Base.Monoid w, Agda.TypeChecking.Monad.Base.MonadTCState m) => Agda.TypeChecking.Monad.Base.MonadTCState (Control.Monad.Trans.Writer.Lazy.WriterT w m)
+ Agda.TypeChecking.Monad.Base: instance (GHC.Base.Monoid w, Agda.TypeChecking.Monad.Base.ReadTCState m) => Agda.TypeChecking.Monad.Base.ReadTCState (Control.Monad.Trans.Writer.Lazy.WriterT w m)
+ Agda.TypeChecking.Monad.Base: instance Agda.Syntax.Position.KillRange Agda.TypeChecking.Monad.Base.CompKit
+ Agda.TypeChecking.Monad.Base: instance Agda.Syntax.Position.KillRange Agda.TypeChecking.Monad.Base.DoGeneralize
+ Agda.TypeChecking.Monad.Base: instance Agda.Syntax.Position.KillRange Agda.TypeChecking.Monad.Base.NumGeneralizableArgs
+ Agda.TypeChecking.Monad.Base: instance Agda.Syntax.Position.KillRange Agda.TypeChecking.Monad.Base.System
+ Agda.TypeChecking.Monad.Base: instance Agda.Syntax.Position.KillRange a => Agda.Syntax.Position.KillRange (Agda.TypeChecking.Monad.Base.Closure a)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.HasOptions Agda.TypeChecking.Monad.Base.ReduceM
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadReduce Agda.TypeChecking.Monad.Base.ReduceM
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadReduce m => Agda.TypeChecking.Monad.Base.MonadReduce (Agda.Utils.ListT.ListT m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadReduce m => Agda.TypeChecking.Monad.Base.MonadReduce (Control.Monad.Trans.Except.ExceptT err m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadReduce m => Agda.TypeChecking.Monad.Base.MonadReduce (Control.Monad.Trans.Maybe.MaybeT m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadReduce m => Agda.TypeChecking.Monad.Base.MonadReduce (Control.Monad.Trans.Reader.ReaderT r m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadReduce m => Agda.TypeChecking.Monad.Base.MonadReduce (Control.Monad.Trans.State.Lazy.StateT w m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadTCEnv Agda.TypeChecking.Monad.Base.ReduceM
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadTCEnv m => Agda.TypeChecking.Monad.Base.MonadTCEnv (Agda.Utils.ListT.ListT m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadTCEnv m => Agda.TypeChecking.Monad.Base.MonadTCEnv (Control.Monad.Trans.Except.ExceptT err m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadTCEnv m => Agda.TypeChecking.Monad.Base.MonadTCEnv (Control.Monad.Trans.Maybe.MaybeT m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadTCEnv m => Agda.TypeChecking.Monad.Base.MonadTCEnv (Control.Monad.Trans.Reader.ReaderT r m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadTCEnv m => Agda.TypeChecking.Monad.Base.MonadTCEnv (Control.Monad.Trans.State.Lazy.StateT s m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadTCM tcm => Agda.TypeChecking.Monad.Base.MonadTCM (Control.Monad.Trans.Reader.ReaderT r tcm)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadTCM tcm => Agda.TypeChecking.Monad.Base.MonadTCM (Control.Monad.Trans.State.Lazy.StateT s tcm)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadTCState m => Agda.TypeChecking.Monad.Base.MonadTCState (Agda.Utils.ListT.ListT m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadTCState m => Agda.TypeChecking.Monad.Base.MonadTCState (Control.Monad.Trans.Except.ExceptT err m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadTCState m => Agda.TypeChecking.Monad.Base.MonadTCState (Control.Monad.Trans.Maybe.MaybeT m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadTCState m => Agda.TypeChecking.Monad.Base.MonadTCState (Control.Monad.Trans.Reader.ReaderT r m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.MonadTCState m => Agda.TypeChecking.Monad.Base.MonadTCState (Control.Monad.Trans.State.Lazy.StateT s m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.ReadTCState m => Agda.TypeChecking.Monad.Base.ReadTCState (Agda.Utils.ListT.ListT m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.ReadTCState m => Agda.TypeChecking.Monad.Base.ReadTCState (Control.Monad.Trans.Except.ExceptT err m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.ReadTCState m => Agda.TypeChecking.Monad.Base.ReadTCState (Control.Monad.Trans.Maybe.MaybeT m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.ReadTCState m => Agda.TypeChecking.Monad.Base.ReadTCState (Control.Monad.Trans.Reader.ReaderT r m)
+ Agda.TypeChecking.Monad.Base: instance Agda.TypeChecking.Monad.Base.ReadTCState m => Agda.TypeChecking.Monad.Base.ReadTCState (Control.Monad.Trans.State.Lazy.StateT s m)
+ Agda.TypeChecking.Monad.Base: instance Control.Monad.Fail.MonadFail Agda.TypeChecking.Monad.Base.ReduceM
+ Agda.TypeChecking.Monad.Base: instance Control.Monad.IO.Class.MonadIO m => Agda.TypeChecking.Monad.Base.MonadReduce (Agda.TypeChecking.Monad.Base.TCMT m)
+ Agda.TypeChecking.Monad.Base: instance Control.Monad.IO.Class.MonadIO m => Agda.TypeChecking.Monad.Base.MonadTCEnv (Agda.TypeChecking.Monad.Base.TCMT m)
+ Agda.TypeChecking.Monad.Base: instance Control.Monad.IO.Class.MonadIO m => Agda.TypeChecking.Monad.Base.MonadTCState (Agda.TypeChecking.Monad.Base.TCMT m)
+ Agda.TypeChecking.Monad.Base: instance Control.Monad.IO.Class.MonadIO m => Control.Monad.Fail.MonadFail (Agda.TypeChecking.Monad.Base.TCMT m)
+ Agda.TypeChecking.Monad.Base: instance Data.Data.Data Agda.TypeChecking.Monad.Base.CompKit
+ Agda.TypeChecking.Monad.Base: instance Data.Data.Data Agda.TypeChecking.Monad.Base.DoGeneralize
+ Agda.TypeChecking.Monad.Base: instance Data.Data.Data Agda.TypeChecking.Monad.Base.GeneralizedValue
+ Agda.TypeChecking.Monad.Base: instance Data.Data.Data Agda.TypeChecking.Monad.Base.NumGeneralizableArgs
+ Agda.TypeChecking.Monad.Base: instance Data.Data.Data Agda.TypeChecking.Monad.Base.System
+ Agda.TypeChecking.Monad.Base: instance GHC.Classes.Eq Agda.TypeChecking.Monad.Base.CompKit
+ Agda.TypeChecking.Monad.Base: instance GHC.Classes.Eq Agda.TypeChecking.Monad.Base.DoGeneralize
+ Agda.TypeChecking.Monad.Base: instance GHC.Classes.Ord Agda.TypeChecking.Monad.Base.CompKit
+ Agda.TypeChecking.Monad.Base: instance GHC.Classes.Ord Agda.TypeChecking.Monad.Base.DoGeneralize
+ Agda.TypeChecking.Monad.Base: instance GHC.Exception.Type.Exception Agda.TypeChecking.Monad.Base.TCErr
+ Agda.TypeChecking.Monad.Base: instance GHC.Show.Show Agda.TypeChecking.Monad.Base.CompKit
+ Agda.TypeChecking.Monad.Base: instance GHC.Show.Show Agda.TypeChecking.Monad.Base.DoGeneralize
+ Agda.TypeChecking.Monad.Base: instance GHC.Show.Show Agda.TypeChecking.Monad.Base.GeneralizedValue
+ Agda.TypeChecking.Monad.Base: instance GHC.Show.Show Agda.TypeChecking.Monad.Base.NumGeneralizableArgs
+ Agda.TypeChecking.Monad.Base: instance GHC.Show.Show Agda.TypeChecking.Monad.Base.System
+ Agda.TypeChecking.Monad.Base: isExtendedLambdaName :: QName -> Bool
+ Agda.TypeChecking.Monad.Base: liftReduce :: MonadReduce m => ReduceM a -> m a
+ Agda.TypeChecking.Monad.Base: localR :: (ReduceEnv -> ReduceEnv) -> ReduceM a -> ReduceM a
+ Agda.TypeChecking.Monad.Base: localTC :: MonadTCEnv m => (TCEnv -> TCEnv) -> m a -> m a
+ Agda.TypeChecking.Monad.Base: locallyTC :: MonadTCEnv m => Lens' a TCEnv -> (a -> a) -> m b -> m b
+ Agda.TypeChecking.Monad.Base: locallyTCState :: MonadTCState m => Lens' a TCState -> (a -> a) -> m b -> m b
+ Agda.TypeChecking.Monad.Base: metaFrozen :: Lens' Frozen MetaVariable
+ Agda.TypeChecking.Monad.Base: modifySystem :: (System -> System) -> ExtLamInfo -> ExtLamInfo
+ Agda.TypeChecking.Monad.Base: modifyTC :: MonadTCState m => (TCState -> TCState) -> m ()
+ Agda.TypeChecking.Monad.Base: modifyTC' :: MonadTCState m => (TCState -> TCState) -> m ()
+ Agda.TypeChecking.Monad.Base: modifyTCLens :: MonadTCState m => Lens' a TCState -> (a -> a) -> m ()
+ Agda.TypeChecking.Monad.Base: modifyTCLensM :: MonadTCState m => Lens' a TCState -> (a -> m a) -> m ()
+ Agda.TypeChecking.Monad.Base: primFun :: QName -> Arity -> ([Arg Term] -> ReduceM (Reduced MaybeReducedArgs Term)) -> PrimFun
+ Agda.TypeChecking.Monad.Base: putTC :: MonadTCState m => TCState -> m ()
+ Agda.TypeChecking.Monad.Base: setTCLens :: MonadTCState m => Lens' a TCState -> a -> m ()
+ Agda.TypeChecking.Monad.Base: sizedTypesOption :: HasOptions m => m Bool
+ Agda.TypeChecking.Monad.Base: stConcreteNames :: Lens' (Map Name [Name]) TCState
+ Agda.TypeChecking.Monad.Base: stConsideringInstance :: Lens' Bool TCState
+ Agda.TypeChecking.Monad.Base: stGeneralizedVars :: Lens' (Maybe (Set QName)) TCState
+ Agda.TypeChecking.Monad.Base: stShadowingNames :: Lens' (Map Name [Name]) TCState
+ Agda.TypeChecking.Monad.Base: type Face = [(Term, Bool)]
+ Agda.TypeChecking.Monad.Base: useR :: ReadTCState m => Lens' a TCState -> m a
+ Agda.TypeChecking.Monad.Base: useTC :: MonadTCState m => Lens' a TCState -> m a
+ Agda.TypeChecking.Monad.Base: viewTC :: MonadTCEnv m => Lens' a TCEnv -> m a
+ Agda.TypeChecking.Monad.Base: withTCState :: ReadTCState m => (TCState -> TCState) -> m a -> m a
+ Agda.TypeChecking.Monad.Base: withoutKOption :: HasOptions m => m Bool
+ Agda.TypeChecking.Monad.Builtin: boldPathView :: Type -> PathView
+ Agda.TypeChecking.Monad.Builtin: constrainedPrims :: [String]
+ Agda.TypeChecking.Monad.Builtin: getBuiltinName' :: HasBuiltins m => String -> m (Maybe QName)
+ Agda.TypeChecking.Monad.Builtin: getName' :: HasBuiltins m => String -> m (Maybe QName)
+ Agda.TypeChecking.Monad.Builtin: getNameOfConstrained :: HasBuiltins m => String -> m (Maybe QName)
+ Agda.TypeChecking.Monad.Builtin: getPrimName :: Term -> QName
+ Agda.TypeChecking.Monad.Builtin: getPrimitiveName' :: HasBuiltins m => String -> m (Maybe QName)
+ Agda.TypeChecking.Monad.Builtin: getPrimitiveTerm :: String -> TCM Term
+ Agda.TypeChecking.Monad.Builtin: getPrimitiveTerm' :: HasBuiltins m => String -> m (Maybe Term)
+ Agda.TypeChecking.Monad.Builtin: getTerm :: HasBuiltins m => String -> String -> m Term
+ Agda.TypeChecking.Monad.Builtin: getTerm' :: HasBuiltins m => String -> m (Maybe Term)
+ Agda.TypeChecking.Monad.Builtin: idViewAsPath :: HasBuiltins m => Type -> m PathView
+ Agda.TypeChecking.Monad.Builtin: instance Agda.TypeChecking.Monad.Builtin.HasBuiltins m => Agda.TypeChecking.Monad.Builtin.HasBuiltins (Control.Monad.Trans.Except.ExceptT e m)
+ Agda.TypeChecking.Monad.Builtin: instance Agda.TypeChecking.Monad.Builtin.HasBuiltins m => Agda.TypeChecking.Monad.Builtin.HasBuiltins (Control.Monad.Trans.State.Lazy.StateT s m)
+ Agda.TypeChecking.Monad.Builtin: intervalUnview :: HasBuiltins m => IntervalView -> m Term
+ Agda.TypeChecking.Monad.Builtin: intervalUnview' :: HasBuiltins m => m (IntervalView -> Term)
+ Agda.TypeChecking.Monad.Builtin: intervalView :: HasBuiltins m => Term -> m IntervalView
+ Agda.TypeChecking.Monad.Builtin: intervalView' :: HasBuiltins m => m (Term -> IntervalView)
+ Agda.TypeChecking.Monad.Builtin: isPrimitive :: HasBuiltins m => String -> QName -> m Bool
+ Agda.TypeChecking.Monad.Builtin: pathUnview :: PathView -> Type
+ Agda.TypeChecking.Monad.Builtin: pathView :: HasBuiltins m => Type -> m PathView
+ Agda.TypeChecking.Monad.Builtin: pathView' :: HasBuiltins m => m (Type -> PathView)
+ Agda.TypeChecking.Monad.Builtin: primAgdaTCMNoConstraints :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primAgdaTCMRunSpeculative :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primConId :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primEquiv :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primEquivFun :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primEquivProof :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primFaceForall :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primGlue :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primHComp :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primIMax :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primIMin :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primINeg :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primIOne :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primIZero :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primId :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primIdElim :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primInterval :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primIsOne :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primIsOne1 :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primIsOne2 :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primIsOneEmpty :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primItIsOne :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primPartial :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primPartialP :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primPath :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primPathP :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primPathToEquiv :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primSetOmega :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primSigma :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primSub :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primSubIn :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primSubOut :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: primTrans :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: prim_glue :: TCM Term
+ Agda.TypeChecking.Monad.Builtin: prim_unglue :: TCM Term
+ Agda.TypeChecking.Monad.Caching: withoutCache :: TCM a -> TCM a
+ Agda.TypeChecking.Monad.Constraints: takeAwakeConstraint' :: (ProblemConstraint -> Bool) -> TCM (Maybe ProblemConstraint)
+ Agda.TypeChecking.Monad.Context: addLetBinding' :: MonadTCM tcm => Name -> Term -> Dom Type -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Context: addRecordNameContext :: (MonadDebug m, MonadTCM m) => Dom Type -> m b -> m b
+ Agda.TypeChecking.Monad.Context: checkpointSubstitution' :: MonadTCEnv tcm => CheckpointId -> tcm (Maybe Substitution)
+ Agda.TypeChecking.Monad.Context: getLetBindings :: MonadTCM tcm => tcm [(Name, (Term, Dom Type))]
+ Agda.TypeChecking.Monad.Context: instance Agda.TypeChecking.Monad.Context.AddContext ([Agda.Syntax.Common.Arg Agda.Syntax.Abstract.Name.Name], Agda.Syntax.Internal.Type)
+ Agda.TypeChecking.Monad.Context: instance Agda.TypeChecking.Monad.Context.AddContext ([Agda.Syntax.Common.NamedArg Agda.Syntax.Abstract.Name.Name], Agda.Syntax.Internal.Type)
+ Agda.TypeChecking.Monad.Context: underAbstractionAbs :: (Subst t a, MonadTCM tcm, MonadDebug tcm) => Dom Type -> Abs a -> (a -> tcm b) -> tcm b
+ Agda.TypeChecking.Monad.Context: underAbstractionAbs' :: (Subst t a, MonadTCM tcm, MonadDebug tcm, AddContext (name, Dom Type)) => (String -> name) -> Dom Type -> Abs a -> (a -> tcm b) -> tcm b
+ Agda.TypeChecking.Monad.Env: getCurrentPath :: MonadTCEnv m => m AbsolutePath
+ Agda.TypeChecking.Monad.Env: withoutOptionsChecking :: TCM a -> TCM a
+ Agda.TypeChecking.Monad.Imports: mapVisitedModule :: TopLevelModuleName -> (ModuleInfo -> ModuleInfo) -> TCM ()
+ Agda.TypeChecking.Monad.MetaVars: constraintMetas :: Constraint -> TCM (Set MetaId)
+ Agda.TypeChecking.Monad.MetaVars: getMetaContextArgs :: MetaVariable -> TCM Args
+ Agda.TypeChecking.Monad.MetaVars: getMetaVariableSet :: TCM IntSet
+ Agda.TypeChecking.Monad.MetaVars: getMetaVariables :: (MetaVariable -> Bool) -> TCM [MetaId]
+ Agda.TypeChecking.Monad.MetaVars: insertMetaVar :: MetaId -> MetaVariable -> TCM ()
+ Agda.TypeChecking.Monad.MetaVars: instance Agda.TypeChecking.Monad.MetaVars.IsInstantiatedMeta a => Agda.TypeChecking.Monad.MetaVars.IsInstantiatedMeta (GHC.Maybe.Maybe a)
+ Agda.TypeChecking.Monad.MetaVars: lookupMeta' :: MetaId -> TCM (Maybe MetaVariable)
+ Agda.TypeChecking.Monad.MetaVars: setMetaArgInfo :: MetaId -> ArgInfo -> TCM ()
+ Agda.TypeChecking.Monad.Options: ignoreAllInterfaces :: TCM Bool
+ Agda.TypeChecking.Monad.Options: isPropEnabled :: HasOptions m => m Bool
+ Agda.TypeChecking.Monad.Signature: addDataCons :: QName -> [QName] -> TCM ()
+ Agda.TypeChecking.Monad.Signature: instance Agda.TypeChecking.Monad.Signature.HasConstInfo m => Agda.TypeChecking.Monad.Signature.HasConstInfo (Control.Monad.Trans.Reader.ReaderT r m)
+ Agda.TypeChecking.Monad.Signature: instance Agda.TypeChecking.Monad.Signature.HasConstInfo m => Agda.TypeChecking.Monad.Signature.HasConstInfo (Control.Monad.Trans.State.Lazy.StateT s m)
+ Agda.TypeChecking.Monad.Signature: modalityOfConst :: QName -> TCM Modality
+ Agda.TypeChecking.Monad.Signature: setCompiledClauses :: QName -> CompiledClauses -> TCM ()
+ Agda.TypeChecking.Monad.Signature: setSplitTree :: QName -> SplitTree -> TCM ()
+ Agda.TypeChecking.Monad.SizedTypes: instance Agda.Utils.Pretty.Pretty Agda.TypeChecking.Monad.SizedTypes.DeepSizeView
+ Agda.TypeChecking.Monad.SizedTypes: type SizeMaxView' = [DeepSizeView]
+ Agda.TypeChecking.Monad.State: SpeculateAbort :: SpeculateResult
+ Agda.TypeChecking.Monad.State: SpeculateCommit :: SpeculateResult
+ Agda.TypeChecking.Monad.State: data SpeculateResult
+ Agda.TypeChecking.Monad.State: speculateTCState :: TCM (a, SpeculateResult) -> TCM a
+ Agda.TypeChecking.Monad.State: speculateTCState_ :: TCM SpeculateResult -> TCM ()
+ Agda.TypeChecking.Monad.State: updateCovering :: ([Closure Clause] -> [Closure Clause]) -> Defn -> Defn
+ Agda.TypeChecking.Names: NamesT :: ReaderT Names m a -> NamesT m a
+ Agda.TypeChecking.Names: [unName] :: NamesT m a -> ReaderT Names m a
+ Agda.TypeChecking.Names: bind :: (Monad m, Subst t' b, DeBruijn b, Subst t a, Free a) => ArgName -> (NamesT m b -> NamesT m a) -> NamesT m (Abs a)
+ Agda.TypeChecking.Names: bind' :: (Monad m, Subst t' b, DeBruijn b, Subst t a, Free a) => ArgName -> (NamesT m b -> NamesT m a) -> NamesT m a
+ Agda.TypeChecking.Names: cl :: Monad m => m a -> NamesT m a
+ Agda.TypeChecking.Names: cl' :: Applicative m => a -> NamesT m a
+ Agda.TypeChecking.Names: currentCxt :: Monad m => NamesT m Names
+ Agda.TypeChecking.Names: cxtSubst :: Monad m => Names -> NamesT m (Substitution' a)
+ Agda.TypeChecking.Names: glam :: Monad m => ArgInfo -> ArgName -> (NamesT m Term -> NamesT m Term) -> NamesT m Term
+ Agda.TypeChecking.Names: glamN :: (Functor m, Monad m) => [Arg ArgName] -> (NamesT m Args -> NamesT m Term) -> NamesT m Term
+ Agda.TypeChecking.Names: ilam :: Monad m => ArgName -> (NamesT m Term -> NamesT m Term) -> NamesT m Term
+ Agda.TypeChecking.Names: inCxt :: (Monad m, Subst t a) => Names -> a -> NamesT m a
+ Agda.TypeChecking.Names: instance Agda.TypeChecking.Monad.Base.HasOptions m => Agda.TypeChecking.Monad.Base.HasOptions (Agda.TypeChecking.Names.NamesT m)
+ Agda.TypeChecking.Names: instance Agda.TypeChecking.Monad.Base.MonadReduce m => Agda.TypeChecking.Monad.Base.MonadReduce (Agda.TypeChecking.Names.NamesT m)
+ Agda.TypeChecking.Names: instance Agda.TypeChecking.Monad.Base.MonadTCEnv m => Agda.TypeChecking.Monad.Base.MonadTCEnv (Agda.TypeChecking.Names.NamesT m)
+ Agda.TypeChecking.Names: instance Agda.TypeChecking.Monad.Base.MonadTCM m => Agda.TypeChecking.Monad.Base.MonadTCM (Agda.TypeChecking.Names.NamesT m)
+ Agda.TypeChecking.Names: instance Agda.TypeChecking.Monad.Base.MonadTCState m => Agda.TypeChecking.Monad.Base.MonadTCState (Agda.TypeChecking.Names.NamesT m)
+ Agda.TypeChecking.Names: instance Agda.TypeChecking.Monad.Base.ReadTCState m => Agda.TypeChecking.Monad.Base.ReadTCState (Agda.TypeChecking.Names.NamesT m)
+ Agda.TypeChecking.Names: instance Agda.TypeChecking.Monad.Builtin.HasBuiltins m => Agda.TypeChecking.Monad.Builtin.HasBuiltins (Agda.TypeChecking.Names.NamesT m)
+ Agda.TypeChecking.Names: instance Agda.TypeChecking.Monad.Debug.MonadDebug m => Agda.TypeChecking.Monad.Debug.MonadDebug (Agda.TypeChecking.Names.NamesT m)
+ Agda.TypeChecking.Names: instance Control.Monad.Fail.MonadFail m => Control.Monad.Fail.MonadFail (Agda.TypeChecking.Names.NamesT m)
+ Agda.TypeChecking.Names: instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Agda.TypeChecking.Names.NamesT m)
+ Agda.TypeChecking.Names: instance Control.Monad.State.Class.MonadState s m => Control.Monad.State.Class.MonadState s (Agda.TypeChecking.Names.NamesT m)
+ Agda.TypeChecking.Names: instance Control.Monad.Trans.Class.MonadTrans Agda.TypeChecking.Names.NamesT
+ Agda.TypeChecking.Names: instance GHC.Base.Applicative m => GHC.Base.Applicative (Agda.TypeChecking.Names.NamesT m)
+ Agda.TypeChecking.Names: instance GHC.Base.Functor m => GHC.Base.Functor (Agda.TypeChecking.Names.NamesT m)
+ Agda.TypeChecking.Names: instance GHC.Base.Monad m => GHC.Base.Monad (Agda.TypeChecking.Names.NamesT m)
+ Agda.TypeChecking.Names: lam :: Monad m => ArgName -> (NamesT m Term -> NamesT m Term) -> NamesT m Term
+ Agda.TypeChecking.Names: newtype NamesT m a
+ Agda.TypeChecking.Names: open :: (Monad m, Subst t a) => a -> NamesT m (NamesT m a)
+ Agda.TypeChecking.Names: runNames :: Names -> NamesT Identity a -> a
+ Agda.TypeChecking.Names: runNamesT :: Names -> NamesT m a -> m a
+ Agda.TypeChecking.Names: type Names = [String]
+ Agda.TypeChecking.Patterns.Abstract: instance Agda.TypeChecking.Patterns.Abstract.ExpandPatternSynonyms a => Agda.TypeChecking.Patterns.Abstract.ExpandPatternSynonyms (GHC.Maybe.Maybe a)
+ Agda.TypeChecking.Patterns.Match: mergeElim :: Elim -> Arg Term -> Elim
+ Agda.TypeChecking.Patterns.Match: mergeElims :: [Elim] -> [Arg Term] -> [Elim]
+ Agda.TypeChecking.Positivity: instance Agda.TypeChecking.Positivity.ComputeOccurrences a => Agda.TypeChecking.Positivity.ComputeOccurrences (GHC.Maybe.Maybe a)
+ Agda.TypeChecking.Positivity: instance Agda.TypeChecking.Pretty.PrettyTCM (Data.Sequence.Internal.Seq Agda.TypeChecking.Positivity.Occurrence.OccursWhere)
+ Agda.TypeChecking.Positivity: instance Agda.TypeChecking.Pretty.PrettyTCM n => Agda.TypeChecking.Pretty.PrettyTCM (Agda.TypeChecking.Pretty.WithNode n (Agda.TypeChecking.Positivity.Edge Agda.TypeChecking.Positivity.Occurrence.OccursWhere))
+ Agda.TypeChecking.Positivity: instance Agda.Utils.SemiRing.SemiRing (Agda.TypeChecking.Positivity.Edge (Data.Sequence.Internal.Seq Agda.TypeChecking.Positivity.Occurrence.OccursWhere))
+ Agda.TypeChecking.Positivity: instance GHC.Base.Functor Agda.TypeChecking.Positivity.Edge
+ Agda.TypeChecking.Positivity: instance GHC.Classes.Eq a => GHC.Classes.Eq (Agda.TypeChecking.Positivity.Edge a)
+ Agda.TypeChecking.Positivity: instance GHC.Classes.Ord a => GHC.Classes.Ord (Agda.TypeChecking.Positivity.Edge a)
+ Agda.TypeChecking.Positivity: instance GHC.Show.Show a => GHC.Show.Show (Agda.TypeChecking.Positivity.Edge a)
+ Agda.TypeChecking.Positivity: mergeEdges :: Edge a -> Edge a -> Edge a
+ Agda.TypeChecking.Positivity.Occurrence: IsIndex :: Where
+ Agda.TypeChecking.Positivity.Occurrence: OccursWhere :: Range -> Seq Where -> Seq Where -> OccursWhere
+ Agda.TypeChecking.Positivity.Occurrence: instance Agda.Utils.Size.Sized Agda.TypeChecking.Positivity.Occurrence.OccursWhere
+ Agda.TypeChecking.Pretty: instance Agda.TypeChecking.Pretty.PrettyTCM Agda.TypeChecking.Coverage.SplitTree.SplitTag
+ Agda.TypeChecking.Primitive: (<..>) :: Monad tcm => tcm Term -> tcm Term -> tcm Term
+ Agda.TypeChecking.Primitive: (<@@>) :: Monad tcm => tcm Term -> (tcm Term, tcm Term, tcm Term) -> tcm Term
+ Agda.TypeChecking.Primitive: DoHComp :: TranspOrHComp
+ Agda.TypeChecking.Primitive: DoTransp :: TranspOrHComp
+ Agda.TypeChecking.Primitive: IsFam :: a -> FamilyOrNot a
+ Agda.TypeChecking.Primitive: IsNot :: a -> FamilyOrNot a
+ Agda.TypeChecking.Primitive: SigmaKit :: QName -> ConHead -> QName -> QName -> SigmaKit
+ Agda.TypeChecking.Primitive: [famThing] :: FamilyOrNot a -> a
+ Agda.TypeChecking.Primitive: [sigmaCon] :: SigmaKit -> ConHead
+ Agda.TypeChecking.Primitive: [sigmaFst] :: SigmaKit -> QName
+ Agda.TypeChecking.Primitive: [sigmaName] :: SigmaKit -> QName
+ Agda.TypeChecking.Primitive: [sigmaSnd] :: SigmaKit -> QName
+ Agda.TypeChecking.Primitive: cmdToName :: TranspOrHComp -> String
+ Agda.TypeChecking.Primitive: data FamilyOrNot a
+ Agda.TypeChecking.Primitive: data SigmaKit
+ Agda.TypeChecking.Primitive: data TranspOrHComp
+ Agda.TypeChecking.Primitive: decomposeInterval :: HasBuiltins m => Term -> m [(Map Int Bool, [Term])]
+ Agda.TypeChecking.Primitive: decomposeInterval' :: HasBuiltins m => Term -> m [(Map Int (Set Bool), [Term])]
+ Agda.TypeChecking.Primitive: el' :: Monad m => m Term -> m Term -> m Type
+ Agda.TypeChecking.Primitive: elInf :: Functor m => m Term -> m Type
+ Agda.TypeChecking.Primitive: gApply' :: Monad tcm => ArgInfo -> tcm Term -> tcm Term -> tcm Term
+ Agda.TypeChecking.Primitive: getRefl :: TCM (Arg Term -> Term)
+ Agda.TypeChecking.Primitive: getSigmaKit :: (HasBuiltins m, HasConstInfo m) => m (Maybe SigmaKit)
+ Agda.TypeChecking.Primitive: hPi' :: (MonadTCM tcm, MonadDebug tcm) => String -> NamesT tcm Type -> (NamesT tcm Term -> NamesT tcm Type) -> NamesT tcm Type
+ Agda.TypeChecking.Primitive: imax :: HasBuiltins m => m Term -> m Term -> m Term
+ Agda.TypeChecking.Primitive: imin :: HasBuiltins m => m Term -> m Term -> m Term
+ Agda.TypeChecking.Primitive: instance Agda.TypeChecking.Reduce.Reduce a => Agda.TypeChecking.Reduce.Reduce (Agda.TypeChecking.Primitive.FamilyOrNot a)
+ Agda.TypeChecking.Primitive: instance Data.Foldable.Foldable Agda.TypeChecking.Primitive.FamilyOrNot
+ Agda.TypeChecking.Primitive: instance Data.Traversable.Traversable Agda.TypeChecking.Primitive.FamilyOrNot
+ Agda.TypeChecking.Primitive: instance GHC.Base.Functor Agda.TypeChecking.Primitive.FamilyOrNot
+ Agda.TypeChecking.Primitive: instance GHC.Classes.Eq Agda.TypeChecking.Primitive.SigmaKit
+ Agda.TypeChecking.Primitive: instance GHC.Classes.Eq Agda.TypeChecking.Primitive.TranspOrHComp
+ Agda.TypeChecking.Primitive: instance GHC.Classes.Eq a => GHC.Classes.Eq (Agda.TypeChecking.Primitive.FamilyOrNot a)
+ Agda.TypeChecking.Primitive: instance GHC.Show.Show Agda.TypeChecking.Primitive.SigmaKit
+ Agda.TypeChecking.Primitive: instance GHC.Show.Show Agda.TypeChecking.Primitive.TranspOrHComp
+ Agda.TypeChecking.Primitive: instance GHC.Show.Show a => GHC.Show.Show (Agda.TypeChecking.Primitive.FamilyOrNot a)
+ Agda.TypeChecking.Primitive: listS :: [(Int, Term)] -> Substitution
+ Agda.TypeChecking.Primitive: mkPrimInjective :: Type -> Type -> QName -> TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: mkPrimSetOmega :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: nPi' :: (MonadTCM tcm, MonadDebug tcm) => String -> NamesT tcm Type -> (NamesT tcm Term -> NamesT tcm Type) -> NamesT tcm Type
+ Agda.TypeChecking.Primitive: nolam :: Term -> Term
+ Agda.TypeChecking.Primitive: pPi' :: (MonadTCM tcm, MonadDebug tcm) => String -> NamesT tcm Term -> (NamesT tcm Term -> NamesT tcm Type) -> NamesT tcm Type
+ Agda.TypeChecking.Primitive: path :: TCM Term -> TCM Term
+ Agda.TypeChecking.Primitive: primCharToNatInjective :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primComp :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primDepIMin' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primEraseEquality :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primFaceForall' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primGlue' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primHComp' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primIBin :: IntervalView -> IntervalView -> TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primIMax' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primIMin' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primINeg' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primIdElim' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primIdFace' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primIdJ :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primIdPath' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primPOr :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primPartial' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primPartialP' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primStringToListInjective :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primSubOut' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primTrans' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: primTransHComp :: TranspOrHComp -> [Arg Term] -> Int -> ReduceM (Reduced MaybeReducedArgs Term)
+ Agda.TypeChecking.Primitive: prim_glue' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: prim_unglue' :: TCM PrimitiveImpl
+ Agda.TypeChecking.Primitive: requireCubical :: TCM ()
+ Agda.TypeChecking.Primitive.Cubical: trFillTel :: Abs Telescope -> Term -> Args -> Term -> ExceptT (Closure (Abs Type)) TCM Args
+ Agda.TypeChecking.Primitive.Cubical: transpTel :: Abs Telescope -> Term -> Args -> ExceptT (Closure (Abs Type)) TCM Args
+ Agda.TypeChecking.RecordPatterns: instance Agda.TypeChecking.Monad.Base.MonadTCEnv Agda.TypeChecking.RecordPatterns.RecPatM
+ Agda.TypeChecking.RecordPatterns: instance Agda.TypeChecking.Monad.Base.MonadTCState Agda.TypeChecking.RecordPatterns.RecPatM
+ Agda.TypeChecking.Reduce: blockedOrMeta :: Blocked Term -> Blocked ()
+ Agda.TypeChecking.Reduce: instance Agda.TypeChecking.Reduce.Instantiate t => Agda.TypeChecking.Reduce.Instantiate (GHC.Maybe.Maybe t)
+ Agda.TypeChecking.Reduce: instance Agda.TypeChecking.Reduce.InstantiateFull Agda.TypeChecking.Monad.Base.ExtLamInfo
+ Agda.TypeChecking.Reduce: instance Agda.TypeChecking.Reduce.InstantiateFull Agda.TypeChecking.Monad.Base.System
+ Agda.TypeChecking.Reduce: instance Agda.TypeChecking.Reduce.InstantiateFull a => Agda.TypeChecking.Reduce.InstantiateFull (GHC.Maybe.Maybe a)
+ Agda.TypeChecking.Reduce: instance Agda.TypeChecking.Reduce.Normalise a => Agda.TypeChecking.Reduce.Normalise (GHC.Maybe.Maybe a)
+ Agda.TypeChecking.Reduce: instance Agda.TypeChecking.Reduce.Simplify a => Agda.TypeChecking.Reduce.Simplify (GHC.Maybe.Maybe a)
+ Agda.TypeChecking.Reduce: normaliseB :: (MonadReduce m, Reduce t, Normalise t) => t -> m (Blocked t)
+ Agda.TypeChecking.Reduce: reduceIApply :: ReduceM (Blocked Term) -> [Elim] -> ReduceM (Blocked Term)
+ Agda.TypeChecking.Reduce: reduceIApply' :: (Term -> ReduceM (Blocked Term)) -> ReduceM (Blocked Term) -> [Elim] -> ReduceM (Blocked Term)
+ Agda.TypeChecking.Reduce.Fast: instance GHC.Classes.Eq a => GHC.Classes.Eq (Agda.TypeChecking.Reduce.Fast.ElimZipper a)
+ Agda.TypeChecking.Reduce.Fast: instance GHC.Classes.Ord a => GHC.Classes.Ord (Agda.TypeChecking.Reduce.Fast.ElimZipper a)
+ Agda.TypeChecking.Reduce.Fast: instance GHC.Show.Show a => GHC.Show.Show (Agda.TypeChecking.Reduce.Fast.ElimZipper a)
+ Agda.TypeChecking.Reduce.Monad: addCtxTel :: MonadReduce m => Telescope -> m a -> m a
+ Agda.TypeChecking.Reduce.Monad: underAbstraction :: (MonadReduce m, Subst t a) => Dom Type -> Abs a -> (a -> m b) -> m b
+ Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.Match () Agda.TypeChecking.Monad.Base.NLPType Agda.Syntax.Internal.Type
+ Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.Match () Agda.TypeChecking.Monad.Base.NLPat Agda.Syntax.Internal.Level
+ Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.Match () Agda.TypeChecking.Monad.Base.NLPat Agda.Syntax.Internal.Sort
+ Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.Match (Agda.Syntax.Internal.Type, Agda.Syntax.Internal.Term) [Agda.Syntax.Internal.Elim' Agda.TypeChecking.Monad.Base.NLPat] Agda.Syntax.Internal.Elims
+ Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.Match Agda.Syntax.Internal.Type Agda.TypeChecking.Monad.Base.NLPat Agda.Syntax.Internal.Term
+ Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.Match t a b => Agda.TypeChecking.Rewriting.NonLinMatch.Match (Agda.Syntax.Common.Dom t) (Agda.Syntax.Common.Arg a) (Agda.Syntax.Common.Arg b)
+ Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.Match t a b => Agda.TypeChecking.Rewriting.NonLinMatch.Match t (Agda.Syntax.Common.Dom a) (Agda.Syntax.Common.Dom b)
+ Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom () Agda.Syntax.Internal.Sort Agda.TypeChecking.Monad.Base.NLPat
+ Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom () Agda.Syntax.Internal.Type Agda.TypeChecking.Monad.Base.NLPType
+ Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom (Agda.Syntax.Internal.Type, Agda.Syntax.Internal.Term) Agda.Syntax.Internal.Elims [Agda.Syntax.Internal.Elim' Agda.TypeChecking.Monad.Base.NLPat]
+ Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom Agda.Syntax.Internal.Type Agda.Syntax.Internal.Term Agda.TypeChecking.Monad.Base.NLPat
+ Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom t a b => Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom (Agda.Syntax.Common.Dom t) (Agda.Syntax.Common.Arg a) (Agda.Syntax.Common.Arg b)
+ Agda.TypeChecking.Rewriting.NonLinMatch: instance Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom t a b => Agda.TypeChecking.Rewriting.NonLinMatch.PatternFrom t (Agda.Syntax.Common.Dom a) (Agda.Syntax.Common.Dom b)
+ Agda.TypeChecking.Rules.Application: checkProjAppToKnownPrincipalArg :: Comparison -> Expr -> ProjOrigin -> NonemptyList QName -> Args -> Type -> Int -> Term -> Type -> TCM Term
+ Agda.TypeChecking.Rules.Builtin: builtinKindOfName :: String -> TCM (Maybe KindOfName)
+ Agda.TypeChecking.Rules.Data: PathCons :: IsPathCons
+ Agda.TypeChecking.Rules.Data: PointCons :: IsPathCons
+ Agda.TypeChecking.Rules.Data: bindGeneralizedParameters :: [Maybe Name] -> Type -> (Telescope -> Type -> TCM a) -> TCM a
+ Agda.TypeChecking.Rules.Data: bindParameter :: Int -> [LamBinding] -> Name -> Dom Type -> Abs Type -> (Telescope -> Type -> TCM a) -> TCM a
+ Agda.TypeChecking.Rules.Data: checkIndexSorts :: Sort -> Telescope -> TCM ()
+ Agda.TypeChecking.Rules.Data: data IsPathCons
+ Agda.TypeChecking.Rules.Data: defineCompData :: QName -> ConHead -> Telescope -> [QName] -> Telescope -> Type -> Boundary -> TCM CompKit
+ Agda.TypeChecking.Rules.Data: defineHCompForFields :: (Term -> QName -> Term) -> QName -> Telescope -> Telescope -> [Arg QName] -> Type -> TCM ((QName, Telescope, Type, [Dom Type], [Term]), Substitution)
+ Agda.TypeChecking.Rules.Data: defineProjections :: QName -> ConHead -> Telescope -> [QName] -> Telescope -> Type -> TCM ()
+ Agda.TypeChecking.Rules.Data: defineTranspForFields :: (Term -> QName -> Term) -> QName -> Telescope -> Telescope -> [Arg QName] -> Type -> TCM ((QName, Telescope, Type, [Dom Type], [Term]), Substitution)
+ Agda.TypeChecking.Rules.Data: defineTranspForFields' :: Maybe Term -> (Term -> QName -> Term) -> QName -> Telescope -> Telescope -> [Arg QName] -> Type -> TCM ((QName, Telescope, Type, [Dom Type], [Term]), Substitution)
+ Agda.TypeChecking.Rules.Data: freshAbstractQName'_ :: String -> TCM QName
+ Agda.TypeChecking.Rules.Data: getGeneralizedParameters :: Set Name -> QName -> TCM [Maybe Name]
+ Agda.TypeChecking.Rules.Data: instance GHC.Classes.Eq Agda.TypeChecking.Rules.Data.IsPathCons
+ Agda.TypeChecking.Rules.Data: instance GHC.Show.Show Agda.TypeChecking.Rules.Data.IsPathCons
+ Agda.TypeChecking.Rules.Decl: DoHighlightModuleContents :: HighlightModuleContents
+ Agda.TypeChecking.Rules.Decl: DontHightlightModuleContents :: HighlightModuleContents
+ Agda.TypeChecking.Rules.Decl: checkAxiom' :: Maybe GeneralizeTelescope -> Axiom -> DefInfo -> ArgInfo -> Maybe [Occurrence] -> QName -> Expr -> TCM ()
+ Agda.TypeChecking.Rules.Decl: checkGeneralize :: Set QName -> DefInfo -> ArgInfo -> QName -> Expr -> TCM ()
+ Agda.TypeChecking.Rules.Decl: checkTypeSignature' :: Maybe GeneralizeTelescope -> TypeSignature -> TCM ()
+ Agda.TypeChecking.Rules.Decl: data HighlightModuleContents
+ Agda.TypeChecking.Rules.Decl: instance GHC.Classes.Eq Agda.TypeChecking.Rules.Decl.HighlightModuleContents
+ Agda.TypeChecking.Rules.Def: CPC :: [Int] -> ClausesPostChecks
+ Agda.TypeChecking.Rules.Def: [cpcPartialSplits] :: ClausesPostChecks -> [Int]
+ Agda.TypeChecking.Rules.Def: checkSystemCoverage :: QName -> [Int] -> Type -> [Clause] -> TCM System
+ Agda.TypeChecking.Rules.Def: data ClausesPostChecks
+ Agda.TypeChecking.Rules.Def: instance GHC.Base.Monoid Agda.TypeChecking.Rules.Def.ClausesPostChecks
+ Agda.TypeChecking.Rules.Def: instance GHC.Base.Semigroup Agda.TypeChecking.Rules.Def.ClausesPostChecks
+ Agda.TypeChecking.Rules.LHS: [lhsPartialSplit] :: LHSResult -> [Int]
+ Agda.TypeChecking.Rules.LHS.Problem: [_lhsPartialSplit] :: LHSState a -> ![Maybe Int]
+ Agda.TypeChecking.Rules.LHS.Problem: instance Agda.TypeChecking.Rules.LHS.Problem.ChooseFlex a => Agda.TypeChecking.Rules.LHS.Problem.ChooseFlex (GHC.Maybe.Maybe a)
+ Agda.TypeChecking.Rules.Record: addCompositionForRecord :: QName -> ConHead -> Telescope -> [Arg QName] -> Telescope -> Type -> TCM ()
+ Agda.TypeChecking.Rules.Record: defineCompKitR :: QName -> Telescope -> Telescope -> [Arg QName] -> Type -> TCM CompKit
+ Agda.TypeChecking.Rules.Record: defineTranspOrHCompR :: TranspOrHComp -> QName -> Telescope -> Telescope -> [Arg QName] -> Type -> TCM (Maybe QName)
+ Agda.TypeChecking.Rules.Term: checkExpr' :: Comparison -> Expr -> Type -> TCM Term
+ Agda.TypeChecking.Rules.Term: checkGeneralizeTelescope :: GeneralizeTelescope -> ([Maybe Name] -> Telescope -> TCM a) -> TCM a
+ Agda.TypeChecking.Rules.Term: checkLevel :: NamedArg Expr -> TCM Level
+ Agda.TypeChecking.Rules.Term: checkPath :: TypedBinding -> Expr -> Type -> TCM Term
+ Agda.TypeChecking.Rules.Term: doQuoteTerm :: Comparison -> Term -> Type -> TCM Term
+ Agda.TypeChecking.Rules.Term: ifPath :: Type -> TCM a -> TCM a -> TCM a
+ Agda.TypeChecking.Rules.Term: lambdaModalityCheck :: LensModality dom => dom -> ArgInfo -> TCM ArgInfo
+ Agda.TypeChecking.Rules.Term: lambdaQuantityCheck :: LensQuantity dom => dom -> ArgInfo -> TCM ArgInfo
+ Agda.TypeChecking.Serialise.Base: [textC] :: Dict -> !IORef FreshAndReuse
+ Agda.TypeChecking.Serialise.Base: [textD] :: Dict -> !HashTable Text Int32
+ Agda.TypeChecking.Serialise.Base: [textE] :: St -> !Array Int32 Text
+ Agda.TypeChecking.Serialise.Base: instance (Agda.Utils.TypeLevel.IsBase t Data.Type.Equality.~ 'GHC.Types.True) => Agda.TypeChecking.Serialise.Base.ICODE t 'GHC.Types.True
+ Agda.TypeChecking.Serialise.Instances.Abstract: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.Syntax.Info.ConPatLazy
+ Agda.TypeChecking.Serialise.Instances.Abstract: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.Syntax.Scope.Base.NameMetadata
+ Agda.TypeChecking.Serialise.Instances.Common: instance (Agda.TypeChecking.Serialise.Base.EmbPrj a, Agda.TypeChecking.Serialise.Base.EmbPrj b) => Agda.TypeChecking.Serialise.Base.EmbPrj (Agda.Syntax.Common.ImportedName' a b)
+ Agda.TypeChecking.Serialise.Instances.Common: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.Syntax.Common.FileType
+ Agda.TypeChecking.Serialise.Instances.Common: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.Syntax.Concrete.Name.NameInScope
+ Agda.TypeChecking.Serialise.Instances.Common: instance Agda.TypeChecking.Serialise.Base.EmbPrj Data.Text.Internal.Lazy.Text
+ Agda.TypeChecking.Serialise.Instances.Common: instance Agda.TypeChecking.Serialise.Base.EmbPrj a => Agda.TypeChecking.Serialise.Base.EmbPrj (GHC.Maybe.Maybe a)
+ Agda.TypeChecking.Serialise.Instances.Common: instance Data.Typeable.Internal.Typeable b => Agda.TypeChecking.Serialise.Base.EmbPrj (Agda.Utils.WithDefault.WithDefault b)
+ Agda.TypeChecking.Serialise.Instances.Errors: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.Interaction.Library.LibPositionInfo
+ Agda.TypeChecking.Serialise.Instances.Errors: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.Interaction.Library.LibWarning
+ Agda.TypeChecking.Serialise.Instances.Errors: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.Interaction.Library.Parse.LibWarning'
+ Agda.TypeChecking.Serialise.Instances.Errors: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.Interaction.Options.PragmaOptions
+ Agda.TypeChecking.Serialise.Instances.Errors: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.Interaction.Options.Warnings.WarningMode
+ Agda.TypeChecking.Serialise.Instances.Errors: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.Interaction.Options.Warnings.WarningName
+ Agda.TypeChecking.Serialise.Instances.Errors: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.Termination.CutOff.CutOff
+ Agda.TypeChecking.Serialise.Instances.Internal: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.TypeChecking.Coverage.SplitTree.SplitTag
+ Agda.TypeChecking.Serialise.Instances.Internal: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.TypeChecking.Monad.Base.CompKit
+ Agda.TypeChecking.Serialise.Instances.Internal: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.TypeChecking.Monad.Base.DoGeneralize
+ Agda.TypeChecking.Serialise.Instances.Internal: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.TypeChecking.Monad.Base.NumGeneralizableArgs
+ Agda.TypeChecking.Serialise.Instances.Internal: instance Agda.TypeChecking.Serialise.Base.EmbPrj Agda.TypeChecking.Monad.Base.System
+ Agda.TypeChecking.Serialise.Instances.Internal: instance Agda.TypeChecking.Serialise.Base.EmbPrj a => Agda.TypeChecking.Serialise.Base.EmbPrj (Agda.TypeChecking.Coverage.SplitTree.SplitTree' a)
+ Agda.TypeChecking.SizedTypes: giveUp :: Comparison -> Type -> Term -> Term -> TCM ()
+ Agda.TypeChecking.SizedTypes: instance Agda.Utils.Pretty.Pretty Agda.TypeChecking.SizedTypes.OldSizeConstraint
+ Agda.TypeChecking.SizedTypes: instance Agda.Utils.Pretty.Pretty Agda.TypeChecking.SizedTypes.OldSizeExpr
+ Agda.TypeChecking.Substitute: domFromNamedArgName :: NamedArg Name -> Dom ()
+ Agda.TypeChecking.Substitute: infixr 4 :#
+ Agda.TypeChecking.Substitute: instance Agda.TypeChecking.Substitute.Class.Abstract Agda.TypeChecking.Monad.Base.NumGeneralizableArgs
+ Agda.TypeChecking.Substitute: instance Agda.TypeChecking.Substitute.Class.Abstract Agda.TypeChecking.Monad.Base.System
+ Agda.TypeChecking.Substitute: instance Agda.TypeChecking.Substitute.Class.Abstract t => Agda.TypeChecking.Substitute.Class.Abstract (GHC.Maybe.Maybe t)
+ Agda.TypeChecking.Substitute: instance Agda.TypeChecking.Substitute.Class.Apply Agda.TypeChecking.Monad.Base.ExtLamInfo
+ Agda.TypeChecking.Substitute: instance Agda.TypeChecking.Substitute.Class.Apply Agda.TypeChecking.Monad.Base.NumGeneralizableArgs
+ Agda.TypeChecking.Substitute: instance Agda.TypeChecking.Substitute.Class.Apply Agda.TypeChecking.Monad.Base.System
+ Agda.TypeChecking.Substitute: instance Agda.TypeChecking.Substitute.Class.Apply t => Agda.TypeChecking.Substitute.Class.Apply (GHC.Maybe.Maybe t)
+ Agda.TypeChecking.Substitute: instance Agda.TypeChecking.Substitute.Class.Subst t a => Agda.TypeChecking.Substitute.Class.Subst t (GHC.Maybe.Maybe a)
+ Agda.TypeChecking.Substitute: instance GHC.Classes.Eq a => GHC.Classes.Eq (Agda.Syntax.Internal.Pattern' a)
+ Agda.TypeChecking.Substitute: namedBindsToTel :: [NamedArg Name] -> Type -> Telescope
+ Agda.TypeChecking.Substitute: relToDontCare :: LensRelevance a => a -> Term -> Term
+ Agda.TypeChecking.Substitute: univInf :: HasOptions m => m (Maybe Sort)
+ Agda.TypeChecking.Substitute.DeBruijn: instance Agda.TypeChecking.Substitute.DeBruijn.DeBruijn Agda.Syntax.Internal.DBPatVar
+ Agda.TypeChecking.SyntacticEquality: instance Agda.TypeChecking.SyntacticEquality.SynEq GHC.Types.Bool
+ Agda.TypeChecking.Telescope: OutputTypeVisiblePi :: OutputTypeName
+ Agda.TypeChecking.Telescope: class PiApplyM a
+ Agda.TypeChecking.Telescope: fullBoundary :: Telescope -> Boundary -> Boundary
+ Agda.TypeChecking.Telescope: ifNotPiOrPathType :: (MonadReduce tcm, MonadTCM tcm) => Type -> (Type -> tcm a) -> (Dom Type -> Abs Type -> tcm a) -> tcm a
+ Agda.TypeChecking.Telescope: instance Agda.TypeChecking.Telescope.PiApplyM Agda.Syntax.Internal.Term
+ Agda.TypeChecking.Telescope: instance Agda.TypeChecking.Telescope.PiApplyM a => Agda.TypeChecking.Telescope.PiApplyM (Agda.Syntax.Common.Arg a)
+ Agda.TypeChecking.Telescope: instance Agda.TypeChecking.Telescope.PiApplyM a => Agda.TypeChecking.Telescope.PiApplyM (Agda.Syntax.Common.Named n a)
+ Agda.TypeChecking.Telescope: instance Agda.TypeChecking.Telescope.PiApplyM a => Agda.TypeChecking.Telescope.PiApplyM [a]
+ Agda.TypeChecking.Telescope: instantiateTelescopeN :: Telescope -> [(Int, Term)] -> Maybe (Telescope, Substitution)
+ Agda.TypeChecking.Telescope: isPath :: Type -> TCM (Maybe (Dom Type, Abs Type))
+ Agda.TypeChecking.Telescope: pathViewAsPi :: Type -> TCM (Either (Dom Type, Abs Type) Type)
+ Agda.TypeChecking.Telescope: pathViewAsPi' :: Type -> TCM (Either ((Dom Type, Abs Type), (Term, Term)) Type)
+ Agda.TypeChecking.Telescope: pathViewAsPi'whnf :: TCM (Type -> Either ((Dom Type, Abs Type), (Term, Term)) Type)
+ Agda.TypeChecking.Telescope: piOrPath :: Type -> TCM (Either (Dom Type, Abs Type) Type)
+ Agda.TypeChecking.Telescope: telView'Path :: Type -> TCM TelView
+ Agda.TypeChecking.Telescope: telView'UpToPath :: Int -> Type -> TCM TelView
+ Agda.TypeChecking.Telescope: telViewPath :: Type -> TCM TelView
+ Agda.TypeChecking.Telescope: telViewPathBoundaryP :: Type -> TCM (TelView, Boundary)
+ Agda.TypeChecking.Telescope: telViewUpToPath :: Int -> Type -> TCM TelView
+ Agda.TypeChecking.Telescope: telViewUpToPathBoundary :: Int -> Type -> TCM (TelView, Boundary)
+ Agda.TypeChecking.Telescope: telViewUpToPathBoundary' :: Int -> Type -> TCM (TelView, Boundary)
+ Agda.TypeChecking.Telescope: telViewUpToPathBoundaryP :: Int -> Type -> TCM (TelView, Boundary)
+ Agda.TypeChecking.Telescope: teleElims :: DeBruijn a => Telescope -> Boundary' (a, a) -> [Elim' a]
+ Agda.TypeChecking.Telescope: telePatterns :: (DeBruijn a, DeBruijn (Pattern' a)) => Telescope -> Boundary -> [NamedArg (Pattern' a)]
+ Agda.TypeChecking.Telescope: telePatterns' :: (DeBruijn a, DeBruijn (Pattern' a)) => (forall a. DeBruijn a => Telescope -> [NamedArg a]) -> Telescope -> Boundary -> [NamedArg (Pattern' a)]
+ Agda.TypeChecking.Telescope: type Boundary = Boundary' (Term, Term)
+ Agda.TypeChecking.Telescope: type Boundary' a = [(Term, a)]
+ Agda.TypeChecking.Telescope.Path: iApplyVars :: DeBruijn a => [NamedArg (Pattern' a)] -> [Int]
+ Agda.TypeChecking.Telescope.Path: telePiPath :: (Abs Type -> Abs Type) -> Telescope -> Type -> Boundary -> TCM Type
+ Agda.Utils.Graph.TopSort: topSort :: Ord n => [n] -> [(n, n)] -> Maybe [n]
+ Agda.Utils.Hash: hashText :: Text -> Hash
+ Agda.Utils.Hash: hashTextFile :: AbsolutePath -> IO Hash
+ Agda.Utils.IO.TempFile: writeToTempFile :: String -> IO FilePath
+ Agda.Utils.Impossible: ImpMissingDefinitions :: [String] -> String -> Impossible
+ Agda.Utils.Impossible: instance GHC.Exception.Type.Exception Agda.Utils.Impossible.Impossible
+ Agda.Utils.List: SSSMismatch :: StrSufSt a
+ Agda.Utils.List: SSSResult :: [a] -> StrSufSt a
+ Agda.Utils.List: SSSStrip :: ReversedSuffix a -> StrSufSt a
+ Agda.Utils.List: caseListM :: Monad m => m [a] -> m b -> (a -> [a] -> m b) -> m b
+ Agda.Utils.List: data StrSufSt a
+ Agda.Utils.List: dropEnd :: forall a. Int -> [a] -> [a]
+ Agda.Utils.List: findWithIndex :: (a -> Bool) -> [a] -> Maybe (a, Int)
+ Agda.Utils.List: indexWithDefault :: a -> [a] -> Int -> a
+ Agda.Utils.List: initMaybe :: [a] -> Maybe [a]
+ Agda.Utils.List: snoc :: [a] -> a -> [a]
+ Agda.Utils.List: spanEnd :: forall a. (a -> Bool) -> [a] -> ([a], [a])
+ Agda.Utils.List: stripReversedSuffix :: forall a. Eq a => ReversedSuffix a -> [a] -> Maybe (Prefix a)
+ Agda.Utils.List: stripSuffix :: Eq a => Suffix a -> [a] -> Maybe (Prefix a)
+ Agda.Utils.List: tailMaybe :: [a] -> Maybe [a]
+ Agda.Utils.List: tailWithDefault :: [a] -> [a] -> [a]
+ Agda.Utils.List: type ReversedSuffix a = [a]
+ Agda.Utils.ListT: mapListT :: (m (Maybe (a, ListT m a)) -> n (Maybe (b, ListT n b))) -> ListT m a -> ListT n b
+ Agda.Utils.Monad: dropWhileEndM :: Monad m => (a -> m Bool) -> [a] -> m [a]
+ Agda.Utils.Monad: forMM :: (Traversable t, Monad m) => m (t a) -> (a -> m b) -> m (t b)
+ Agda.Utils.Monad: instance Control.Monad.Fail.MonadFail Data.Functor.Identity.Identity
+ Agda.Utils.Monad: mapMM :: (Traversable t, Monad m) => (a -> m b) -> m (t a) -> m (t b)
+ Agda.Utils.NonemptyList: consNe :: a -> NonemptyList a -> NonemptyList a
+ Agda.Utils.NonemptyList: fromList :: [a] -> Maybe (NonemptyList a)
+ Agda.Utils.NonemptyList: infixr 5 :!
+ Agda.Utils.Null: ifNotNull :: Null a => a -> (a -> b) -> b -> b
+ Agda.Utils.Null: ifNotNullM :: (Monad m, Null a) => m a -> (a -> m b) -> m b -> m b
+ Agda.Utils.Null: instance Agda.Utils.Null.Null (Data.HashSet.Base.HashSet a)
+ Agda.Utils.Null: instance Agda.Utils.Null.Null (GHC.Maybe.Maybe a)
+ Agda.Utils.PartialOrd: instance Agda.Utils.PartialOrd.PartialOrd a => Agda.Utils.PartialOrd.PartialOrd (GHC.Maybe.Maybe a)
+ Agda.Utils.Permutation: instance Agda.Utils.Permutation.InversePermute (GHC.Types.Int -> a) [GHC.Maybe.Maybe a]
+ Agda.Utils.Permutation: instance Agda.Utils.Permutation.InversePermute [GHC.Maybe.Maybe a] (Data.IntMap.Internal.IntMap a)
+ Agda.Utils.Permutation: instance Agda.Utils.Permutation.InversePermute [GHC.Maybe.Maybe a] [(GHC.Types.Int, a)]
+ Agda.Utils.Permutation: instance Agda.Utils.Permutation.InversePermute [GHC.Maybe.Maybe a] [GHC.Maybe.Maybe a]
+ Agda.Utils.Pretty: instance Agda.Utils.Pretty.Pretty ()
+ Agda.Utils.Pretty: instance Agda.Utils.Pretty.Pretty a => Agda.Utils.Pretty.Pretty (GHC.Maybe.Maybe a)
+ Agda.Utils.Pretty: pattern PStr :: () => () => String -> TextDetails
+ Agda.Utils.Pretty: pattern Chr :: () => () => {-# UNPACK #-} !Char -> TextDetails
+ Agda.Utils.SemiRing: instance Agda.Utils.SemiRing.SemiRing a => Agda.Utils.SemiRing.SemiRing (GHC.Maybe.Maybe a)
+ Agda.Utils.SemiRing: instance Agda.Utils.SemiRing.StarSemiRing a => Agda.Utils.SemiRing.StarSemiRing (GHC.Maybe.Maybe a)
+ Agda.Utils.Singleton: instance Agda.Utils.Singleton.Singleton a (Agda.Utils.NonemptyList.NonemptyList a)
+ Agda.Utils.Singleton: instance Agda.Utils.Singleton.Singleton a (GHC.Maybe.Maybe a)
+ Agda.Utils.Singleton: instance Data.Hashable.Class.Hashable a => Agda.Utils.Singleton.Singleton a (Data.HashSet.Base.HashSet a)
+ Agda.Utils.Size: instance Agda.Utils.Size.Sized (Data.HashSet.Base.HashSet a)
+ Agda.Utils.Three: In1 :: a -> Either3 a b c
+ Agda.Utils.Three: In2 :: b -> Either3 a b c
+ Agda.Utils.Three: In3 :: c -> Either3 a b c
+ Agda.Utils.Three: data Either3 a b c
+ Agda.Utils.Three: forEither3M :: Applicative m => [a] -> (a -> m (Either3 b c d)) -> m ([b], [c], [d])
+ Agda.Utils.Three: instance (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c) => GHC.Classes.Eq (Agda.Utils.Three.Either3 a b c)
+ Agda.Utils.Three: instance (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c) => GHC.Classes.Ord (Agda.Utils.Three.Either3 a b c)
+ Agda.Utils.Three: instance (GHC.Show.Show a, GHC.Show.Show b, GHC.Show.Show c) => GHC.Show.Show (Agda.Utils.Three.Either3 a b c)
+ Agda.Utils.Three: mapEither3M :: Applicative m => (a -> m (Either3 b c d)) -> [a] -> m ([b], [c], [d])
+ Agda.Utils.Three: partitionEithers3 :: [Either3 a b c] -> ([a], [b], [c])
+ Agda.Utils.TypeLevel: type family Apply (t :: Function k l -> *) (u :: k) :: l
+ Agda.Utils.TypeLits: [SFalse] :: SBool 'False
+ Agda.Utils.TypeLits: [STrue] :: SBool 'True
+ Agda.Utils.TypeLits: boolSing :: KnownBool b => SBool b
+ Agda.Utils.TypeLits: boolVal :: forall proxy b. KnownBool b => proxy b -> Bool
+ Agda.Utils.TypeLits: class KnownBool (b :: Bool)
+ Agda.Utils.TypeLits: data SBool (b :: Bool)
+ Agda.Utils.TypeLits: eraseSBool :: SBool b -> Bool
+ Agda.Utils.TypeLits: instance Agda.Utils.TypeLits.KnownBool 'GHC.Types.False
+ Agda.Utils.TypeLits: instance Agda.Utils.TypeLits.KnownBool 'GHC.Types.True
+ Agda.Utils.Update: instance Agda.Utils.Update.Updater1 GHC.Maybe.Maybe
+ Agda.Utils.WithDefault: Default :: WithDefault
+ Agda.Utils.WithDefault: Value :: Bool -> WithDefault
+ Agda.Utils.WithDefault: collapseDefault :: KnownBool b => WithDefault b -> Bool
+ Agda.Utils.WithDefault: data WithDefault (b :: Bool)
+ Agda.Utils.WithDefault: instance GHC.Classes.Eq (Agda.Utils.WithDefault.WithDefault b)
+ Agda.Utils.WithDefault: instance GHC.Show.Show (Agda.Utils.WithDefault.WithDefault b)
+ Agda.Utils.WithDefault: setDefault :: Bool -> WithDefault b -> WithDefault b
+ Agda.Utils.Zipper: instance (Agda.Utils.Zipper.Zipper f, Agda.Utils.Zipper.Zipper g, Agda.Utils.Zipper.Element f Data.Type.Equality.~ Agda.Utils.Zipper.Carrier g) => Agda.Utils.Zipper.Zipper (Agda.Utils.Zipper.ComposeZipper f g)
- Agda.Auto.Auto: auto :: InteractionId -> Range -> String -> TCM AutoResult
+ Agda.Auto.Auto: auto :: MonadTCM tcm => InteractionId -> Range -> String -> tcm AutoResult
- Agda.Auto.CaseSplit: CSPatConApp :: (ConstRef o) -> [CSPat o] -> CSPatI o
+ Agda.Auto.CaseSplit: CSPatConApp :: ConstRef o -> [CSPat o] -> CSPatI o
- Agda.Auto.CaseSplit: CSPatExp :: (MExp o) -> CSPatI o
+ Agda.Auto.CaseSplit: CSPatExp :: MExp o -> CSPatI o
- Agda.Auto.CaseSplit: CSWith :: (MExp o) -> CSPatI o
+ Agda.Auto.CaseSplit: CSWith :: MExp o -> CSPatI o
- Agda.Auto.CaseSplit: unifyexp :: MExp o -> MExp o -> Maybe ([(Nat, MExp o)])
+ Agda.Auto.CaseSplit: unifyexp :: MExp o -> MExp o -> Maybe [(Nat, MExp o)]
- Agda.Auto.NarrowingSearch: AddExtraRef :: String -> (Metavar a blk) -> (Move' blk a) -> Prop blk
+ Agda.Auto.NarrowingSearch: AddExtraRef :: String -> Metavar a blk -> Move' blk a -> Prop blk
- Agda.Auto.NarrowingSearch: And :: (Maybe [Term blk]) -> (MetaEnv (PB blk)) -> (MetaEnv (PB blk)) -> Prop blk
+ Agda.Auto.NarrowingSearch: And :: Maybe [Term blk] -> MetaEnv (PB blk) -> MetaEnv (PB blk) -> Prop blk
- Agda.Auto.NarrowingSearch: Blocked :: (Metavar b blk) -> (MetaEnv (MB a blk)) -> MB a blk
+ Agda.Auto.NarrowingSearch: Blocked :: Metavar b blk -> MetaEnv (MB a blk) -> MB a blk
- Agda.Auto.NarrowingSearch: ConnectHandle :: (OKHandle blk) -> (MetaEnv (PB blk)) -> Prop blk
+ Agda.Auto.NarrowingSearch: ConnectHandle :: OKHandle blk -> MetaEnv (PB blk) -> Prop blk
- Agda.Auto.NarrowingSearch: Meta :: (Metavar a blk) -> MM a blk
+ Agda.Auto.NarrowingSearch: Meta :: Metavar a blk -> MM a blk
- Agda.Auto.NarrowingSearch: NotPB :: (Prop blk) -> PB blk
+ Agda.Auto.NarrowingSearch: NotPB :: Prop blk -> PB blk
- Agda.Auto.NarrowingSearch: Or :: Prio -> (MetaEnv (PB blk)) -> (MetaEnv (PB blk)) -> Prop blk
+ Agda.Auto.NarrowingSearch: Or :: Prio -> MetaEnv (PB blk) -> MetaEnv (PB blk) -> Prop blk
- Agda.Auto.NarrowingSearch: PBlocked :: (Metavar b blk) -> (BlkInfo blk) -> (MetaEnv (PB blk)) -> PB blk
+ Agda.Auto.NarrowingSearch: PBlocked :: Metavar b blk -> BlkInfo blk -> MetaEnv (PB blk) -> PB blk
- Agda.Auto.NarrowingSearch: PDoubleBlocked :: (Metavar b1 blk) -> (Metavar b2 blk) -> (MetaEnv (PB blk)) -> PB blk
+ Agda.Auto.NarrowingSearch: PDoubleBlocked :: Metavar b1 blk -> Metavar b2 blk -> MetaEnv (PB blk) -> PB blk
- Agda.Auto.NarrowingSearch: PrioMeta :: Prio -> (Metavar a blk) -> PrioMeta blk
+ Agda.Auto.NarrowingSearch: PrioMeta :: Prio -> Metavar a blk -> PrioMeta blk
- Agda.Auto.NarrowingSearch: QPBlocked :: (BlkInfo blk) -> (MetaEnv (PB blk)) -> QPB b blk
+ Agda.Auto.NarrowingSearch: QPBlocked :: BlkInfo blk -> MetaEnv (PB blk) -> QPB b blk
- Agda.Auto.NarrowingSearch: QPDoubleBlocked :: (IORef Bool) -> (MetaEnv (PB blk)) -> QPB b blk
+ Agda.Auto.NarrowingSearch: QPDoubleBlocked :: IORef Bool -> MetaEnv (PB blk) -> QPB b blk
- Agda.Auto.NarrowingSearch: RefCreateEnv :: StateT ((IORef [SubConstraints blk]), Int) IO a -> RefCreateEnv blk a
+ Agda.Auto.NarrowingSearch: RefCreateEnv :: StateT (IORef [SubConstraints blk], Int) IO a -> RefCreateEnv blk a
- Agda.Auto.NarrowingSearch: Restore :: (IORef a) -> a -> Restore
+ Agda.Auto.NarrowingSearch: Restore :: IORef a -> a -> Restore
- Agda.Auto.NarrowingSearch: Sidecondition :: (MetaEnv (PB blk)) -> (MetaEnv (PB blk)) -> Prop blk
+ Agda.Auto.NarrowingSearch: Sidecondition :: MetaEnv (PB blk) -> MetaEnv (PB blk) -> Prop blk
- Agda.Auto.NarrowingSearch: [runRefCreateEnv] :: RefCreateEnv blk a -> StateT ((IORef [SubConstraints blk]), Int) IO a
+ Agda.Auto.NarrowingSearch: [runRefCreateEnv] :: RefCreateEnv blk a -> StateT (IORef [SubConstraints blk], Int) IO a
- Agda.Auto.Options: T :: Int -> AutoToken
+ Agda.Auto.Options: T :: String -> AutoToken
- Agda.Auto.Syntax: ALConPar :: (MArgList o) -> ArgList o
+ Agda.Auto.Syntax: ALConPar :: MArgList o -> ArgList o
- Agda.Auto.Syntax: ALCons :: Hiding -> (MExp o) -> (MArgList o) -> ArgList o
+ Agda.Auto.Syntax: ALCons :: Hiding -> MExp o -> MArgList o -> ArgList o
- Agda.Auto.Syntax: ALProj :: (MArgList o) -> (MM (ConstRef o) (RefInfo o)) -> Hiding -> (MArgList o) -> ArgList o
+ Agda.Auto.Syntax: ALProj :: MArgList o -> MM (ConstRef o) (RefInfo o) -> Hiding -> MArgList o -> ArgList o
- Agda.Auto.Syntax: CALConcat :: (Clos (MArgList o) o) -> (ICArgList o) -> ICArgList o
+ Agda.Auto.Syntax: CALConcat :: Clos (MArgList o) o -> ICArgList o -> ICArgList o
- Agda.Auto.Syntax: Const :: (ConstRef o) -> Elr o
+ Agda.Auto.Syntax: Const :: ConstRef o -> Elr o
- Agda.Auto.Syntax: Def :: Nat -> [Clause o] -> (Maybe Nat) -> (Maybe Nat) -> DeclCont o
+ Agda.Auto.Syntax: Def :: Nat -> [Clause o] -> Maybe Nat -> Maybe Nat -> DeclCont o
- Agda.Auto.Syntax: HNALConPar :: (ICArgList o) -> HNArgList o
+ Agda.Auto.Syntax: HNALConPar :: ICArgList o -> HNArgList o
- Agda.Auto.Syntax: HNALCons :: Hiding -> (ICExp o) -> (ICArgList o) -> HNArgList o
+ Agda.Auto.Syntax: HNALCons :: Hiding -> ICExp o -> ICArgList o -> HNArgList o
- Agda.Auto.Syntax: HNApp :: (Elr o) -> (ICArgList o) -> HNExp' o
+ Agda.Auto.Syntax: HNApp :: Elr o -> ICArgList o -> HNExp' o
- Agda.Auto.Syntax: HNLam :: Hiding -> (Abs (ICExp o)) -> HNExp' o
+ Agda.Auto.Syntax: HNLam :: Hiding -> Abs (ICExp o) -> HNExp' o
- Agda.Auto.Syntax: HNPi :: Hiding -> Bool -> (ICExp o) -> (Abs (ICExp o)) -> HNExp' o
+ Agda.Auto.Syntax: HNPi :: Hiding -> Bool -> ICExp o -> Abs (ICExp o) -> HNExp' o
- Agda.Auto.Syntax: Lam :: Hiding -> (Abs (MExp o)) -> Exp o
+ Agda.Auto.Syntax: Lam :: Hiding -> Abs (MExp o) -> Exp o
- Agda.Auto.Syntax: PatConApp :: (ConstRef o) -> [Pat o] -> Pat o
+ Agda.Auto.Syntax: PatConApp :: ConstRef o -> [Pat o] -> Pat o
- Agda.Auto.Syntax: Pi :: (Maybe (UId o)) -> Hiding -> Bool -> (MExp o) -> (Abs (MExp o)) -> Exp o
+ Agda.Auto.Syntax: Pi :: Maybe (UId o) -> Hiding -> Bool -> MExp o -> Abs (MExp o) -> Exp o
- Agda.Auto.Syntax: RICopyInfo :: (ICExp o) -> RefInfo o
+ Agda.Auto.Syntax: RICopyInfo :: ICExp o -> RefInfo o
- Agda.Auto.Syntax: RIUnifInfo :: [CAction o] -> (HNExp o) -> RefInfo o
+ Agda.Auto.Syntax: RIUnifInfo :: [CAction o] -> HNExp o -> RefInfo o
- Agda.Auto.Syntax: Sub :: (ICExp o) -> CAction o
+ Agda.Auto.Syntax: Sub :: ICExp o -> CAction o
- Agda.Auto.Typecheck: CMFBlocked :: (Maybe (Metavar (Exp o) (RefInfo o))) -> (HNExp o) -> CMFlex o
+ Agda.Auto.Typecheck: CMFBlocked :: Maybe (Metavar (Exp o) (RefInfo o)) -> HNExp o -> CMFlex o
- Agda.Auto.Typecheck: CMFFlex :: (ICExp o) -> (ICArgList o) -> [Maybe (UId o)] -> CMFlex o
+ Agda.Auto.Typecheck: CMFFlex :: ICExp o -> ICArgList o -> [Maybe (UId o)] -> CMFlex o
- Agda.Auto.Typecheck: CMFSemi :: (Maybe (Metavar (Exp o) (RefInfo o))) -> (HNExp o) -> CMFlex o
+ Agda.Auto.Typecheck: CMFSemi :: Maybe (Metavar (Exp o) (RefInfo o)) -> HNExp o -> CMFlex o
- Agda.Auto.Typecheck: CMFlex :: (MM b (RefInfo o)) -> (CMFlex o) -> CMode o
+ Agda.Auto.Typecheck: CMFlex :: MM b (RefInfo o) -> CMFlex o -> CMode o
- Agda.Auto.Typecheck: CMRigid :: (Maybe (Metavar (Exp o) (RefInfo o))) -> (HNExp o) -> CMode o
+ Agda.Auto.Typecheck: CMRigid :: Maybe (Metavar (Exp o) (RefInfo o)) -> HNExp o -> CMode o
- Agda.Auto.Typecheck: HNDone :: (Maybe (Metavar (Exp o) (RefInfo o))) -> (HNExp o) -> HNRes o
+ Agda.Auto.Typecheck: HNDone :: Maybe (Metavar (Exp o) (RefInfo o)) -> HNExp o -> HNRes o
- Agda.Auto.Typecheck: HNMeta :: (ICExp o) -> (ICArgList o) -> [Maybe (UId o)] -> HNRes o
+ Agda.Auto.Typecheck: HNMeta :: ICExp o -> ICArgList o -> [Maybe (UId o)] -> HNRes o
- Agda.Auto.Typecheck: PEConApp :: (ICExp o) -> (ConstRef o) -> [PEval o] -> PEval o
+ Agda.Auto.Typecheck: PEConApp :: ICExp o -> ConstRef o -> [PEval o] -> PEval o
- Agda.Auto.Typecheck: PENo :: (ICExp o) -> PEval o
+ Agda.Auto.Typecheck: PENo :: ICExp o -> PEval o
- Agda.Compiler.Backend: Backend' :: String -> Maybe String -> opts -> [OptDescr (Flag opts)] -> opts -> Bool -> opts -> TCM env -> env -> IsMain -> Map ModuleName mod -> TCM () -> env -> ModuleName -> FilePath -> TCM (Recompile menv mod) -> env -> menv -> IsMain -> ModuleName -> [def] -> TCM mod -> env -> menv -> Definition -> TCM def -> Bool -> Backend' opts env menv mod def
+ Agda.Compiler.Backend: Backend' :: String -> Maybe String -> opts -> [OptDescr (Flag opts)] -> (opts -> Bool) -> (opts -> TCM env) -> (env -> IsMain -> Map ModuleName mod -> TCM ()) -> (env -> ModuleName -> FilePath -> TCM (Recompile menv mod)) -> (env -> menv -> IsMain -> ModuleName -> [def] -> TCM mod) -> (env -> menv -> Definition -> TCM def) -> Bool -> Backend' opts env menv mod def
- Agda.Compiler.Backend: parseBackendOptions :: [Backend] -> [String] -> OptM ([Backend], CommandLineOptions)
+ Agda.Compiler.Backend: parseBackendOptions :: [Backend] -> [String] -> CommandLineOptions -> OptM ([Backend], CommandLineOptions)
- Agda.Compiler.Backend: toTreeless :: QName -> TCM (Maybe TTerm)
+ Agda.Compiler.Backend: toTreeless :: EvaluationStrategy -> QName -> TCM (Maybe TTerm)
- Agda.Compiler.JS.Syntax: Object :: (Map MemberId Exp) -> Exp
+ Agda.Compiler.JS.Syntax: Object :: Map MemberId Exp -> Exp
- Agda.Compiler.ToTreeless: closedTermToTreeless :: Term -> TCM TTerm
+ Agda.Compiler.ToTreeless: closedTermToTreeless :: EvaluationStrategy -> Term -> TCM TTerm
- Agda.Compiler.ToTreeless: toTreeless :: QName -> TCM (Maybe TTerm)
+ Agda.Compiler.ToTreeless: toTreeless :: EvaluationStrategy -> QName -> TCM (Maybe TTerm)
- Agda.Compiler.Treeless.Erase: eraseTerms :: QName -> TTerm -> TCM TTerm
+ Agda.Compiler.Treeless.Erase: eraseTerms :: QName -> EvaluationStrategy -> TTerm -> TCM TTerm
- Agda.Interaction.BasicOps: Guard :: (OutputConstraint a b) -> ProblemId -> OutputConstraint a b
+ Agda.Interaction.BasicOps: Guard :: OutputConstraint a b -> ProblemId -> OutputConstraint a b
- Agda.Interaction.BasicOps: OutputForm :: Range -> [ProblemId] -> (OutputConstraint a b) -> OutputForm a b
+ Agda.Interaction.BasicOps: OutputForm :: Range -> [ProblemId] -> OutputConstraint a b -> OutputForm a b
- Agda.Interaction.BasicOps: getModuleContents :: Rewrite -> QName -> TCM ([Name], [(Name, Type)])
+ Agda.Interaction.BasicOps: getModuleContents :: Rewrite -> QName -> TCM ([Name], Telescope, [(Name, Type)])
- Agda.Interaction.BasicOps: getRecordContents :: Rewrite -> Expr -> TCM ([Name], [(Name, Type)])
+ Agda.Interaction.BasicOps: getRecordContents :: Rewrite -> Expr -> TCM ([Name], Telescope, [(Name, Type)])
- Agda.Interaction.BasicOps: moduleContents :: Rewrite -> Range -> String -> TCM ([Name], [(Name, Type)])
+ Agda.Interaction.BasicOps: moduleContents :: Rewrite -> Range -> String -> TCM ([Name], Telescope, [(Name, Type)])
- Agda.Interaction.EmacsCommand: Cons :: (Lisp a) -> (Lisp a) -> Lisp a
+ Agda.Interaction.EmacsCommand: Cons :: Lisp a -> Lisp a -> Lisp a
- Agda.Interaction.EmacsCommand: Q :: (Lisp a) -> Lisp a
+ Agda.Interaction.EmacsCommand: Q :: Lisp a -> Lisp a
- Agda.Interaction.FindFile: moduleName :: AbsolutePath -> TCM TopLevelModuleName
+ Agda.Interaction.FindFile: moduleName :: AbsolutePath -> Module -> TCM TopLevelModuleName
- Agda.Interaction.Highlighting.HTML: code :: [(Int, String, Aspects)] -> Html
+ Agda.Interaction.Highlighting.HTML: code :: Bool -> FileType -> [TokenInfo] -> Html
- Agda.Interaction.Highlighting.HTML: generateHTMLWithPageGen :: (FilePath -> TopLevelModuleName -> CompressedFile -> TCM ()) -> TCM ()
+ Agda.Interaction.Highlighting.HTML: generateHTMLWithPageGen :: PageGen -> TCM ()
- Agda.Interaction.Highlighting.HTML: generatePage :: (FilePath -> FilePath -> String -> Text) -> FilePath -> TopLevelModuleName -> TCM ()
+ Agda.Interaction.Highlighting.HTML: generatePage :: (FilePath -> FilePath -> Text) -> String -> FilePath -> TopLevelModuleName -> TCM ()
- Agda.Interaction.Highlighting.HTML: page :: FilePath -> TopLevelModuleName -> Html -> Text
+ Agda.Interaction.Highlighting.HTML: page :: FilePath -> Bool -> TopLevelModuleName -> Html -> Text
- Agda.Interaction.Highlighting.HTML: tokenStream :: String -> CompressedFile -> [(Int, String, Aspects)]
+ Agda.Interaction.Highlighting.HTML: tokenStream :: Text -> CompressedFile -> [TokenInfo]
- Agda.Interaction.Highlighting.Precise: Aspects :: Maybe Aspect -> [OtherAspect] -> Maybe String -> Maybe DefinitionSite -> !TokenBased -> Aspects
+ Agda.Interaction.Highlighting.Precise: Aspects :: Maybe Aspect -> Set OtherAspect -> Maybe String -> Maybe DefinitionSite -> !TokenBased -> Aspects
- Agda.Interaction.Highlighting.Precise: Name :: (Maybe NameKind) -> Bool -> Aspect
+ Agda.Interaction.Highlighting.Precise: Name :: Maybe NameKind -> Bool -> Aspect
- Agda.Interaction.Highlighting.Precise: [otherAspects] :: Aspects -> [OtherAspect]
+ Agda.Interaction.Highlighting.Precise: [otherAspects] :: Aspects -> Set OtherAspect
- Agda.Interaction.Imports: alreadyVisited :: TopLevelModuleName -> MainInterface -> TCM (Interface, MaybeWarnings) -> TCM (Interface, MaybeWarnings)
+ Agda.Interaction.Imports: alreadyVisited :: TopLevelModuleName -> MainInterface -> PragmaOptions -> TCM (Interface, MaybeWarnings) -> TCM (Interface, MaybeWarnings)
- Agda.Interaction.Imports: buildInterface :: AbsolutePath -> TopLevelInfo -> [OptionsPragma] -> TCM Interface
+ Agda.Interaction.Imports: buildInterface :: Text -> FileType -> TopLevelInfo -> [OptionsPragma] -> TCM Interface
- Agda.Interaction.Imports: createInterface :: AbsolutePath -> TopLevelModuleName -> MainInterface -> TCM (Interface, MaybeWarnings)
+ Agda.Interaction.Imports: createInterface :: AbsolutePath -> TopLevelModuleName -> MainInterface -> Maybe SourceInfo -> TCM (Interface, MaybeWarnings)
- Agda.Interaction.Imports: getInterface' :: TopLevelModuleName -> MainInterface -> TCM (Interface, MaybeWarnings)
+ Agda.Interaction.Imports: getInterface' :: TopLevelModuleName -> MainInterface -> Maybe SourceInfo -> TCM (Interface, MaybeWarnings)
- Agda.Interaction.Imports: getInterface_ :: TopLevelModuleName -> TCM Interface
+ Agda.Interaction.Imports: getInterface_ :: TopLevelModuleName -> Maybe SourceInfo -> TCM Interface
- Agda.Interaction.Imports: getStoredInterface :: TopLevelModuleName -> AbsolutePath -> MainInterface -> TCM (Bool, (Interface, MaybeWarnings))
+ Agda.Interaction.Imports: getStoredInterface :: TopLevelModuleName -> AbsolutePath -> MainInterface -> Maybe SourceInfo -> TCM (Bool, (Interface, MaybeWarnings))
- Agda.Interaction.Imports: typeCheck :: TopLevelModuleName -> AbsolutePath -> MainInterface -> TCM (Bool, (Interface, MaybeWarnings))
+ Agda.Interaction.Imports: typeCheck :: TopLevelModuleName -> AbsolutePath -> MainInterface -> Maybe SourceInfo -> TCM (Bool, (Interface, MaybeWarnings))
- Agda.Interaction.Imports: typeCheckMain :: AbsolutePath -> Mode -> TCM (Interface, MaybeWarnings)
+ Agda.Interaction.Imports: typeCheckMain :: AbsolutePath -> Mode -> SourceInfo -> TCM (Interface, MaybeWarnings)
- Agda.Interaction.InteractionTop: Command :: IOTCM -> Command
+ Agda.Interaction.InteractionTop: Command :: !a -> Command' a
- Agda.Interaction.InteractionTop: CommandState :: [InteractionId] -> Maybe (AbsolutePath, ClockTime) -> CommandLineOptions -> !OldInteractionScopes -> CommandQueue -> CommandState
+ Agda.Interaction.InteractionTop: CommandState :: [InteractionId] -> Maybe (AbsolutePath, ClockTime) -> CommandLineOptions -> !OldInteractionScopes -> !CommandQueue -> CommandState
- Agda.Interaction.InteractionTop: Done :: Command
+ Agda.Interaction.InteractionTop: Done :: Command' a
- Agda.Interaction.InteractionTop: Error :: String -> Command
+ Agda.Interaction.InteractionTop: Error :: String -> Command' a
- Agda.Interaction.InteractionTop: IOTCM :: FilePath -> HighlightingLevel -> HighlightingMethod -> (Interaction' range) -> IOTCM' range
+ Agda.Interaction.InteractionTop: IOTCM :: FilePath -> HighlightingLevel -> HighlightingMethod -> Interaction' range -> IOTCM' range
- Agda.Interaction.InteractionTop: [commandQueue] :: CommandState -> CommandQueue
+ Agda.Interaction.InteractionTop: [commandQueue] :: CommandState -> !CommandQueue
- Agda.Interaction.InteractionTop: maybeAbort :: CommandM () -> CommandM ()
+ Agda.Interaction.InteractionTop: maybeAbort :: (IOTCM -> CommandM a) -> CommandM (Command' (Maybe a))
- Agda.Interaction.Library: type LibM = ExceptT Doc IO
+ Agda.Interaction.Library: type LibM = ExceptT Doc (WriterT [LibWarning] IO)
- Agda.Interaction.MakeCase: parseVariables :: QName -> Telescope -> InteractionId -> Range -> [String] -> TCM [Int]
+ Agda.Interaction.MakeCase: parseVariables :: QName -> Telescope -> InteractionId -> Range -> [String] -> TCM [(Int, NameInScope)]
- Agda.Interaction.Options: OptArg :: Maybe String -> a -> String -> ArgDescr a
+ Agda.Interaction.Options: OptArg :: (Maybe String -> a) -> String -> ArgDescr a
- Agda.Interaction.Options: Options :: String -> Maybe FilePath -> [FilePath] -> [AbsolutePath] -> [LibName] -> Maybe FilePath -> Bool -> Bool -> Bool -> Maybe Help -> Bool -> Bool -> Bool -> Maybe FilePath -> Bool -> Bool -> Bool -> Maybe FilePath -> FilePath -> FilePath -> Maybe FilePath -> Bool -> Bool -> PragmaOptions -> Bool -> CommandLineOptions
+ Agda.Interaction.Options: Options :: String -> Maybe FilePath -> [FilePath] -> [AbsolutePath] -> [LibName] -> Maybe FilePath -> Bool -> Bool -> Bool -> Maybe Help -> Bool -> Bool -> Bool -> Bool -> Maybe FilePath -> Bool -> Bool -> Bool -> HtmlHighlight -> Maybe FilePath -> FilePath -> FilePath -> Maybe FilePath -> Bool -> Bool -> Bool -> PragmaOptions -> Bool -> CommandLineOptions
- Agda.Interaction.Options: PragmaOptions :: Bool -> Bool -> Bool -> Verbosity -> Bool -> Bool -> Bool -> Bool -> CutOff -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Int -> Int -> Bool -> WarningMode -> Bool -> Bool -> Bool -> Bool -> Bool -> PragmaOptions
+ Agda.Interaction.Options: PragmaOptions :: Bool -> Bool -> Bool -> Verbosity -> Bool -> Bool -> Bool -> Bool -> CutOff -> Bool -> Bool -> Bool -> WithDefault 'True -> WithDefault 'True -> Bool -> Bool -> Bool -> Bool -> WithDefault 'False -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Int -> Bool -> Int -> Bool -> Bool -> Bool -> WarningMode -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> PragmaOptions
- Agda.Interaction.Options: ReqArg :: String -> a -> String -> ArgDescr a
+ Agda.Interaction.Options: ReqArg :: (String -> a) -> String -> ArgDescr a
- Agda.Interaction.Options: [optSizedTypes] :: PragmaOptions -> Bool
+ Agda.Interaction.Options: [optSizedTypes] :: PragmaOptions -> WithDefault 'True
- Agda.Interaction.Options: [optWithoutK] :: PragmaOptions -> Bool
+ Agda.Interaction.Options: [optWithoutK] :: PragmaOptions -> WithDefault 'False
- Agda.Interaction.Response: type InteractionOutputCallback = Response -> IO ()
+ Agda.Interaction.Response: type InteractionOutputCallback = Response -> TCM ()
- Agda.Syntax.Abstract: App :: AppInfo -> Expr -> (NamedArg Expr) -> Expr
+ Agda.Syntax.Abstract: App :: AppInfo -> Expr -> NamedArg Expr -> Expr
- Agda.Syntax.Abstract: AsP :: PatInfo -> BindName -> (Pattern' e) -> Pattern' e
+ Agda.Syntax.Abstract: AsP :: PatInfo -> BindName -> Pattern' e -> Pattern' e
- Agda.Syntax.Abstract: Axiom :: Axiom -> DefInfo -> ArgInfo -> (Maybe [Occurrence]) -> QName -> Expr -> Declaration
+ Agda.Syntax.Abstract: Axiom :: Axiom -> DefInfo -> ArgInfo -> Maybe [Occurrence] -> QName -> Expr -> Declaration
- Agda.Syntax.Abstract: ConP :: ConPatInfo -> AmbiguousQName -> (NAPs e) -> Pattern' e
+ Agda.Syntax.Abstract: ConP :: ConPatInfo -> AmbiguousQName -> NAPs e -> Pattern' e
- Agda.Syntax.Abstract: DataDef :: DefInfo -> QName -> [LamBinding] -> [Constructor] -> Declaration
+ Agda.Syntax.Abstract: DataDef :: DefInfo -> QName -> UniverseCheck -> DataDefParams -> [Constructor] -> Declaration
- Agda.Syntax.Abstract: DataSig :: DefInfo -> QName -> Telescope -> Expr -> Declaration
+ Agda.Syntax.Abstract: DataSig :: DefInfo -> QName -> GeneralizeTelescope -> Expr -> Declaration
- Agda.Syntax.Abstract: DefP :: PatInfo -> AmbiguousQName -> (NAPs e) -> Pattern' e
+ Agda.Syntax.Abstract: DefP :: PatInfo -> AmbiguousQName -> NAPs e -> Pattern' e
- Agda.Syntax.Abstract: DomainFree :: ArgInfo -> BindName -> LamBinding
+ Agda.Syntax.Abstract: DomainFree :: NamedArg BindName -> LamBinding
- Agda.Syntax.Abstract: DomainFull :: TypedBindings -> LamBinding
+ Agda.Syntax.Abstract: DomainFull :: TypedBinding -> LamBinding
- Agda.Syntax.Abstract: Field :: DefInfo -> QName -> (Arg Expr) -> Declaration
+ Agda.Syntax.Abstract: Field :: DefInfo -> QName -> Arg Expr -> Declaration
- Agda.Syntax.Abstract: Fun :: ExprInfo -> (Arg Expr) -> Expr -> Expr
+ Agda.Syntax.Abstract: Fun :: ExprInfo -> Arg Expr -> Expr -> Expr
- Agda.Syntax.Abstract: Name :: !NameId -> Name -> Range -> Fixity' -> Name
+ Agda.Syntax.Abstract: Name :: !NameId -> Name -> Range -> Fixity' -> Bool -> Name
- Agda.Syntax.Abstract: PatternSynDef :: QName -> [Arg Name] -> (Pattern' Void) -> Declaration
+ Agda.Syntax.Abstract: PatternSynDef :: QName -> [Arg Name] -> Pattern' Void -> Declaration
- Agda.Syntax.Abstract: PatternSynP :: PatInfo -> AmbiguousQName -> (NAPs e) -> Pattern' e
+ Agda.Syntax.Abstract: PatternSynP :: PatInfo -> AmbiguousQName -> NAPs e -> Pattern' e
- Agda.Syntax.Abstract: Prop :: ExprInfo -> Expr
+ Agda.Syntax.Abstract: Prop :: ExprInfo -> Integer -> Expr
- Agda.Syntax.Abstract: RecDef :: DefInfo -> QName -> (Maybe (Ranged Induction)) -> (Maybe HasEta) -> (Maybe QName) -> [LamBinding] -> Expr -> [Declaration] -> Declaration
+ Agda.Syntax.Abstract: RecDef :: DefInfo -> QName -> UniverseCheck -> Maybe (Ranged Induction) -> Maybe HasEta -> Maybe QName -> DataDefParams -> Expr -> [Declaration] -> Declaration
- Agda.Syntax.Abstract: RecSig :: DefInfo -> QName -> Telescope -> Expr -> Declaration
+ Agda.Syntax.Abstract: RecSig :: DefInfo -> QName -> GeneralizeTelescope -> Expr -> Declaration
- Agda.Syntax.Abstract: Section :: ModuleInfo -> ModuleName -> [TypedBindings] -> [Declaration] -> Declaration
+ Agda.Syntax.Abstract: Section :: ModuleInfo -> ModuleName -> GeneralizeTelescope -> [Declaration] -> Declaration
- Agda.Syntax.Abstract: TBind :: Range -> [WithHiding BindName] -> Expr -> TypedBinding
+ Agda.Syntax.Abstract: TBind :: Range -> [NamedArg BindName] -> Expr -> TypedBinding
- Agda.Syntax.Abstract: WithP :: PatInfo -> (Pattern' e) -> Pattern' e
+ Agda.Syntax.Abstract: WithP :: PatInfo -> Pattern' e -> Pattern' e
- Agda.Syntax.Abstract: type Telescope = [TypedBindings]
+ Agda.Syntax.Abstract: type Telescope = [TypedBinding]
- Agda.Syntax.Abstract.Name: Name :: !NameId -> Name -> Range -> Fixity' -> Name
+ Agda.Syntax.Abstract.Name: Name :: !NameId -> Name -> Range -> Fixity' -> Bool -> Name
- Agda.Syntax.Abstract.Pattern: LHSAppP :: (NAPs e) -> LHSPatternView e
+ Agda.Syntax.Abstract.Pattern: LHSAppP :: NAPs e -> LHSPatternView e
- Agda.Syntax.Abstract.Pattern: LHSProjP :: ProjOrigin -> AmbiguousQName -> (NamedArg (Pattern' e)) -> LHSPatternView e
+ Agda.Syntax.Abstract.Pattern: LHSProjP :: ProjOrigin -> AmbiguousQName -> NamedArg (Pattern' e) -> LHSPatternView e
- Agda.Syntax.Abstract.Views: mapExpr :: ExprLike a => (Expr -> Expr) -> (a -> a)
+ Agda.Syntax.Abstract.Views: mapExpr :: ExprLike a => (Expr -> Expr) -> a -> a
- Agda.Syntax.Common: Dom :: ArgInfo -> e -> Dom e
+ Agda.Syntax.Common: Dom :: ArgInfo -> !Bool -> Maybe RString -> e -> Dom e
- Agda.Syntax.Common: ImportDirective :: Range -> Using' a b -> [ImportedName' a b] -> [Renaming' a b] -> Bool -> ImportDirective' a b
+ Agda.Syntax.Common: ImportDirective :: Range -> Using' n m -> [ImportedName' n m] -> [Renaming' n m] -> Bool -> ImportDirective' n m
- Agda.Syntax.Common: ImportedModule :: b -> ImportedName' a b
+ Agda.Syntax.Common: ImportedModule :: m -> ImportedName' n m
- Agda.Syntax.Common: ImportedName :: a -> ImportedName' a b
+ Agda.Syntax.Common: ImportedName :: n -> ImportedName' n m
- Agda.Syntax.Common: NoPlaceholder :: !(Maybe PositionInName) -> e -> MaybePlaceholder e
+ Agda.Syntax.Common: NoPlaceholder :: !Maybe PositionInName -> e -> MaybePlaceholder e
- Agda.Syntax.Common: Renaming :: ImportedName' a b -> ImportedName' a b -> Range -> Renaming' a b
+ Agda.Syntax.Common: Renaming :: ImportedName' n m -> ImportedName' n m -> Range -> Renaming' n m
- Agda.Syntax.Common: UseEverything :: Using' a b
+ Agda.Syntax.Common: UseEverything :: Using' n m
- Agda.Syntax.Common: Using :: [ImportedName' a b] -> Using' a b
+ Agda.Syntax.Common: Using :: [ImportedName' n m] -> Using' n m
- Agda.Syntax.Common: [hiding] :: ImportDirective' a b -> [ImportedName' a b]
+ Agda.Syntax.Common: [hiding] :: ImportDirective' n m -> [ImportedName' n m]
- Agda.Syntax.Common: [impRenaming] :: ImportDirective' a b -> [Renaming' a b]
+ Agda.Syntax.Common: [impRenaming] :: ImportDirective' n m -> [Renaming' n m]
- Agda.Syntax.Common: [importDirRange] :: ImportDirective' a b -> Range
+ Agda.Syntax.Common: [importDirRange] :: ImportDirective' n m -> Range
- Agda.Syntax.Common: [publicOpen] :: ImportDirective' a b -> Bool
+ Agda.Syntax.Common: [publicOpen] :: ImportDirective' n m -> Bool
- Agda.Syntax.Common: [renFrom] :: Renaming' a b -> ImportedName' a b
+ Agda.Syntax.Common: [renFrom] :: Renaming' n m -> ImportedName' n m
- Agda.Syntax.Common: [renToRange] :: Renaming' a b -> Range
+ Agda.Syntax.Common: [renToRange] :: Renaming' n m -> Range
- Agda.Syntax.Common: [renTo] :: Renaming' a b -> ImportedName' a b
+ Agda.Syntax.Common: [renTo] :: Renaming' n m -> ImportedName' n m
- Agda.Syntax.Common: [using] :: ImportDirective' a b -> Using' a b
+ Agda.Syntax.Common: [using] :: ImportDirective' n m -> Using' n m
- Agda.Syntax.Common: data ImportDirective' a b
+ Agda.Syntax.Common: data ImportDirective' n m
- Agda.Syntax.Common: data ImportedName' a b
+ Agda.Syntax.Common: data ImportedName' n m
- Agda.Syntax.Common: data Renaming' a b
+ Agda.Syntax.Common: data Renaming' n m
- Agda.Syntax.Common: data Using' a b
+ Agda.Syntax.Common: data Using' n m
- Agda.Syntax.Common: defaultImportDir :: ImportDirective' a b
+ Agda.Syntax.Common: defaultImportDir :: ImportDirective' n m
- Agda.Syntax.Common: isDefaultImportDir :: ImportDirective' a b -> Bool
+ Agda.Syntax.Common: isDefaultImportDir :: ImportDirective' n m -> Bool
- Agda.Syntax.Concrete: App :: Range -> Expr -> (NamedArg Expr) -> Expr
+ Agda.Syntax.Concrete: App :: Range -> Expr -> NamedArg Expr -> Expr
- Agda.Syntax.Concrete: AppP :: Pattern -> (NamedArg Pattern) -> Pattern
+ Agda.Syntax.Concrete: AppP :: Pattern -> NamedArg Pattern -> Pattern
- Agda.Syntax.Concrete: AsName :: Name -> Range -> AsName
+ Agda.Syntax.Concrete: AsName :: a -> Range -> AsName' a
- Agda.Syntax.Concrete: BName :: Name -> Name -> Fixity' -> BoundName
+ Agda.Syntax.Concrete: BName :: Name -> Fixity' -> BoundName
- Agda.Syntax.Concrete: Data :: Range -> Induction -> Name -> [LamBinding] -> (Maybe Expr) -> [TypeSignatureOrInstanceBlock] -> Declaration
+ Agda.Syntax.Concrete: Data :: Range -> Induction -> Name -> [LamBinding] -> Expr -> [TypeSignatureOrInstanceBlock] -> Declaration
- Agda.Syntax.Concrete: DomainFree :: ArgInfo -> BoundName -> LamBinding' a
+ Agda.Syntax.Concrete: DomainFree :: NamedArg BoundName -> LamBinding' a
- Agda.Syntax.Concrete: Field :: IsInstance -> Name -> (Arg Expr) -> Declaration
+ Agda.Syntax.Concrete: Field :: IsInstance -> Name -> Arg Expr -> Declaration
- Agda.Syntax.Concrete: Fun :: Range -> Expr -> Expr -> Expr
+ Agda.Syntax.Concrete: Fun :: Range -> Arg Expr -> Expr -> Expr
- Agda.Syntax.Concrete: HiddenArg :: Range -> (Named_ Expr) -> Expr
+ Agda.Syntax.Concrete: HiddenArg :: Range -> Named_ Expr -> Expr
- Agda.Syntax.Concrete: HiddenP :: Range -> (Named_ Pattern) -> Pattern
+ Agda.Syntax.Concrete: HiddenP :: Range -> Named_ Pattern -> Pattern
- Agda.Syntax.Concrete: Import :: Range -> QName -> (Maybe AsName) -> !OpenShortHand -> ImportDirective -> Declaration
+ Agda.Syntax.Concrete: Import :: Range -> QName -> Maybe AsName -> !OpenShortHand -> ImportDirective -> Declaration
- Agda.Syntax.Concrete: InstanceArg :: Range -> (Named_ Expr) -> Expr
+ Agda.Syntax.Concrete: InstanceArg :: Range -> Named_ Expr -> Expr
- Agda.Syntax.Concrete: InstanceP :: Range -> (Named_ Pattern) -> Pattern
+ Agda.Syntax.Concrete: InstanceP :: Range -> Named_ Pattern -> Pattern
- Agda.Syntax.Concrete: Let :: Range -> [Declaration] -> (Maybe Expr) -> Expr
+ Agda.Syntax.Concrete: Let :: Range -> [Declaration] -> Maybe Expr -> Expr
- Agda.Syntax.Concrete: Module :: Range -> QName -> [TypedBindings] -> [Declaration] -> Declaration
+ Agda.Syntax.Concrete: Module :: Range -> QName -> Telescope -> [Declaration] -> Declaration
- Agda.Syntax.Concrete: OpApp :: Range -> QName -> (Set Name) -> [NamedArg (MaybePlaceholder (OpApp Expr))] -> Expr
+ Agda.Syntax.Concrete: OpApp :: Range -> QName -> Set Name -> [NamedArg (MaybePlaceholder (OpApp Expr))] -> Expr
- Agda.Syntax.Concrete: OpAppP :: Range -> QName -> (Set Name) -> [NamedArg Pattern] -> Pattern
+ Agda.Syntax.Concrete: OpAppP :: Range -> QName -> Set Name -> [NamedArg Pattern] -> Pattern
- Agda.Syntax.Concrete: QuestionMark :: Range -> (Maybe Nat) -> Expr
+ Agda.Syntax.Concrete: QuestionMark :: Range -> Maybe Nat -> Expr
- Agda.Syntax.Concrete: Record :: Range -> Name -> (Maybe (Ranged Induction)) -> (Maybe HasEta) -> (Maybe (Name, IsInstance)) -> [LamBinding] -> (Maybe Expr) -> [Declaration] -> Declaration
+ Agda.Syntax.Concrete: Record :: Range -> Name -> Maybe (Ranged Induction) -> Maybe HasEta -> Maybe (Name, IsInstance) -> [LamBinding] -> Expr -> [Declaration] -> Declaration
- Agda.Syntax.Concrete: SectionApp :: Range -> [TypedBindings] -> Expr -> ModuleApplication
+ Agda.Syntax.Concrete: SectionApp :: Range -> Telescope -> Expr -> ModuleApplication
- Agda.Syntax.Concrete: TBind :: Range -> [WithHiding BoundName] -> e -> TypedBinding' e
+ Agda.Syntax.Concrete: TBind :: Range -> [NamedArg BoundName] -> e -> TypedBinding' e
- Agda.Syntax.Concrete: TerminationCheckPragma :: Range -> (TerminationCheck Name) -> Pragma
+ Agda.Syntax.Concrete: TerminationCheckPragma :: Range -> TerminationCheck Name -> Pragma
- Agda.Syntax.Concrete: Underscore :: Range -> (Maybe String) -> Expr
+ Agda.Syntax.Concrete: Underscore :: Range -> Maybe String -> Expr
- Agda.Syntax.Concrete: [asName] :: AsName -> Name
+ Agda.Syntax.Concrete: [asName] :: AsName' a -> a
- Agda.Syntax.Concrete: [asRange] :: AsName -> Range
+ Agda.Syntax.Concrete: [asRange] :: AsName' a -> Range
- Agda.Syntax.Concrete: type LamBinding = LamBinding' TypedBindings
+ Agda.Syntax.Concrete: type LamBinding = LamBinding' TypedBinding
- Agda.Syntax.Concrete: type Telescope = [TypedBindings]
+ Agda.Syntax.Concrete: type Telescope = [TypedBinding]
- Agda.Syntax.Concrete.Definitions: Axiom :: Range -> Fixity' -> Access -> IsAbstract -> IsInstance -> ArgInfo -> (Maybe [Occurrence]) -> Name -> Expr -> NiceDeclaration
+ Agda.Syntax.Concrete.Definitions: Axiom :: Range -> Access -> IsAbstract -> IsInstance -> ArgInfo -> Name -> Expr -> NiceDeclaration
- Agda.Syntax.Concrete.Definitions: FunDef :: Range -> [Declaration] -> Fixity' -> IsAbstract -> IsInstance -> TerminationCheck -> Name -> [Clause] -> NiceDeclaration
+ Agda.Syntax.Concrete.Definitions: FunDef :: Range -> [Declaration] -> IsAbstract -> IsInstance -> TerminationCheck -> Name -> [Clause] -> NiceDeclaration
- Agda.Syntax.Concrete.Definitions: FunSig :: Range -> Fixity' -> Access -> IsAbstract -> IsInstance -> IsMacro -> ArgInfo -> TerminationCheck -> Name -> Expr -> NiceDeclaration
+ Agda.Syntax.Concrete.Definitions: FunSig :: Range -> Access -> IsAbstract -> IsInstance -> IsMacro -> ArgInfo -> TerminationCheck -> Name -> Expr -> NiceDeclaration
- Agda.Syntax.Concrete.Definitions: MissingWithClauses :: Name -> DeclarationException
+ Agda.Syntax.Concrete.Definitions: MissingWithClauses :: Name -> LHS -> DeclarationException
- Agda.Syntax.Concrete.Definitions: NiceDataSig :: Range -> Fixity' -> Access -> IsAbstract -> PositivityCheck -> Name -> [LamBinding] -> Expr -> NiceDeclaration
+ Agda.Syntax.Concrete.Definitions: NiceDataSig :: Range -> Access -> IsAbstract -> PositivityCheck -> UniverseCheck -> Name -> [LamBinding] -> Expr -> NiceDeclaration
- Agda.Syntax.Concrete.Definitions: NiceField :: Range -> Fixity' -> Access -> IsAbstract -> IsInstance -> Name -> (Arg Expr) -> NiceDeclaration
+ Agda.Syntax.Concrete.Definitions: NiceField :: Range -> Access -> IsAbstract -> IsInstance -> Name -> Arg Expr -> NiceDeclaration
- Agda.Syntax.Concrete.Definitions: NiceImport :: Range -> QName -> (Maybe AsName) -> OpenShortHand -> ImportDirective -> NiceDeclaration
+ Agda.Syntax.Concrete.Definitions: NiceImport :: Range -> QName -> Maybe AsName -> OpenShortHand -> ImportDirective -> NiceDeclaration
- Agda.Syntax.Concrete.Definitions: NicePatternSyn :: Range -> Fixity' -> Name -> [Arg Name] -> Pattern -> NiceDeclaration
+ Agda.Syntax.Concrete.Definitions: NicePatternSyn :: Range -> Name -> [Arg Name] -> Pattern -> NiceDeclaration
- Agda.Syntax.Concrete.Definitions: NiceRecSig :: Range -> Fixity' -> Access -> IsAbstract -> PositivityCheck -> Name -> [LamBinding] -> Expr -> NiceDeclaration
+ Agda.Syntax.Concrete.Definitions: NiceRecSig :: Range -> Access -> IsAbstract -> PositivityCheck -> UniverseCheck -> Name -> [LamBinding] -> Expr -> NiceDeclaration
- Agda.Syntax.Concrete.Definitions: NiceUnquoteDecl :: Range -> [Fixity'] -> Access -> IsAbstract -> IsInstance -> TerminationCheck -> [Name] -> Expr -> NiceDeclaration
+ Agda.Syntax.Concrete.Definitions: NiceUnquoteDecl :: Range -> Access -> IsAbstract -> IsInstance -> TerminationCheck -> [Name] -> Expr -> NiceDeclaration
- Agda.Syntax.Concrete.Definitions: NiceUnquoteDef :: Range -> [Fixity'] -> Access -> IsAbstract -> TerminationCheck -> [Name] -> Expr -> NiceDeclaration
+ Agda.Syntax.Concrete.Definitions: NiceUnquoteDef :: Range -> Access -> IsAbstract -> TerminationCheck -> [Name] -> Expr -> NiceDeclaration
- Agda.Syntax.Concrete.Definitions: NotAllowedInMutual :: NiceDeclaration -> DeclarationException
+ Agda.Syntax.Concrete.Definitions: NotAllowedInMutual :: Range -> String -> DeclarationWarning
- Agda.Syntax.Concrete.Definitions: PragmaNoTerminationCheck :: Range -> DeclarationException
+ Agda.Syntax.Concrete.Definitions: PragmaNoTerminationCheck :: Range -> DeclarationWarning
- Agda.Syntax.Concrete.Definitions: PrimitiveFunction :: Range -> Fixity' -> Access -> IsAbstract -> Name -> Expr -> NiceDeclaration
+ Agda.Syntax.Concrete.Definitions: PrimitiveFunction :: Range -> Access -> IsAbstract -> Name -> Expr -> NiceDeclaration
- Agda.Syntax.Concrete.Definitions: niceDeclarations :: [Declaration] -> Nice [NiceDeclaration]
+ Agda.Syntax.Concrete.Definitions: niceDeclarations :: Fixities -> [Declaration] -> Nice [NiceDeclaration]
- Agda.Syntax.Concrete.Name: Name :: Range -> [NamePart] -> Name
+ Agda.Syntax.Concrete.Name: Name :: Range -> NameInScope -> [NamePart] -> Name
- Agda.Syntax.Concrete.Operators.Parser: AppV :: e -> (NamedArg e) -> ExprView e
+ Agda.Syntax.Concrete.Operators.Parser: AppV :: e -> NamedArg e -> ExprView e
- Agda.Syntax.Concrete.Operators.Parser: HiddenArgV :: (Named_ e) -> ExprView e
+ Agda.Syntax.Concrete.Operators.Parser: HiddenArgV :: Named_ e -> ExprView e
- Agda.Syntax.Concrete.Operators.Parser: InstanceArgV :: (Named_ e) -> ExprView e
+ Agda.Syntax.Concrete.Operators.Parser: InstanceArgV :: Named_ e -> ExprView e
- Agda.Syntax.Concrete.Operators.Parser: OpAppV :: QName -> (Set Name) -> [NamedArg (MaybePlaceholder (OpApp e))] -> ExprView e
+ Agda.Syntax.Concrete.Operators.Parser: OpAppV :: QName -> Set Name -> [NamedArg (MaybePlaceholder (OpApp e))] -> ExprView e
- Agda.Syntax.Concrete.Operators.Parser.Monad: NodeK :: (Either Integer Integer) -> MemoKey
+ Agda.Syntax.Concrete.Operators.Parser.Monad: NodeK :: Either Integer Integer -> MemoKey
- Agda.Syntax.Concrete.Operators.Parser.Monad: PostLeftsK :: (Either Integer Integer) -> MemoKey
+ Agda.Syntax.Concrete.Operators.Parser.Monad: PostLeftsK :: Either Integer Integer -> MemoKey
- Agda.Syntax.Concrete.Operators.Parser.Monad: PreRightsK :: (Either Integer Integer) -> MemoKey
+ Agda.Syntax.Concrete.Operators.Parser.Monad: PreRightsK :: Either Integer Integer -> MemoKey
- Agda.Syntax.Concrete.Pretty: SpecialCharacters :: Doc -> Doc -> Doc -> Doc -> Doc -> SpecialCharacters
+ Agda.Syntax.Concrete.Pretty: SpecialCharacters :: (Doc -> Doc) -> Doc -> Doc -> Doc -> SpecialCharacters
- Agda.Syntax.Info: ConPatInfo :: ConOrigin -> PatInfo -> Bool -> ConPatInfo
+ Agda.Syntax.Info: ConPatInfo :: ConOrigin -> PatInfo -> ConPatLazy -> ConPatInfo
- Agda.Syntax.Info: [patLazy] :: ConPatInfo -> Bool
+ Agda.Syntax.Info: [patLazy] :: ConPatInfo -> ConPatLazy
- Agda.Syntax.Internal: Apply :: (Arg a) -> Elim' a
+ Agda.Syntax.Internal: Apply :: Arg a -> Elim' a
- Agda.Syntax.Internal: Clause :: Range -> Range -> Telescope -> [NamedArg DeBruijnPattern] -> Maybe Term -> Maybe (Arg Type) -> Bool -> Maybe Bool -> Clause
+ Agda.Syntax.Internal: Clause :: Range -> Range -> Telescope -> NAPs -> Maybe Term -> Maybe (Arg Type) -> Bool -> Maybe Bool -> Clause
- Agda.Syntax.Internal: ConHead :: QName -> Induction -> [QName] -> ConHead
+ Agda.Syntax.Internal: ConHead :: QName -> Induction -> [Arg QName] -> ConHead
- Agda.Syntax.Internal: ConPatternInfo :: Maybe PatOrigin -> Maybe (Arg Type) -> Bool -> ConPatternInfo
+ Agda.Syntax.Internal: ConPatternInfo :: Maybe PatOrigin -> Bool -> Maybe (Arg Type) -> Bool -> ConPatternInfo
- Agda.Syntax.Internal: ExtendTel :: a -> (Abs (Tele a)) -> Tele a
+ Agda.Syntax.Internal: ExtendTel :: a -> Abs (Tele a) -> Tele a
- Agda.Syntax.Internal: Lam :: ArgInfo -> (Abs Term) -> Term
+ Agda.Syntax.Internal: Lam :: ArgInfo -> Abs Term -> Term
- Agda.Syntax.Internal: Lift :: !Int -> (Substitution' a) -> Substitution' a
+ Agda.Syntax.Internal: Lift :: !Int -> Substitution' a -> Substitution' a
- Agda.Syntax.Internal: Pi :: (Dom Type) -> (Abs Type) -> Term
+ Agda.Syntax.Internal: Pi :: Dom Type -> Abs Type -> Term
- Agda.Syntax.Internal: PiSort :: Sort -> (Abs Sort) -> Sort
+ Agda.Syntax.Internal: PiSort :: Sort -> Abs Sort -> Sort
- Agda.Syntax.Internal: Prop :: Sort
+ Agda.Syntax.Internal: Prop :: Level -> Sort
- Agda.Syntax.Internal: Strengthen :: Empty -> (Substitution' a) -> Substitution' a
+ Agda.Syntax.Internal: Strengthen :: Empty -> Substitution' a -> Substitution' a
- Agda.Syntax.Internal: Wk :: !Int -> (Substitution' a) -> Substitution' a
+ Agda.Syntax.Internal: Wk :: !Int -> Substitution' a -> Substitution' a
- Agda.Syntax.Internal: [conFields] :: ConHead -> [QName]
+ Agda.Syntax.Internal: [conFields] :: ConHead -> [Arg QName]
- Agda.Syntax.Internal: [namedClausePats] :: Clause -> [NamedArg DeBruijnPattern]
+ Agda.Syntax.Internal: [namedClausePats] :: Clause -> NAPs
- Agda.Syntax.Internal: type Elims = [Elim] eliminations ordered left-to-right.
+ Agda.Syntax.Internal: type Elims = [Elim] " eliminations ordered left-to-right."
- Agda.Syntax.Internal: type Pattern = Pattern' PatVarName The @PatVarName@ is a name suggestion.
+ Agda.Syntax.Internal: type Pattern = Pattern' PatVarName " The @PatVarName@ is a name suggestion."
- Agda.Syntax.Internal.Defs: GetDefsEnv :: MetaId -> Maybe Term -> QName -> b -> GetDefsEnv b
+ Agda.Syntax.Internal.Defs: GetDefsEnv :: (MetaId -> Maybe Term) -> (QName -> b) -> GetDefsEnv b
- Agda.Syntax.Notation: BindHole :: !Int -> GenPart
+ Agda.Syntax.Notation: BindHole :: Range -> Ranged Int -> GenPart
- Agda.Syntax.Notation: ExprHole :: RawName -> HoleName
+ Agda.Syntax.Notation: ExprHole :: RString -> HoleName
- Agda.Syntax.Notation: IdPart :: RawName -> GenPart
+ Agda.Syntax.Notation: IdPart :: RString -> GenPart
- Agda.Syntax.Notation: LambdaHole :: RawName -> RawName -> HoleName
+ Agda.Syntax.Notation: LambdaHole :: RString -> RString -> HoleName
- Agda.Syntax.Notation: NormalHole :: (NamedArg Int) -> GenPart
+ Agda.Syntax.Notation: NormalHole :: Range -> NamedArg (Ranged Int) -> GenPart
- Agda.Syntax.Notation: WildHole :: !Int -> GenPart
+ Agda.Syntax.Notation: WildHole :: Ranged Int -> GenPart
- Agda.Syntax.Notation: [_bindHoleName] :: HoleName -> RawName
+ Agda.Syntax.Notation: [_bindHoleName] :: HoleName -> RString
- Agda.Syntax.Notation: [holeName] :: HoleName -> RawName
+ Agda.Syntax.Notation: [holeName] :: HoleName -> RString
- Agda.Syntax.Notation: mkNotation :: [NamedArg HoleName] -> [RawName] -> Either String Notation
+ Agda.Syntax.Notation: mkNotation :: [NamedArg HoleName] -> [RString] -> Either String Notation
- Agda.Syntax.Notation: stringParts :: Notation -> [RawName]
+ Agda.Syntax.Notation: stringParts :: Notation -> [String]
- Agda.Syntax.Parser: OverlappingTokensError :: !(Range' SrcFile) -> ParseError
+ Agda.Syntax.Parser: OverlappingTokensError :: !Range' SrcFile -> ParseError
- Agda.Syntax.Parser: OverlappingTokensWarning :: !(Range' SrcFile) -> ParseWarning
+ Agda.Syntax.Parser: OverlappingTokensWarning :: !Range' SrcFile -> ParseWarning
- Agda.Syntax.Parser: [errRange] :: ParseError -> !(Range' SrcFile)
+ Agda.Syntax.Parser: [errRange] :: ParseError -> !Range' SrcFile
- Agda.Syntax.Parser: [warnRange] :: ParseWarning -> !(Range' SrcFile)
+ Agda.Syntax.Parser: [warnRange] :: ParseWarning -> !Range' SrcFile
- Agda.Syntax.Parser: runPMIO :: (MonadIO m) => PM a -> m (Either ParseError a, [ParseWarning])
+ Agda.Syntax.Parser: runPMIO :: MonadIO m => PM a -> m (Either ParseError a, [ParseWarning])
- Agda.Syntax.Parser.Literate: literateProcessors :: [(String, Processor)]
+ Agda.Syntax.Parser.Literate: literateProcessors :: [(String, (Processor, FileType))]
- Agda.Syntax.Parser.Monad: OverlappingTokensError :: !(Range' SrcFile) -> ParseError
+ Agda.Syntax.Parser.Monad: OverlappingTokensError :: !Range' SrcFile -> ParseError
- Agda.Syntax.Parser.Monad: OverlappingTokensWarning :: !(Range' SrcFile) -> ParseWarning
+ Agda.Syntax.Parser.Monad: OverlappingTokensWarning :: !Range' SrcFile -> ParseWarning
- Agda.Syntax.Parser.Monad: [errRange] :: ParseError -> !(Range' SrcFile)
+ Agda.Syntax.Parser.Monad: [errRange] :: ParseError -> !Range' SrcFile
- Agda.Syntax.Parser.Monad: [warnRange] :: ParseWarning -> !(Range' SrcFile)
+ Agda.Syntax.Parser.Monad: [warnRange] :: ParseWarning -> !Range' SrcFile
- Agda.Syntax.Parser.Tokens: TokEOF :: Token
+ Agda.Syntax.Parser.Tokens: TokEOF :: Interval -> Token
- Agda.Syntax.Position: Interval :: !(Position' a) -> Interval' a
+ Agda.Syntax.Position: Interval :: !Position' a -> Interval' a
- Agda.Syntax.Position: Range :: !a -> (Seq IntervalWithoutFile) -> Range' a
+ Agda.Syntax.Position: Range :: !a -> Seq IntervalWithoutFile -> Range' a
- Agda.Syntax.Position: [iStart, iEnd] :: Interval' a -> !(Position' a)
+ Agda.Syntax.Position: [iStart, iEnd] :: Interval' a -> !Position' a
- Agda.Syntax.Position: fuseRanges :: (Ord a) => Range' a -> Range' a -> Range' a
+ Agda.Syntax.Position: fuseRanges :: Ord a => Range' a -> Range' a -> Range' a
- Agda.Syntax.Position: interleaveRanges :: (HasRange a) => [a] -> [a] -> ([a], [(a, a)])
+ Agda.Syntax.Position: interleaveRanges :: HasRange a => [a] -> [a] -> ([a], [(a, a)])
- Agda.Syntax.Reflected: Apply :: (Arg a) -> Elim' a
+ Agda.Syntax.Reflected: Apply :: Arg a -> Elim' a
- Agda.Syntax.Reflected: Lam :: Hiding -> (Abs Term) -> Term
+ Agda.Syntax.Reflected: Lam :: Hiding -> Abs Term -> Term
- Agda.Syntax.Reflected: Pi :: (Dom Type) -> (Abs Type) -> Term
+ Agda.Syntax.Reflected: Pi :: Dom Type -> Abs Type -> Term
- Agda.Syntax.Scope.Base: AbsName :: QName -> KindOfName -> WhyInScope -> AbstractName
+ Agda.Syntax.Scope.Base: AbsName :: QName -> KindOfName -> WhyInScope -> NameMetadata -> AbstractName
- Agda.Syntax.Scope.Base: ConstructorName :: (NonemptyList AbstractName) -> ResolvedName
+ Agda.Syntax.Scope.Base: ConstructorName :: NonemptyList AbstractName -> ResolvedName
- Agda.Syntax.Scope.Base: FieldName :: (NonemptyList AbstractName) -> ResolvedName
+ Agda.Syntax.Scope.Base: FieldName :: NonemptyList AbstractName -> ResolvedName
- Agda.Syntax.Scope.Base: PatternSynResName :: (NonemptyList AbstractName) -> ResolvedName
+ Agda.Syntax.Scope.Base: PatternSynResName :: NonemptyList AbstractName -> ResolvedName
- Agda.Syntax.Scope.Base: ScopeInfo :: ModuleName -> Map ModuleName Scope -> LocalVars -> LocalVars -> PrecedenceStack -> Map QName [QName] -> Map ModuleName [QName] -> InScopeSet -> ScopeInfo
+ Agda.Syntax.Scope.Base: ScopeInfo :: ModuleName -> Map ModuleName Scope -> LocalVars -> LocalVars -> PrecedenceStack -> NameMap -> ModuleMap -> InScopeSet -> Fixities -> Polarities -> ScopeInfo
- Agda.Syntax.Scope.Base: [scopeInverseModule] :: ScopeInfo -> Map ModuleName [QName]
+ Agda.Syntax.Scope.Base: [scopeInverseModule] :: ScopeInfo -> ModuleMap
- Agda.Syntax.Scope.Base: [scopeInverseName] :: ScopeInfo -> Map QName [QName]
+ Agda.Syntax.Scope.Base: [scopeInverseName] :: ScopeInfo -> NameMap
- Agda.Syntax.Scope.Base: updateScopeNameSpacesM :: (Functor m) => (ScopeNameSpaces -> m ScopeNameSpaces) -> Scope -> m Scope
+ Agda.Syntax.Scope.Base: updateScopeNameSpacesM :: Functor m => (ScopeNameSpaces -> m ScopeNameSpaces) -> Scope -> m Scope
- Agda.Syntax.Scope.Monad: mapImportDir :: (Eq a, Eq b) => [ImportedName' (a, c) (b, d)] -> [ImportedName' (a, c) (b, d)] -> ImportDirective' a b -> ImportDirective' c d
+ Agda.Syntax.Scope.Monad: mapImportDir :: (Eq n1, Eq m1) => [ImportedName' (n1, n2) (m1, m2)] -> [ImportedName' (n1, n2) (m1, m2)] -> ImportDirective' n1 m1 -> ImportDirective' n2 m2
- Agda.Syntax.Scope.Monad: mapRenaming :: (Eq a, Eq b) => [ImportedName' (a, c) (b, d)] -> [ImportedName' (a, c) (b, d)] -> Renaming' a b -> Renaming' c d
+ Agda.Syntax.Scope.Monad: mapRenaming :: (Eq n1, Eq m1) => [ImportedName' (n1, n2) (m1, m2)] -> [ImportedName' (n1, n2) (m1, m2)] -> Renaming' n1 m1 -> Renaming' n2 m2
- Agda.Syntax.Scope.Monad: mapUsing :: (Eq a, Eq b) => [ImportedName' (a, c) (b, d)] -> Using' a b -> Using' c d
+ Agda.Syntax.Scope.Monad: mapUsing :: (Eq n1, Eq m1) => [ImportedName' (n1, n2) (m1, m2)] -> Using' n1 m1 -> Using' n2 m2
- Agda.Syntax.Scope.Monad: openModule_ :: QName -> ImportDirective -> ScopeM ImportDirective
+ Agda.Syntax.Scope.Monad: openModule_ :: OpenKind -> QName -> ImportDirective -> ScopeM ImportDirective
- Agda.Termination.CallGraph: (>*<) :: (CallComb a, (?cutoff :: CutOff)) => a -> a -> a
+ Agda.Termination.CallGraph: (>*<) :: (CallComb a, ?cutoff :: CutOff) => a -> a -> a
- Agda.Termination.CallGraph: complete :: (?cutoff :: CutOff) => Monoid cinfo => CallGraph cinfo -> CallGraph cinfo
+ Agda.Termination.CallGraph: complete :: ?cutoff :: CutOff => Monoid cinfo => CallGraph cinfo -> CallGraph cinfo
- Agda.Termination.CallGraph: completionStep :: (?cutoff :: CutOff) => Monoid cinfo => CallGraph cinfo -> CallGraph cinfo -> (CallGraph cinfo, CallGraph cinfo)
+ Agda.Termination.CallGraph: completionStep :: ?cutoff :: CutOff => Monoid cinfo => CallGraph cinfo -> CallGraph cinfo -> (CallGraph cinfo, CallGraph cinfo)
- Agda.Termination.CallMatrix: (>*<) :: (CallComb a, (?cutoff :: CutOff)) => a -> a -> a
+ Agda.Termination.CallMatrix: (>*<) :: (CallComb a, ?cutoff :: CutOff) => a -> a -> a
- Agda.Termination.Monad: TerEnv :: Bool -> Bool -> Bool -> Maybe QName -> Maybe QName -> CutOff -> QName -> MutualNames -> [QName] -> Bool -> Maybe Target -> Delayed -> [Bool] -> Bool -> Int -> MaskedDeBruijnPatterns -> !Int -> !Guarded -> Bool -> VarSet -> TerEnv
+ Agda.Termination.Monad: TerEnv :: Bool -> Bool -> Maybe QName -> Maybe QName -> CutOff -> QName -> MutualNames -> [QName] -> Bool -> Maybe Target -> Delayed -> [Bool] -> Bool -> Int -> MaskedDeBruijnPatterns -> !Int -> !Guarded -> Bool -> VarSet -> TerEnv
- Agda.Termination.Monad: terGetPatterns :: TerM (MaskedDeBruijnPatterns)
+ Agda.Termination.Monad: terGetPatterns :: TerM MaskedDeBruijnPatterns
- Agda.Termination.Order: (.*.) :: (?cutoff :: CutOff) => Order -> Order -> Order
+ Agda.Termination.Order: (.*.) :: ?cutoff :: CutOff => Order -> Order -> Order
- Agda.Termination.Order: Mat :: {-# UNPACK #-} !(Matrix Int Order) -> Order
+ Agda.Termination.Order: Mat :: {-# UNPACK #-} !Matrix Int Order -> Order
- Agda.Termination.Order: collapseO :: (?cutoff :: CutOff) => Order -> Order
+ Agda.Termination.Order: collapseO :: ?cutoff :: CutOff => Order -> Order
- Agda.Termination.Order: decr :: (?cutoff :: CutOff) => Bool -> Int -> Order
+ Agda.Termination.Order: decr :: ?cutoff :: CutOff => Bool -> Int -> Order
- Agda.Termination.Order: infimum :: (?cutoff :: CutOff) => [Order] -> Order
+ Agda.Termination.Order: infimum :: ?cutoff :: CutOff => [Order] -> Order
- Agda.Termination.Order: isOrder :: (?cutoff :: CutOff) => Order -> Bool
+ Agda.Termination.Order: isOrder :: ?cutoff :: CutOff => Order -> Bool
- Agda.Termination.Order: orderSemiring :: (?cutoff :: CutOff) => Semiring Order
+ Agda.Termination.Order: orderSemiring :: ?cutoff :: CutOff => Semiring Order
- Agda.Termination.Order: supremum :: (?cutoff :: CutOff) => [Order] -> Order
+ Agda.Termination.Order: supremum :: ?cutoff :: CutOff => [Order] -> Order
- Agda.Termination.Semiring: Semiring :: a -> a -> a -> a -> a -> a -> a -> Semiring a
+ Agda.Termination.Semiring: Semiring :: (a -> a -> a) -> (a -> a -> a) -> a -> Semiring a
- Agda.Termination.SparseMatrix: interAssocWith :: (Ord i) => (a -> a -> a) -> [(i, a)] -> [(i, a)] -> [(i, a)]
+ Agda.Termination.SparseMatrix: interAssocWith :: Ord i => (a -> a -> a) -> [(i, a)] -> [(i, a)] -> [(i, a)]
- Agda.Termination.SparseMatrix: intersectWith :: (Ord i) => (a -> a -> a) -> Matrix i a -> Matrix i a -> Matrix i a
+ Agda.Termination.SparseMatrix: intersectWith :: Ord i => (a -> a -> a) -> Matrix i a -> Matrix i a -> Matrix i a
- Agda.Termination.SparseMatrix: toSparseRows :: (Eq i) => Matrix i b -> [(i, [(i, b)])]
+ Agda.Termination.SparseMatrix: toSparseRows :: Eq i => Matrix i b -> [(i, [(i, b)])]
- Agda.Termination.SparseMatrix: zipAssocWith :: (Ord i) => ([(i, a)] -> [(i, c)]) -> ([(i, b)] -> [(i, c)]) -> (a -> Maybe c) -> (b -> Maybe c) -> (a -> b -> Maybe c) -> [(i, a)] -> [(i, b)] -> [(i, c)]
+ Agda.Termination.SparseMatrix: zipAssocWith :: Ord i => ([(i, a)] -> [(i, c)]) -> ([(i, b)] -> [(i, c)]) -> (a -> Maybe c) -> (b -> Maybe c) -> (a -> b -> Maybe c) -> [(i, a)] -> [(i, b)] -> [(i, c)]
- Agda.Termination.SparseMatrix: zipMatrices :: forall a b c i. (Ord i) => (a -> c) -> (b -> c) -> (a -> b -> c) -> (c -> Bool) -> Matrix i a -> Matrix i b -> Matrix i c
+ Agda.Termination.SparseMatrix: zipMatrices :: forall a b c i. Ord i => (a -> c) -> (b -> c) -> (a -> b -> c) -> (c -> Bool) -> Matrix i a -> Matrix i b -> Matrix i c
- Agda.Termination.Termination: idempotent :: (?cutoff :: CutOff) => CallMatrixAug cinfo -> Bool
+ Agda.Termination.Termination: idempotent :: ?cutoff :: CutOff => CallMatrixAug cinfo -> Bool
- Agda.TypeChecking.Abstract: swap01 :: (Subst Term a) => a -> a
+ Agda.TypeChecking.Abstract: swap01 :: Subst Term a => a -> a
- Agda.TypeChecking.CheckInternal: Action :: Type -> Term -> TCM Term -> Type -> Term -> TCM Term -> Relevance -> Relevance -> Relevance -> Action
+ Agda.TypeChecking.CheckInternal: Action :: (Type -> Term -> TCM Term) -> (Type -> Term -> TCM Term) -> (Relevance -> Relevance -> Relevance) -> Action
- Agda.TypeChecking.CompiledClause: Branches :: Bool -> Map QName (WithArity c) -> Maybe (ConHead, WithArity c) -> Map Literal c -> Maybe c -> Bool -> Case c
+ Agda.TypeChecking.CompiledClause: Branches :: Bool -> Map QName (WithArity c) -> Maybe (ConHead, WithArity c) -> Map Literal c -> Maybe c -> Maybe Bool -> Bool -> Case c
- Agda.TypeChecking.CompiledClause: Case :: (Arg Int) -> (Case (CompiledClauses' a)) -> CompiledClauses' a
+ Agda.TypeChecking.CompiledClause: Case :: Arg Int -> Case (CompiledClauses' a) -> CompiledClauses' a
- Agda.TypeChecking.CompiledClause: conCase :: QName -> WithArity c -> Case c
+ Agda.TypeChecking.CompiledClause: conCase :: QName -> Bool -> WithArity c -> Case c
- Agda.TypeChecking.CompiledClause.Compile: compileClauses :: Maybe (QName, Type) -> [Clause] -> TCM CompiledClauses
+ Agda.TypeChecking.CompiledClause.Compile: compileClauses :: Maybe (QName, Type) -> [Clause] -> TCM (Maybe SplitTree, CompiledClauses)
- Agda.TypeChecking.CompiledClause.Compile: compileClauses' :: RunRecordPatternTranslation -> [Clause] -> TCM CompiledClauses
+ Agda.TypeChecking.CompiledClause.Compile: compileClauses' :: RunRecordPatternTranslation -> [Clause] -> Maybe SplitTree -> TCM CompiledClauses
- Agda.TypeChecking.CompiledClause.Compile: substBody :: (Subst t a) => Int -> Int -> t -> a -> a
+ Agda.TypeChecking.CompiledClause.Compile: substBody :: Subst t a => Int -> Int -> t -> a -> a
- Agda.TypeChecking.Conversion: coerce :: Term -> Type -> Type -> TCM Term
+ Agda.TypeChecking.Conversion: coerce :: Comparison -> Term -> Type -> Type -> TCM Term
- Agda.TypeChecking.Coverage: splitResult :: QName -> SplitClause -> TCM (Either CosplitError Covering)
+ Agda.TypeChecking.Coverage: splitResult :: QName -> SplitClause -> TCM (Either SplitError [SplitClause])
- Agda.TypeChecking.Coverage.Match: Block :: Bool -> BlockingVars -> Match a
+ Agda.TypeChecking.Coverage.Match: Block :: BlockedOnResult -> BlockingVars -> Match a
- Agda.TypeChecking.Coverage.Match: [blockedOnResult] :: Match a -> Bool
+ Agda.TypeChecking.Coverage.Match: [blockedOnResult] :: Match a -> BlockedOnResult
- Agda.TypeChecking.Coverage.Match: applySplitPSubst :: (Subst Term a) => SplitPSubstitution -> a -> a
+ Agda.TypeChecking.Coverage.Match: applySplitPSubst :: Subst Term a => SplitPSubstitution -> a -> a
- Agda.TypeChecking.Coverage.Match: isTrivialPattern :: (HasConstInfo m) => Pattern' a -> m Bool
+ Agda.TypeChecking.Coverage.Match: isTrivialPattern :: HasConstInfo m => Pattern' a -> m Bool
- Agda.TypeChecking.Coverage.Match: match :: [Clause] -> [NamedArg SplitPattern] -> Match (Nat, [SplitPattern])
+ Agda.TypeChecking.Coverage.Match: match :: (MonadReduce m, HasConstInfo m, HasBuiltins m) => [Clause] -> [NamedArg SplitPattern] -> m (Match (Nat, [SplitAssignment]))
- Agda.TypeChecking.Datatypes: getConHead :: QName -> TCM (Either SigError ConHead)
+ Agda.TypeChecking.Datatypes: getConHead :: HasConstInfo m => QName -> m (Either SigError ConHead)
- Agda.TypeChecking.Datatypes: getFullyAppliedConType :: ConHead -> Type -> TCM (Maybe ((QName, Type, Args), Type))
+ Agda.TypeChecking.Datatypes: getFullyAppliedConType :: (HasConstInfo m, MonadReduce m, MonadDebug m) => ConHead -> Type -> m (Maybe ((QName, Type, Args), Type))
- Agda.TypeChecking.Empty: isEmptyType :: Range -> Type -> TCM ()
+ Agda.TypeChecking.Empty: isEmptyType :: Type -> TCM Bool
- Agda.TypeChecking.EtaContract: App :: Term -> (Arg Term) -> BinAppView
+ Agda.TypeChecking.EtaContract: App :: Term -> Arg Term -> BinAppView
- Agda.TypeChecking.EtaContract: etaCon :: (MonadReader TCEnv m, HasConstInfo m, HasOptions m) => ConHead -> ConInfo -> Args -> (QName -> ConHead -> ConInfo -> Args -> m Term) -> m Term
+ Agda.TypeChecking.EtaContract: etaCon :: (MonadTCEnv m, HasConstInfo m, HasOptions m) => ConHead -> ConInfo -> Elims -> (QName -> ConHead -> ConInfo -> Args -> m Term) -> m Term
- Agda.TypeChecking.EtaContract: etaContract :: (MonadReader TCEnv m, HasConstInfo m, HasOptions m, TermLike a) => a -> m a
+ Agda.TypeChecking.EtaContract: etaContract :: (MonadTCEnv m, HasConstInfo m, HasOptions m, TermLike a) => a -> m a
- Agda.TypeChecking.EtaContract: etaLam :: (MonadReader TCEnv m, HasConstInfo m, HasOptions m) => ArgInfo -> ArgName -> Term -> m Term
+ Agda.TypeChecking.EtaContract: etaLam :: (MonadTCEnv m, HasConstInfo m, HasOptions m) => ArgInfo -> ArgName -> Term -> m Term
- Agda.TypeChecking.EtaContract: etaOnce :: (MonadReader TCEnv m, HasConstInfo m, HasOptions m) => Term -> m Term
+ Agda.TypeChecking.EtaContract: etaOnce :: (MonadTCEnv m, HasConstInfo m, HasOptions m) => Term -> m Term
- Agda.TypeChecking.Forcing: computeForcingAnnotations :: Type -> TCM [IsForced]
+ Agda.TypeChecking.Forcing: computeForcingAnnotations :: QName -> Type -> TCM [IsForced]
- Agda.TypeChecking.Forcing: dotForcedPatterns :: [NamedArg DeBruijnPattern] -> TCM ([NamedArg DeBruijnPattern], [DeBruijnPattern])
+ Agda.TypeChecking.Forcing: dotForcedPatterns :: [NamedArg DeBruijnPattern] -> TCM ([NamedArg DeBruijnPattern], Maybe [DeBruijnPattern])
- Agda.TypeChecking.Free.Lazy: FreeEnv :: !IgnoreSorts -> !FlexRig -> !Relevance -> Maybe Variable -> c -> FreeEnv c
+ Agda.TypeChecking.Free.Lazy: FreeEnv :: !IgnoreSorts -> !FlexRig -> !Relevance -> (Maybe Variable -> c) -> FreeEnv c
- Agda.TypeChecking.Free.Reduce: forceNotFree :: IntSet -> Type -> TCM (IntSet, Type)
+ Agda.TypeChecking.Free.Reduce: forceNotFree :: (ForceNotFree a, Reduce a, MonadReduce m) => IntSet -> a -> m (IntMap IsFree, a)
- Agda.TypeChecking.Implicit: insertImplicit :: NamedArg e -> [Arg ArgName] -> ImplicitInsertion
+ Agda.TypeChecking.Implicit: insertImplicit :: NamedArg e -> [Dom a] -> ImplicitInsertion
- Agda.TypeChecking.Injectivity: Inv :: QName -> [Elim] -> (InversionMap Clause) -> InvView
+ Agda.TypeChecking.Injectivity: Inv :: QName -> [Elim] -> InversionMap Clause -> InvView
- Agda.TypeChecking.Irrelevance: applyRelevanceToContext :: (MonadTCM tcm) => Relevance -> tcm a -> tcm a
+ Agda.TypeChecking.Irrelevance: applyRelevanceToContext :: (MonadTCEnv tcm, LensRelevance r) => r -> tcm a -> tcm a
- Agda.TypeChecking.Irrelevance: wakeIrrelevantVars :: TCM a -> TCM a
+ Agda.TypeChecking.Irrelevance: wakeIrrelevantVars :: MonadTCEnv tcm => tcm a -> tcm a
- Agda.TypeChecking.Level: LevelKit :: Term -> Term -> Term -> Term -> Term -> Term -> Term -> QName -> QName -> QName -> QName -> LevelKit
+ Agda.TypeChecking.Level: LevelKit :: Term -> (Term -> Term) -> (Term -> Term -> Term) -> Term -> QName -> QName -> QName -> QName -> LevelKit
- Agda.TypeChecking.Level: builtinLevelKit :: (HasBuiltins m) => m LevelKit
+ Agda.TypeChecking.Level: builtinLevelKit :: HasBuiltins m => m LevelKit
- Agda.TypeChecking.Level: levelView :: Term -> TCM Level
+ Agda.TypeChecking.Level: levelView :: (HasBuiltins m, MonadReduce m, MonadDebug m) => Term -> m Level
- Agda.TypeChecking.Level: levelView' :: Term -> ReduceM Level
+ Agda.TypeChecking.Level: levelView' :: (HasBuiltins m, MonadReduce m, MonadDebug m) => Term -> m Level
- Agda.TypeChecking.Level: reallyUnLevelView :: (HasBuiltins m) => Level -> m Term
+ Agda.TypeChecking.Level: reallyUnLevelView :: HasBuiltins m => Level -> m Term
- Agda.TypeChecking.Level: unLevel :: (HasBuiltins m) => Term -> m Term
+ Agda.TypeChecking.Level: unLevel :: HasBuiltins m => Term -> m Term
- Agda.TypeChecking.MetaVars: newArgsMetaCtx' :: Condition -> Type -> Telescope -> Permutation -> Args -> TCM Args
+ Agda.TypeChecking.MetaVars: newArgsMetaCtx' :: Frozen -> Condition -> Type -> Telescope -> Permutation -> Args -> TCM Args
- Agda.TypeChecking.MetaVars: newRecordMetaCtx :: QName -> Args -> Telescope -> Permutation -> Args -> TCM Term
+ Agda.TypeChecking.MetaVars: newRecordMetaCtx :: Frozen -> QName -> Args -> Telescope -> Permutation -> Args -> TCM Term
- Agda.TypeChecking.MetaVars: newValueMetaCtx :: RunMetaOccursCheck -> Type -> Telescope -> Permutation -> Args -> TCM (MetaId, Term)
+ Agda.TypeChecking.MetaVars: newValueMetaCtx :: Frozen -> RunMetaOccursCheck -> Type -> Telescope -> Permutation -> Args -> TCM (MetaId, Term)
- Agda.TypeChecking.MetaVars: newValueMetaCtx' :: RunMetaOccursCheck -> Type -> Telescope -> Permutation -> Args -> TCM (MetaId, Term)
+ Agda.TypeChecking.MetaVars: newValueMetaCtx' :: Frozen -> RunMetaOccursCheck -> Type -> Telescope -> Permutation -> Args -> TCM (MetaId, Term)
- Agda.TypeChecking.MetaVars: problemType :: TypeCheckingProblem -> TCM Type
+ Agda.TypeChecking.MetaVars: problemType :: TypeCheckingProblem -> Type
- Agda.TypeChecking.MetaVars: type SubstCand = [(Int, Term)] a possibly non-deterministic substitution
+ Agda.TypeChecking.MetaVars: type SubstCand = [(Int, Term)] " a possibly non-deterministic substitution"
- Agda.TypeChecking.MetaVars.Occurs: foldRigid :: (FoldRigid a, (Monoid (TCM m))) => (Nat -> TCM m) -> a -> TCM m
+ Agda.TypeChecking.MetaVars.Occurs: foldRigid :: (FoldRigid a, Monoid (TCM m)) => (Nat -> TCM m) -> a -> TCM m
- Agda.TypeChecking.Monad.Base: AbsurdPatternRequiresNoRHS :: [NamedArg Pattern] -> TypeError
+ Agda.TypeChecking.Monad.Base: AbsurdPatternRequiresNoRHS :: [NamedArg DeBruijnPattern] -> Warning
- Agda.TypeChecking.Monad.Base: AmbiguousModule :: QName -> (NonemptyList ModuleName) -> TypeError
+ Agda.TypeChecking.Monad.Base: AmbiguousModule :: QName -> NonemptyList ModuleName -> TypeError
- Agda.TypeChecking.Monad.Base: AmbiguousName :: QName -> (NonemptyList QName) -> TypeError
+ Agda.TypeChecking.Monad.Base: AmbiguousName :: QName -> NonemptyList QName -> TypeError
- Agda.TypeChecking.Monad.Base: BadVisibility :: String -> (Arg Term) -> UnquoteError
+ Agda.TypeChecking.Monad.Base: BadVisibility :: String -> Arg Term -> UnquoteError
- Agda.TypeChecking.Monad.Base: BuiltinData :: (TCM Type) -> [String] -> BuiltinDescriptor
+ Agda.TypeChecking.Monad.Base: BuiltinData :: TCM Type -> [String] -> BuiltinDescriptor
- Agda.TypeChecking.Monad.Base: BuiltinDataCons :: (TCM Type) -> BuiltinDescriptor
+ Agda.TypeChecking.Monad.Base: BuiltinDataCons :: TCM Type -> BuiltinDescriptor
- Agda.TypeChecking.Monad.Base: BuiltinPostulate :: Relevance -> (TCM Type) -> BuiltinDescriptor
+ Agda.TypeChecking.Monad.Base: BuiltinPostulate :: Relevance -> TCM Type -> BuiltinDescriptor
- Agda.TypeChecking.Monad.Base: BuiltinUnknown :: (Maybe (TCM Type)) -> (Term -> Type -> TCM ()) -> BuiltinDescriptor
+ Agda.TypeChecking.Monad.Base: BuiltinUnknown :: Maybe (TCM Type) -> (Term -> Type -> TCM ()) -> BuiltinDescriptor
- Agda.TypeChecking.Monad.Base: Candidate :: Term -> Type -> ExplicitToInstance -> Bool -> Candidate
+ Agda.TypeChecking.Monad.Base: Candidate :: Term -> Type -> Bool -> Candidate
- Agda.TypeChecking.Monad.Base: CannotEliminateWithPattern :: (NamedArg Pattern) -> Type -> TypeError
+ Agda.TypeChecking.Monad.Base: CannotEliminateWithPattern :: NamedArg Pattern -> Type -> TypeError
- Agda.TypeChecking.Monad.Base: CannotResolveAmbiguousPatternSynonym :: (NonemptyList (QName, PatternSynDefn)) -> TypeError
+ Agda.TypeChecking.Monad.Base: CannotResolveAmbiguousPatternSynonym :: NonemptyList (QName, PatternSynDefn) -> TypeError
- Agda.TypeChecking.Monad.Base: CheckArgs :: ExpandHidden -> Range -> [NamedArg Expr] -> Type -> Type -> (Elims -> Type -> CheckedTarget -> TCM Term) -> TypeCheckingProblem
+ Agda.TypeChecking.Monad.Base: CheckArgs :: ExpandHidden -> Range -> [NamedArg Expr] -> Type -> Type -> ([Maybe Range] -> Elims -> Type -> CheckedTarget -> TCM Term) -> TypeCheckingProblem
- Agda.TypeChecking.Monad.Base: CheckArguments :: Range -> [NamedArg Expr] -> Type -> (Maybe Type) -> Call
+ Agda.TypeChecking.Monad.Base: CheckArguments :: Range -> [NamedArg Expr] -> Type -> Maybe Type -> Call
- Agda.TypeChecking.Monad.Base: CheckDataDef :: Range -> Name -> [LamBinding] -> [Constructor] -> Call
+ Agda.TypeChecking.Monad.Base: CheckDataDef :: Range -> QName -> [LamBinding] -> [Constructor] -> Call
- Agda.TypeChecking.Monad.Base: CheckExpr :: Expr -> Type -> TypeCheckingProblem
+ Agda.TypeChecking.Monad.Base: CheckExpr :: Comparison -> Expr -> Type -> TypeCheckingProblem
- Agda.TypeChecking.Monad.Base: CheckExprCall :: Expr -> Type -> Call
+ Agda.TypeChecking.Monad.Base: CheckExprCall :: Comparison -> Expr -> Type -> Call
- Agda.TypeChecking.Monad.Base: CheckFunDefCall :: Range -> Name -> [Clause] -> Call
+ Agda.TypeChecking.Monad.Base: CheckFunDefCall :: Range -> QName -> [Clause] -> Call
- Agda.TypeChecking.Monad.Base: CheckLambda :: (Arg ([WithHiding Name], Maybe Type)) -> Expr -> Type -> TypeCheckingProblem
+ Agda.TypeChecking.Monad.Base: CheckLambda :: Comparison -> Arg ([WithHiding Name], Maybe Type) -> Expr -> Type -> TypeCheckingProblem
- Agda.TypeChecking.Monad.Base: CheckPrimitive :: Range -> Name -> Expr -> Call
+ Agda.TypeChecking.Monad.Base: CheckPrimitive :: Range -> QName -> Expr -> Call
- Agda.TypeChecking.Monad.Base: CheckRecDef :: Range -> Name -> [LamBinding] -> [Constructor] -> Call
+ Agda.TypeChecking.Monad.Base: CheckRecDef :: Range -> QName -> [LamBinding] -> [Constructor] -> Call
- Agda.TypeChecking.Monad.Base: CheckWithFunctionType :: Expr -> Call
+ Agda.TypeChecking.Monad.Base: CheckWithFunctionType :: Type -> Call
- Agda.TypeChecking.Monad.Base: CheckedTarget :: (Maybe ProblemId) -> CheckedTarget
+ Agda.TypeChecking.Monad.Base: CheckedTarget :: Maybe ProblemId -> CheckedTarget
- Agda.TypeChecking.Monad.Base: CoinductiveDatatype :: (Closure Type) -> SplitError
+ Agda.TypeChecking.Monad.Base: CoinductiveDatatype :: Closure Type -> SplitError
- Agda.TypeChecking.Monad.Base: Constructor :: Int -> Int -> ConHead -> QName -> IsAbstract -> Induction -> [IsForced] -> [Bool] -> Defn
+ Agda.TypeChecking.Monad.Base: Constructor :: Int -> Int -> ConHead -> QName -> IsAbstract -> Induction -> (CompKit, Maybe [QName]) -> [IsForced] -> [Bool] -> Defn
- Agda.TypeChecking.Monad.Base: Datatype :: Nat -> Nat -> Induction -> (Maybe Clause) -> [QName] -> Sort -> Maybe [QName] -> IsAbstract -> Defn
+ Agda.TypeChecking.Monad.Base: Datatype :: Nat -> Nat -> Induction -> Maybe Clause -> [QName] -> Sort -> Maybe [QName] -> IsAbstract -> [QName] -> Defn
- Agda.TypeChecking.Monad.Base: Defn :: ArgInfo -> QName -> Type -> [Polarity] -> [Occurrence] -> [LocalDisplayForm] -> MutualId -> CompiledRepresentation -> Maybe QName -> Bool -> Bool -> Bool -> Defn -> Definition
+ Agda.TypeChecking.Monad.Base: Defn :: ArgInfo -> QName -> Type -> [Polarity] -> [Occurrence] -> NumGeneralizableArgs -> [Maybe Name] -> [LocalDisplayForm] -> MutualId -> CompiledRepresentation -> Maybe QName -> Bool -> Bool -> Bool -> Bool -> Defn -> Definition
- Agda.TypeChecking.Monad.Base: EnterSection :: !ModuleInfo -> !ModuleName -> ![TypedBindings] -> TypeCheckAction
+ Agda.TypeChecking.Monad.Base: EnterSection :: !ModuleInfo -> !ModuleName -> !Telescope -> TypeCheckAction
- Agda.TypeChecking.Monad.Base: ExtLamInfo :: ModuleName -> ExtLamInfo
+ Agda.TypeChecking.Monad.Base: ExtLamInfo :: ModuleName -> !Maybe System -> ExtLamInfo
- Agda.TypeChecking.Monad.Base: Function :: [Clause] -> Maybe CompiledClauses -> Maybe Compiled -> FunctionInverse -> Maybe [QName] -> IsAbstract -> Delayed -> Maybe Projection -> Set FunctionFlag -> Maybe Bool -> Maybe ExtLamInfo -> Maybe QName -> Bool -> Defn
+ Agda.TypeChecking.Monad.Base: Function :: [Clause] -> Maybe CompiledClauses -> Maybe SplitTree -> Maybe Compiled -> [Closure Clause] -> FunctionInverse -> Maybe [QName] -> IsAbstract -> Delayed -> Maybe Projection -> Set FunctionFlag -> Maybe Bool -> Maybe ExtLamInfo -> Maybe QName -> Bool -> Defn
- Agda.TypeChecking.Monad.Base: HasPTSRule :: Sort -> (Abs Sort) -> Constraint
+ Agda.TypeChecking.Monad.Base: HasPTSRule :: Sort -> Abs Sort -> Constraint
- Agda.TypeChecking.Monad.Base: Interface :: Hash -> [(ModuleName, Hash)] -> ModuleName -> Map ModuleName Scope -> ScopeInfo -> Signature -> DisplayForms -> Map QName String -> BuiltinThings (String, QName) -> Map BackendName [ForeignCode] -> HighlightingInfo -> [OptionsPragma] -> PatternSynDefns -> [TCWarning] -> Interface
+ Agda.TypeChecking.Monad.Base: Interface :: Hash -> Text -> FileType -> [(ModuleName, Hash)] -> ModuleName -> Map ModuleName Scope -> ScopeInfo -> Signature -> DisplayForms -> Map QName String -> BuiltinThings (String, QName) -> Map BackendName [ForeignCode] -> HighlightingInfo -> [OptionsPragma] -> PragmaOptions -> PatternSynDefns -> [TCWarning] -> Interface
- Agda.TypeChecking.Monad.Base: Inverse :: (InversionMap c) -> FunctionInverse' c
+ Agda.TypeChecking.Monad.Base: Inverse :: InversionMap c -> FunctionInverse' c
- Agda.TypeChecking.Monad.Base: IrrelevantDatatype :: (Closure Type) -> SplitError
+ Agda.TypeChecking.Monad.Base: IrrelevantDatatype :: Closure Type -> SplitError
- Agda.TypeChecking.Monad.Base: MetaInfo :: Closure Range -> RunMetaOccursCheck -> MetaNameSuggestion -> MetaInfo
+ Agda.TypeChecking.Monad.Base: MetaInfo :: Closure Range -> RunMetaOccursCheck -> MetaNameSuggestion -> Arg DoGeneralize -> MetaInfo
- Agda.TypeChecking.Monad.Base: ModuleDoesntExport :: QName -> [ImportedName] -> TypeError
+ Agda.TypeChecking.Monad.Base: ModuleDoesntExport :: QName -> [ImportedName] -> Warning
- Agda.TypeChecking.Monad.Base: ModuleInfo :: Interface -> Bool -> ModuleInfo
+ Agda.TypeChecking.Monad.Base: ModuleInfo :: Interface -> Bool -> Bool -> ModuleInfo
- Agda.TypeChecking.Monad.Base: NotADatatype :: (Closure Type) -> SplitError
+ Agda.TypeChecking.Monad.Base: NotADatatype :: Closure Type -> SplitError
- Agda.TypeChecking.Monad.Base: NotAProjectionPattern :: (NamedArg Pattern) -> TypeError
+ Agda.TypeChecking.Monad.Base: NotAProjectionPattern :: NamedArg Pattern -> TypeError
- Agda.TypeChecking.Monad.Base: NotStrictlyPositive :: QName -> OccursWhere -> Warning
+ Agda.TypeChecking.Monad.Base: NotStrictlyPositive :: QName -> Seq OccursWhere -> Warning
- Agda.TypeChecking.Monad.Base: PLam :: ArgInfo -> (Abs NLPat) -> NLPat
+ Agda.TypeChecking.Monad.Base: PLam :: ArgInfo -> Abs NLPat -> NLPat
- Agda.TypeChecking.Monad.Base: PPi :: (Dom NLPType) -> (Abs NLPType) -> NLPat
+ Agda.TypeChecking.Monad.Base: PPi :: Dom NLPType -> Abs NLPType -> NLPat
- Agda.TypeChecking.Monad.Base: PersistentTCSt :: DecodedModules -> CommandLineOptions -> InteractionOutputCallback -> !Benchmark -> !Statistics -> !(Maybe LoadedFileCache) -> [Backend] -> PersistentTCState
+ Agda.TypeChecking.Monad.Base: PersistentTCSt :: DecodedModules -> CommandLineOptions -> InteractionOutputCallback -> !Benchmark -> !Statistics -> !Maybe LoadedFileCache -> [Backend] -> PersistentTCState
- Agda.TypeChecking.Monad.Base: PostScopeState :: !CompressedFile -> !DisambiguatedNames -> !MetaStore -> !InteractionPoints -> !Constraints -> !Constraints -> !Bool -> !(Set QName) -> !Signature -> !(Map ModuleName CheckpointId) -> !DisplayForms -> !(Maybe ModuleName) -> !TempInstanceTable -> !Statistics -> ![TCWarning] -> !(Map MutualId MutualBlock) -> !(BuiltinThings PrimFun) -> !MetaId -> !MutualId -> !ProblemId -> !CheckpointId -> !Int -> !NameId -> !Bool -> PostScopeState
+ Agda.TypeChecking.Monad.Base: PostScopeState :: !CompressedFile -> !DisambiguatedNames -> !MetaStore -> !InteractionPoints -> !Constraints -> !Constraints -> !Bool -> !Set QName -> !Signature -> !Map ModuleName CheckpointId -> !DisplayForms -> !Maybe ModuleName -> !TempInstanceTable -> !Map Name [Name] -> !Map Name [Name] -> !Statistics -> ![TCWarning] -> !Map MutualId MutualBlock -> !BuiltinThings PrimFun -> !MetaId -> !MutualId -> !ProblemId -> !CheckpointId -> !Int -> !NameId -> !Bool -> !Bool -> PostScopeState
- Agda.TypeChecking.Monad.Base: PostponedTypeCheckingProblem :: (Closure TypeCheckingProblem) -> (TCM Bool) -> MetaInstantiation
+ Agda.TypeChecking.Monad.Base: PostponedTypeCheckingProblem :: Closure TypeCheckingProblem -> TCM Bool -> MetaInstantiation
- Agda.TypeChecking.Monad.Base: PreScopeState :: !CompressedFile -> !Signature -> !(Set ModuleName) -> !ModuleToSource -> !VisitedModules -> !ScopeInfo -> !PatternSynDefns -> !PatternSynDefns -> !PragmaOptions -> !(BuiltinThings PrimFun) -> !DisplayForms -> !InstanceTable -> !(Map BackendName [ForeignCode]) -> !InteractionId -> !(Map QName String) -> !(Map QName String) -> PreScopeState
+ Agda.TypeChecking.Monad.Base: PreScopeState :: !CompressedFile -> !Signature -> !Set ModuleName -> !ModuleToSource -> !VisitedModules -> !ScopeInfo -> !PatternSynDefns -> !PatternSynDefns -> !Maybe (Set QName) -> !PragmaOptions -> !BuiltinThings PrimFun -> !DisplayForms -> !InstanceTable -> !Map BackendName [ForeignCode] -> !InteractionId -> !Map QName String -> !Map QName String -> PreScopeState
- Agda.TypeChecking.Monad.Base: PrimFun :: QName -> Arity -> [Arg Term] -> ReduceM (Reduced MaybeReducedArgs Term) -> PrimFun
+ Agda.TypeChecking.Monad.Base: PrimFun :: QName -> Arity -> ([Arg Term] -> Int -> ReduceM (Reduced MaybeReducedArgs Term)) -> PrimFun
- Agda.TypeChecking.Monad.Base: Record :: Nat -> Maybe Clause -> ConHead -> Bool -> [Arg QName] -> Telescope -> Maybe [QName] -> EtaEquality -> Maybe Induction -> IsAbstract -> Defn
+ Agda.TypeChecking.Monad.Base: Record :: Nat -> Maybe Clause -> ConHead -> Bool -> [Arg QName] -> Telescope -> Maybe [QName] -> EtaEquality -> Maybe Induction -> IsAbstract -> CompKit -> Defn
- Agda.TypeChecking.Monad.Base: ReduceM :: ReduceEnv -> a -> ReduceM a
+ Agda.TypeChecking.Monad.Base: ReduceM :: (ReduceEnv -> a) -> ReduceM a
- Agda.TypeChecking.Monad.Base: Reduced :: (Blocked ()) -> IsReduced
+ Agda.TypeChecking.Monad.Base: Reduced :: Blocked () -> IsReduced
- Agda.TypeChecking.Monad.Base: SplitOnIrrelevant :: (Dom Type) -> TypeError
+ Agda.TypeChecking.Monad.Base: SplitOnIrrelevant :: Dom Type -> TypeError
- Agda.TypeChecking.Monad.Base: TCEnv :: Context -> LetBindings -> ModuleName -> Maybe AbsolutePath -> [(ModuleName, Nat)] -> [TopLevelModuleName] -> Maybe MutualId -> TerminationCheck () -> Bool -> Bool -> Bool -> Bool -> Set ProblemId -> AbstractMode -> Relevance -> Bool -> Range -> Range -> IPClause -> Maybe (Closure Call) -> HighlightingLevel -> HighlightingMethod -> !Int -> Bool -> ExpandHidden -> Maybe QName -> Simplification -> AllowedReductions -> Int -> Bool -> Bool -> Bool -> Bool -> UnquoteFlags -> !Int -> Bool -> [QName] -> Bool -> CheckpointId -> Map CheckpointId Substitution -> TCEnv
+ Agda.TypeChecking.Monad.Base: TCEnv :: Context -> LetBindings -> ModuleName -> Maybe AbsolutePath -> [(ModuleName, Nat)] -> [TopLevelModuleName] -> Maybe MutualId -> TerminationCheck () -> Bool -> Bool -> Bool -> Bool -> Set ProblemId -> AbstractMode -> Modality -> Bool -> Range -> Range -> IPClause -> Maybe (Closure Call) -> HighlightingLevel -> HighlightingMethod -> !Int -> ExpandHidden -> Maybe QName -> Simplification -> AllowedReductions -> Int -> Bool -> Bool -> Bool -> Bool -> UnquoteFlags -> !Int -> Bool -> [QName] -> Bool -> CheckpointId -> Map CheckpointId Substitution -> DoGeneralize -> Map QName GeneralizedValue -> Bool -> TCEnv
- Agda.TypeChecking.Monad.Base: TCM :: IORef TCState -> TCEnv -> m a -> TCMT m a
+ Agda.TypeChecking.Monad.Base: TCM :: (IORef TCState -> TCEnv -> m a) -> TCMT m a
- Agda.TypeChecking.Monad.Base: UnquoteTactic :: Term -> Term -> Type -> TypeCheckingProblem
+ Agda.TypeChecking.Monad.Base: UnquoteTactic :: Maybe MetaId -> Term -> Term -> Type -> Constraint
- Agda.TypeChecking.Monad.Base: WithClausePatternMismatch :: Pattern -> (NamedArg DeBruijnPattern) -> TypeError
+ Agda.TypeChecking.Monad.Base: WithClausePatternMismatch :: Pattern -> NamedArg DeBruijnPattern -> TypeError
- Agda.TypeChecking.Monad.Base: WrongInstanceDeclaration :: TypeError
+ Agda.TypeChecking.Monad.Base: WrongInstanceDeclaration :: Warning
- Agda.TypeChecking.Monad.Base: WrongNamedArgument :: (NamedArg Expr) -> TypeError
+ Agda.TypeChecking.Monad.Base: WrongNamedArgument :: NamedArg Expr -> TypeError
- Agda.TypeChecking.Monad.Base: [dataClause] :: Defn -> (Maybe Clause)
+ Agda.TypeChecking.Monad.Base: [dataClause] :: Defn -> Maybe Clause
- Agda.TypeChecking.Monad.Base: [primFunImplementation] :: PrimFun -> [Arg Term] -> ReduceM (Reduced MaybeReducedArgs Term)
+ Agda.TypeChecking.Monad.Base: [primFunImplementation] :: PrimFun -> [Arg Term] -> Int -> ReduceM (Reduced MaybeReducedArgs Term)
- Agda.TypeChecking.Monad.Base: [stLoadedFileCache] :: PersistentTCState -> !(Maybe LoadedFileCache)
+ Agda.TypeChecking.Monad.Base: [stLoadedFileCache] :: PersistentTCState -> !Maybe LoadedFileCache
- Agda.TypeChecking.Monad.Base: [stPostCurrentModule] :: PostScopeState -> !(Maybe ModuleName)
+ Agda.TypeChecking.Monad.Base: [stPostCurrentModule] :: PostScopeState -> !Maybe ModuleName
- Agda.TypeChecking.Monad.Base: [stPostLocalBuiltins] :: PostScopeState -> !(BuiltinThings PrimFun)
+ Agda.TypeChecking.Monad.Base: [stPostLocalBuiltins] :: PostScopeState -> !BuiltinThings PrimFun
- Agda.TypeChecking.Monad.Base: [stPostModuleCheckpoints] :: PostScopeState -> !(Map ModuleName CheckpointId)
+ Agda.TypeChecking.Monad.Base: [stPostModuleCheckpoints] :: PostScopeState -> !Map ModuleName CheckpointId
- Agda.TypeChecking.Monad.Base: [stPostMutualBlocks] :: PostScopeState -> !(Map MutualId MutualBlock)
+ Agda.TypeChecking.Monad.Base: [stPostMutualBlocks] :: PostScopeState -> !Map MutualId MutualBlock
- Agda.TypeChecking.Monad.Base: [stPostOccursCheckDefs] :: PostScopeState -> !(Set QName)
+ Agda.TypeChecking.Monad.Base: [stPostOccursCheckDefs] :: PostScopeState -> !Set QName
- Agda.TypeChecking.Monad.Base: [stPreForeignCode] :: PreScopeState -> !(Map BackendName [ForeignCode])
+ Agda.TypeChecking.Monad.Base: [stPreForeignCode] :: PreScopeState -> !Map BackendName [ForeignCode]
- Agda.TypeChecking.Monad.Base: [stPreImportedBuiltins] :: PreScopeState -> !(BuiltinThings PrimFun)
+ Agda.TypeChecking.Monad.Base: [stPreImportedBuiltins] :: PreScopeState -> !BuiltinThings PrimFun
- Agda.TypeChecking.Monad.Base: [stPreImportedModules] :: PreScopeState -> !(Set ModuleName)
+ Agda.TypeChecking.Monad.Base: [stPreImportedModules] :: PreScopeState -> !Set ModuleName
- Agda.TypeChecking.Monad.Base: [stPreImportedUserWarnings] :: PreScopeState -> !(Map QName String)
+ Agda.TypeChecking.Monad.Base: [stPreImportedUserWarnings] :: PreScopeState -> !Map QName String
- Agda.TypeChecking.Monad.Base: [stPreLocalUserWarnings] :: PreScopeState -> !(Map QName String)
+ Agda.TypeChecking.Monad.Base: [stPreLocalUserWarnings] :: PreScopeState -> !Map QName String
- Agda.TypeChecking.Monad.Base: class (Applicative tcm, MonadIO tcm, MonadReader TCEnv tcm, MonadState TCState tcm, HasOptions tcm) => MonadTCM tcm
+ Agda.TypeChecking.Monad.Base: class (Applicative tcm, MonadIO tcm, MonadTCEnv tcm, MonadTCState tcm, HasOptions tcm) => MonadTCM tcm
- Agda.TypeChecking.Monad.Base: fresh :: (HasFresh i, MonadState TCState m) => m i
+ Agda.TypeChecking.Monad.Base: fresh :: (HasFresh i, MonadTCState m) => m i
- Agda.TypeChecking.Monad.Base: freshName :: MonadState TCState m => Range -> String -> m Name
+ Agda.TypeChecking.Monad.Base: freshName :: MonadTCState m => Range -> String -> m Name
- Agda.TypeChecking.Monad.Base: freshName_ :: (FreshName a, MonadState TCState m) => a -> m Name
+ Agda.TypeChecking.Monad.Base: freshName_ :: (FreshName a, MonadTCState m) => a -> m Name
- Agda.TypeChecking.Monad.Base: freshNoName :: MonadState TCState m => Range -> m Name
+ Agda.TypeChecking.Monad.Base: freshNoName :: MonadTCState m => Range -> m Name
- Agda.TypeChecking.Monad.Base: freshNoName_ :: MonadState TCState m => m Name
+ Agda.TypeChecking.Monad.Base: freshNoName_ :: MonadTCState m => m Name
- Agda.TypeChecking.Monad.Base: getUserWarnings :: MonadState TCState m => m (Map QName String)
+ Agda.TypeChecking.Monad.Base: getUserWarnings :: MonadTCState m => m (Map QName String)
- Agda.TypeChecking.Monad.Base: type MetaStore = Map MetaId MetaVariable
+ Agda.TypeChecking.Monad.Base: type MetaStore = IntMap MetaVariable
- Agda.TypeChecking.Monad.Builtin: class (Functor m, Applicative m, Monad m) => HasBuiltins m
+ Agda.TypeChecking.Monad.Builtin: class (Functor m, Applicative m, MonadFail m) => HasBuiltins m
- Agda.TypeChecking.Monad.Context: checkpointSubstitution :: MonadReader TCEnv tcm => CheckpointId -> tcm Substitution
+ Agda.TypeChecking.Monad.Context: checkpointSubstitution :: MonadTCEnv tcm => CheckpointId -> tcm Substitution
- Agda.TypeChecking.Monad.Context: getContext :: MonadReader TCEnv m => m [Dom (Name, Type)]
+ Agda.TypeChecking.Monad.Context: getContext :: MonadTCEnv m => m [Dom (Name, Type)]
- Agda.TypeChecking.Monad.Context: getContextArgs :: (Applicative m, MonadReader TCEnv m) => m Args
+ Agda.TypeChecking.Monad.Context: getContextArgs :: (Applicative m, MonadTCEnv m) => m Args
- Agda.TypeChecking.Monad.Context: getContextNames :: (Applicative m, MonadReader TCEnv m) => m [Name]
+ Agda.TypeChecking.Monad.Context: getContextNames :: (Applicative m, MonadTCEnv m) => m [Name]
- Agda.TypeChecking.Monad.Context: getContextSize :: (Applicative m, MonadReader TCEnv m) => m Nat
+ Agda.TypeChecking.Monad.Context: getContextSize :: (Applicative m, MonadTCEnv m) => m Nat
- Agda.TypeChecking.Monad.Context: getContextTelescope :: (Applicative m, MonadReader TCEnv m) => m Telescope
+ Agda.TypeChecking.Monad.Context: getContextTelescope :: (Applicative m, MonadTCEnv m) => m Telescope
- Agda.TypeChecking.Monad.Context: getContextTerms :: (Applicative m, MonadReader TCEnv m) => m [Term]
+ Agda.TypeChecking.Monad.Context: getContextTerms :: (Applicative m, MonadTCEnv m) => m [Term]
- Agda.TypeChecking.Monad.Context: getModuleParameterSub :: (MonadReader TCEnv m, ReadTCState m) => ModuleName -> m Substitution
+ Agda.TypeChecking.Monad.Context: getModuleParameterSub :: (MonadTCEnv m, ReadTCState m) => ModuleName -> m Substitution
- Agda.TypeChecking.Monad.Context: getVarInfo :: MonadReader TCEnv m => Name -> m (Term, Dom Type)
+ Agda.TypeChecking.Monad.Context: getVarInfo :: MonadTCEnv m => Name -> m (Term, Dom Type)
- Agda.TypeChecking.Monad.Context: lookupBV :: MonadReader TCEnv m => Nat -> m (Dom (Name, Type))
+ Agda.TypeChecking.Monad.Context: lookupBV :: MonadTCEnv m => Nat -> m (Dom (Name, Type))
- Agda.TypeChecking.Monad.Context: nameOfBV :: (Applicative m, MonadReader TCEnv m) => Nat -> m Name
+ Agda.TypeChecking.Monad.Context: nameOfBV :: (Applicative m, MonadTCEnv m) => Nat -> m Name
- Agda.TypeChecking.Monad.Context: typeOfBV :: (Applicative m, MonadReader TCEnv m) => Nat -> m Type
+ Agda.TypeChecking.Monad.Context: typeOfBV :: (Applicative m, MonadTCEnv m) => Nat -> m Type
- Agda.TypeChecking.Monad.Context: typeOfBV' :: (Applicative m, MonadReader TCEnv m) => Nat -> m (Dom Type)
+ Agda.TypeChecking.Monad.Context: typeOfBV' :: (Applicative m, MonadTCEnv m) => Nat -> m (Dom Type)
- Agda.TypeChecking.Monad.Debug: reportS :: (HasOptions m, MonadDebug m, MonadReader TCEnv m) => VerboseKey -> Int -> String -> m ()
+ Agda.TypeChecking.Monad.Debug: reportS :: (HasOptions m, MonadDebug m, MonadTCEnv m) => VerboseKey -> Int -> String -> m ()
- Agda.TypeChecking.Monad.Debug: reportSDoc :: (HasOptions m, MonadDebug m, MonadReader TCEnv m) => VerboseKey -> Int -> TCM Doc -> m ()
+ Agda.TypeChecking.Monad.Debug: reportSDoc :: (HasOptions m, MonadDebug m, MonadTCEnv m) => VerboseKey -> Int -> TCM Doc -> m ()
- Agda.TypeChecking.Monad.Debug: reportSLn :: (HasOptions m, MonadDebug m, MonadReader TCEnv m) => VerboseKey -> Int -> String -> m ()
+ Agda.TypeChecking.Monad.Debug: reportSLn :: (HasOptions m, MonadDebug m, MonadTCEnv m) => VerboseKey -> Int -> String -> m ()
- Agda.TypeChecking.Monad.Env: currentModule :: MonadReader TCEnv m => m ModuleName
+ Agda.TypeChecking.Monad.Env: currentModule :: MonadTCEnv m => m ModuleName
- Agda.TypeChecking.Monad.Env: getAnonymousVariables :: MonadReader TCEnv m => ModuleName -> m Nat
+ Agda.TypeChecking.Monad.Env: getAnonymousVariables :: MonadTCEnv m => ModuleName -> m Nat
- Agda.TypeChecking.Monad.Env: getSimplification :: MonadReader TCEnv m => m Simplification
+ Agda.TypeChecking.Monad.Env: getSimplification :: MonadTCEnv m => m Simplification
- Agda.TypeChecking.Monad.Env: performedSimplification :: MonadReader TCEnv m => m a -> m a
+ Agda.TypeChecking.Monad.Env: performedSimplification :: MonadTCEnv m => m a -> m a
- Agda.TypeChecking.Monad.Env: performedSimplification' :: MonadReader TCEnv m => Simplification -> m a -> m a
+ Agda.TypeChecking.Monad.Env: performedSimplification' :: MonadTCEnv m => Simplification -> m a -> m a
- Agda.TypeChecking.Monad.MetaVars: getInteractionPoints :: TCM [InteractionId]
+ Agda.TypeChecking.Monad.MetaVars: getInteractionPoints :: MonadTCM tcm => tcm [InteractionId]
- Agda.TypeChecking.Monad.MetaVars: getInteractionRange :: InteractionId -> TCM Range
+ Agda.TypeChecking.Monad.MetaVars: getInteractionRange :: MonadTCM tcm => InteractionId -> tcm Range
- Agda.TypeChecking.Monad.MetaVars: lookupInteractionPoint :: InteractionId -> TCM InteractionPoint
+ Agda.TypeChecking.Monad.MetaVars: lookupInteractionPoint :: MonadTCM tcm => InteractionId -> tcm InteractionPoint
- Agda.TypeChecking.Monad.MetaVars: metasCreatedBy :: TCM a -> TCM (a, Set MetaId)
+ Agda.TypeChecking.Monad.MetaVars: metasCreatedBy :: TCM a -> TCM (a, IntSet)
- Agda.TypeChecking.Monad.MetaVars: newMeta :: MetaInfo -> MetaPriority -> Permutation -> Judgement a -> TCM MetaId
+ Agda.TypeChecking.Monad.MetaVars: newMeta :: Frozen -> MetaInfo -> MetaPriority -> Permutation -> Judgement a -> TCM MetaId
- Agda.TypeChecking.Monad.MetaVars: newMeta' :: MetaInstantiation -> MetaInfo -> MetaPriority -> Permutation -> Judgement a -> TCM MetaId
+ Agda.TypeChecking.Monad.MetaVars: newMeta' :: MetaInstantiation -> Frozen -> MetaInfo -> MetaPriority -> Permutation -> Judgement a -> TCM MetaId
- Agda.TypeChecking.Monad.Open: getOpen :: (Subst Term a, MonadReader TCEnv m) => Open a -> m a
+ Agda.TypeChecking.Monad.Open: getOpen :: (Subst Term a, MonadTCEnv m) => Open a -> m a
- Agda.TypeChecking.Monad.Open: tryGetOpen :: (Subst Term a, MonadReader TCEnv m) => Open a -> m (Maybe a)
+ Agda.TypeChecking.Monad.Open: tryGetOpen :: (Subst Term a, MonadTCEnv m) => Open a -> m (Maybe a)
- Agda.TypeChecking.Monad.Options: addDefaultLibraries :: RelativeTo -> CommandLineOptions -> TCM CommandLineOptions
+ Agda.TypeChecking.Monad.Options: addDefaultLibraries :: AbsolutePath -> CommandLineOptions -> TCM CommandLineOptions
- Agda.TypeChecking.Monad.Options: setCommandLineOptions' :: RelativeTo -> CommandLineOptions -> TCM ()
+ Agda.TypeChecking.Monad.Options: setCommandLineOptions' :: AbsolutePath -> CommandLineOptions -> TCM ()
- Agda.TypeChecking.Monad.Options: setIncludeDirs :: [FilePath] -> RelativeTo -> TCM ()
+ Agda.TypeChecking.Monad.Options: setIncludeDirs :: [FilePath] -> AbsolutePath -> TCM ()
- Agda.TypeChecking.Monad.Options: setLibraryPaths :: RelativeTo -> CommandLineOptions -> TCM CommandLineOptions
+ Agda.TypeChecking.Monad.Options: setLibraryPaths :: AbsolutePath -> CommandLineOptions -> TCM CommandLineOptions
- Agda.TypeChecking.Monad.Options: verboseS :: (MonadReader TCEnv m, HasOptions m) => VerboseKey -> Int -> m () -> m ()
+ Agda.TypeChecking.Monad.Options: verboseS :: (MonadTCEnv m, HasOptions m) => VerboseKey -> Int -> m () -> m ()
- Agda.TypeChecking.Monad.Signature: applyDef :: ProjOrigin -> QName -> Arg Term -> TCM Term
+ Agda.TypeChecking.Monad.Signature: applyDef :: HasConstInfo m => ProjOrigin -> QName -> Arg Term -> m Term
- Agda.TypeChecking.Monad.Signature: class (Functor m, Applicative m, Monad m, HasOptions m, MonadDebug m, MonadReader TCEnv m) => HasConstInfo m
+ Agda.TypeChecking.Monad.Signature: class (Functor m, Applicative m, MonadFail m, HasOptions m, MonadDebug m, MonadTCEnv m) => HasConstInfo m
- Agda.TypeChecking.Monad.Signature: defaultGetConstInfo :: (HasOptions m, MonadDebug m, MonadReader TCEnv m) => TCState -> TCEnv -> QName -> m (Either SigError Definition)
+ Agda.TypeChecking.Monad.Signature: defaultGetConstInfo :: (HasOptions m, MonadDebug m, MonadTCEnv m) => TCState -> TCEnv -> QName -> m (Either SigError Definition)
- Agda.TypeChecking.Monad.Signature: defaultGetRewriteRulesFor :: (Monad m) => m TCState -> QName -> m RewriteRules
+ Agda.TypeChecking.Monad.Signature: defaultGetRewriteRulesFor :: Monad m => m TCState -> QName -> m RewriteRules
- Agda.TypeChecking.Monad.Signature: freeVarsToApply :: (Functor m, HasConstInfo m, HasOptions m, ReadTCState m, MonadReader TCEnv m, MonadDebug m) => QName -> m Args
+ Agda.TypeChecking.Monad.Signature: freeVarsToApply :: (Functor m, HasConstInfo m, HasOptions m, ReadTCState m, MonadTCEnv m, MonadDebug m) => QName -> m Args
- Agda.TypeChecking.Monad.Signature: getConInfo :: MonadTCM tcm => ConHead -> tcm Definition
+ Agda.TypeChecking.Monad.Signature: getConInfo :: HasConstInfo m => ConHead -> m Definition
- Agda.TypeChecking.Monad.Signature: getDefFreeVars :: (Functor m, Applicative m, ReadTCState m, MonadReader TCEnv m) => QName -> m Nat
+ Agda.TypeChecking.Monad.Signature: getDefFreeVars :: (Functor m, Applicative m, ReadTCState m, MonadTCEnv m) => QName -> m Nat
- Agda.TypeChecking.Monad.Signature: getModuleFreeVars :: (Functor m, Applicative m, MonadReader TCEnv m, ReadTCState m) => ModuleName -> m Nat
+ Agda.TypeChecking.Monad.Signature: getModuleFreeVars :: (Functor m, Applicative m, MonadTCEnv m, ReadTCState m) => ModuleName -> m Nat
- Agda.TypeChecking.Monad.Signature: ignoreAbstractMode :: MonadReader TCEnv m => m a -> m a
+ Agda.TypeChecking.Monad.Signature: ignoreAbstractMode :: MonadTCEnv m => m a -> m a
- Agda.TypeChecking.Monad.Signature: inAbstractMode :: MonadReader TCEnv m => m a -> m a
+ Agda.TypeChecking.Monad.Signature: inAbstractMode :: MonadTCEnv m => m a -> m a
- Agda.TypeChecking.Monad.Signature: inConcreteMode :: MonadReader TCEnv m => m a -> m a
+ Agda.TypeChecking.Monad.Signature: inConcreteMode :: MonadTCEnv m => m a -> m a
- Agda.TypeChecking.Monad.Signature: inConcreteOrAbstractMode :: (MonadReader TCEnv m, HasConstInfo m) => QName -> (Definition -> m a) -> m a
+ Agda.TypeChecking.Monad.Signature: inConcreteOrAbstractMode :: (MonadTCEnv m, HasConstInfo m) => QName -> (Definition -> m a) -> m a
- Agda.TypeChecking.Monad.Signature: instantiateDef :: Definition -> TCM Definition
+ Agda.TypeChecking.Monad.Signature: instantiateDef :: (Functor m, HasConstInfo m, HasOptions m, ReadTCState m, MonadTCEnv m, MonadDebug m) => Definition -> m Definition
- Agda.TypeChecking.Monad.Signature: instantiateRewriteRule :: (Functor m, HasConstInfo m, HasOptions m, ReadTCState m, MonadReader TCEnv m, MonadDebug m) => RewriteRule -> m RewriteRule
+ Agda.TypeChecking.Monad.Signature: instantiateRewriteRule :: (Functor m, HasConstInfo m, HasOptions m, ReadTCState m, MonadTCEnv m, MonadDebug m) => RewriteRule -> m RewriteRule
- Agda.TypeChecking.Monad.Signature: instantiateRewriteRules :: (Functor m, HasConstInfo m, HasOptions m, ReadTCState m, MonadReader TCEnv m, MonadDebug m) => RewriteRules -> m RewriteRules
+ Agda.TypeChecking.Monad.Signature: instantiateRewriteRules :: (Functor m, HasConstInfo m, HasOptions m, ReadTCState m, MonadTCEnv m, MonadDebug m) => RewriteRules -> m RewriteRules
- Agda.TypeChecking.Monad.Signature: moduleParamsToApply :: (Functor m, Applicative m, HasOptions m, MonadReader TCEnv m, ReadTCState m, MonadDebug m) => ModuleName -> m Args
+ Agda.TypeChecking.Monad.Signature: moduleParamsToApply :: (Functor m, Applicative m, HasOptions m, MonadTCEnv m, ReadTCState m, MonadDebug m) => ModuleName -> m Args
- Agda.TypeChecking.Monad.Signature: treatAbstractly :: MonadReader TCEnv m => QName -> m Bool
+ Agda.TypeChecking.Monad.Signature: treatAbstractly :: MonadTCEnv m => QName -> m Bool
- Agda.TypeChecking.Monad.Signature: typeOfConst :: QName -> TCM Type
+ Agda.TypeChecking.Monad.Signature: typeOfConst :: (Functor m, HasConstInfo m, HasOptions m, ReadTCState m, MonadTCEnv m, MonadDebug m) => QName -> m Type
- Agda.TypeChecking.Monad.SizedTypes: sizeMax :: [Term] -> TCM Term
+ Agda.TypeChecking.Monad.SizedTypes: sizeMax :: NonemptyList Term -> TCM Term
- Agda.TypeChecking.Monad.SizedTypes: sizeViewComparableWithMax :: DeepSizeView -> SizeMaxView -> SizeViewComparable SizeMaxView
+ Agda.TypeChecking.Monad.SizedTypes: sizeViewComparableWithMax :: DeepSizeView -> SizeMaxView -> SizeViewComparable SizeMaxView'
- Agda.TypeChecking.Monad.SizedTypes: type SizeMaxView = [DeepSizeView]
+ Agda.TypeChecking.Monad.SizedTypes: type SizeMaxView = NonemptyList DeepSizeView
- Agda.TypeChecking.Monad.State: updateCompiledClauses :: (Maybe CompiledClauses -> Maybe CompiledClauses) -> (Defn -> Defn)
+ Agda.TypeChecking.Monad.State: updateCompiledClauses :: (Maybe CompiledClauses -> Maybe CompiledClauses) -> Defn -> Defn
- Agda.TypeChecking.Monad.State: updateDefArgOccurrences :: ([Occurrence] -> [Occurrence]) -> (Definition -> Definition)
+ Agda.TypeChecking.Monad.State: updateDefArgOccurrences :: ([Occurrence] -> [Occurrence]) -> Definition -> Definition
- Agda.TypeChecking.Monad.State: updateDefCompiledRep :: (CompiledRepresentation -> CompiledRepresentation) -> (Definition -> Definition)
+ Agda.TypeChecking.Monad.State: updateDefCompiledRep :: (CompiledRepresentation -> CompiledRepresentation) -> Definition -> Definition
- Agda.TypeChecking.Monad.State: updateDefPolarity :: ([Polarity] -> [Polarity]) -> (Definition -> Definition)
+ Agda.TypeChecking.Monad.State: updateDefPolarity :: ([Polarity] -> [Polarity]) -> Definition -> Definition
- Agda.TypeChecking.Monad.State: updateDefType :: (Type -> Type) -> (Definition -> Definition)
+ Agda.TypeChecking.Monad.State: updateDefType :: (Type -> Type) -> Definition -> Definition
- Agda.TypeChecking.Monad.State: updateFunClauses :: ([Clause] -> [Clause]) -> (Defn -> Defn)
+ Agda.TypeChecking.Monad.State: updateFunClauses :: ([Clause] -> [Clause]) -> Defn -> Defn
- Agda.TypeChecking.Monad.State: updateInstanceDefs :: (TempInstanceTable -> TempInstanceTable) -> (TCState -> TCState)
+ Agda.TypeChecking.Monad.State: updateInstanceDefs :: (TempInstanceTable -> TempInstanceTable) -> TCState -> TCState
- Agda.TypeChecking.Monad.State: updatePersistentState :: (PersistentTCState -> PersistentTCState) -> (TCState -> TCState)
+ Agda.TypeChecking.Monad.State: updatePersistentState :: (PersistentTCState -> PersistentTCState) -> TCState -> TCState
- Agda.TypeChecking.Monad.State: updateTheDef :: (Defn -> Defn) -> (Definition -> Definition)
+ Agda.TypeChecking.Monad.State: updateTheDef :: (Defn -> Defn) -> Definition -> Definition
- Agda.TypeChecking.Patterns.Internal: dotPatternsToPatterns :: forall a. (DeBruijn (Pattern' a)) => Pattern' a -> TCM (Pattern' a)
+ Agda.TypeChecking.Patterns.Internal: dotPatternsToPatterns :: forall a. DeBruijn (Pattern' a) => Pattern' a -> TCM (Pattern' a)
- Agda.TypeChecking.Patterns.Match: DontKnow :: (Blocked ()) -> Match a
+ Agda.TypeChecking.Patterns.Match: DontKnow :: Blocked () -> Match a
- Agda.TypeChecking.Patterns.Match: Yes :: Simplification -> (IntMap (Arg a)) -> Match a
+ Agda.TypeChecking.Patterns.Match: Yes :: Simplification -> IntMap (Arg a) -> Match a
- Agda.TypeChecking.Patterns.Match: buildSubstitution :: (DeBruijn a) => Empty -> Int -> IntMap (Arg a) -> Substitution' a
+ Agda.TypeChecking.Patterns.Match: buildSubstitution :: DeBruijn a => Empty -> Int -> IntMap (Arg a) -> Substitution' a
- Agda.TypeChecking.Polarity: checkSizeIndex :: QName -> Nat -> Nat -> Type -> TCM Bool
+ Agda.TypeChecking.Polarity: checkSizeIndex :: QName -> Nat -> Type -> TCM Bool
- Agda.TypeChecking.Positivity: Edge :: !Occurrence -> OccursWhere -> Edge
+ Agda.TypeChecking.Positivity: Edge :: !Occurrence -> a -> Edge a
- Agda.TypeChecking.Positivity: OccursHere' :: Item -> OccursWhere -> OccurrencesBuilder'
+ Agda.TypeChecking.Positivity: OccursHere' :: Item -> OccurrencesBuilder'
- Agda.TypeChecking.Positivity: buildOccurrenceGraph :: Set QName -> TCM (Graph Node Edge)
+ Agda.TypeChecking.Positivity: buildOccurrenceGraph :: Set QName -> TCM (Graph Node (Edge OccursWhere))
- Agda.TypeChecking.Positivity: computeEdges :: Set QName -> QName -> OccurrencesBuilder -> TCM [Edge Node Edge]
+ Agda.TypeChecking.Positivity: computeEdges :: Set QName -> QName -> OccurrencesBuilder -> TCM [Edge Node (Edge OccursWhere)]
- Agda.TypeChecking.Positivity: computeOccurrences :: QName -> TCM Occurrences
+ Agda.TypeChecking.Positivity: computeOccurrences :: QName -> TCM (Map Item Integer)
- Agda.TypeChecking.Positivity: data Edge
+ Agda.TypeChecking.Positivity: data Edge a
- Agda.TypeChecking.Positivity: flatten :: OccurrencesBuilder -> Occurrences
+ Agda.TypeChecking.Positivity: flatten :: OccurrencesBuilder -> Map Item Integer
- Agda.TypeChecking.Primitive: (-->) :: TCM Type -> TCM Type -> TCM Type
+ Agda.TypeChecking.Primitive: (-->) :: Monad tcm => tcm Type -> tcm Type -> tcm Type
- Agda.TypeChecking.Primitive: (.-->) :: TCM Type -> TCM Type -> TCM Type
+ Agda.TypeChecking.Primitive: (.-->) :: Monad tcm => tcm Type -> tcm Type -> tcm Type
- Agda.TypeChecking.Primitive: (..-->) :: TCM Type -> TCM Type -> TCM Type
+ Agda.TypeChecking.Primitive: (..-->) :: Monad tcm => tcm Type -> tcm Type -> tcm Type
- Agda.TypeChecking.Primitive: (<#>) :: TCM Term -> TCM Term -> TCM Term
+ Agda.TypeChecking.Primitive: (<#>) :: Monad tcm => tcm Term -> tcm Term -> tcm Term
- Agda.TypeChecking.Primitive: (<@>) :: TCM Term -> TCM Term -> TCM Term
+ Agda.TypeChecking.Primitive: (<@>) :: Monad tcm => tcm Term -> tcm Term -> tcm Term
- Agda.TypeChecking.Primitive: el :: TCM Term -> TCM Type
+ Agda.TypeChecking.Primitive: el :: Functor tcm => tcm Term -> tcm Type
- Agda.TypeChecking.Primitive: gApply :: Hiding -> TCM Term -> TCM Term -> TCM Term
+ Agda.TypeChecking.Primitive: gApply :: Monad tcm => Hiding -> tcm Term -> tcm Term -> tcm Term
- Agda.TypeChecking.Primitive: garr :: (Relevance -> Relevance) -> TCM Type -> TCM Type -> TCM Type
+ Agda.TypeChecking.Primitive: garr :: Monad tcm => (Relevance -> Relevance) -> tcm Type -> tcm Type -> tcm Type
- Agda.TypeChecking.Primitive: gpi :: ArgInfo -> String -> TCM Type -> TCM Type -> TCM Type
+ Agda.TypeChecking.Primitive: gpi :: (MonadTCM tcm, MonadDebug tcm) => ArgInfo -> String -> tcm Type -> tcm Type -> tcm Type
- Agda.TypeChecking.Primitive: hPi :: String -> TCM Type -> TCM Type -> TCM Type
+ Agda.TypeChecking.Primitive: hPi :: (MonadTCM tcm, MonadDebug tcm) => String -> tcm Type -> tcm Type -> tcm Type
- Agda.TypeChecking.Primitive: nPi :: String -> TCM Type -> TCM Type -> TCM Type
+ Agda.TypeChecking.Primitive: nPi :: (MonadTCM tcm, MonadDebug tcm) => String -> tcm Type -> tcm Type -> tcm Type
- Agda.TypeChecking.Primitive: tSizeUniv :: TCM Type
+ Agda.TypeChecking.Primitive: tSizeUniv :: Monad tcm => tcm Type
- Agda.TypeChecking.Primitive: tset :: TCM Type
+ Agda.TypeChecking.Primitive: tset :: Monad tcm => tcm Type
- Agda.TypeChecking.Primitive: varM :: Int -> TCM Term
+ Agda.TypeChecking.Primitive: varM :: Monad tcm => Int -> tcm Term
- Agda.TypeChecking.ProjectionLike: eligibleForProjectionLike :: QName -> TCM Bool
+ Agda.TypeChecking.ProjectionLike: eligibleForProjectionLike :: HasConstInfo m => QName -> m Bool
- Agda.TypeChecking.Quote: QuotingKit :: Term -> ReduceM Term -> Type -> ReduceM Term -> Clause -> ReduceM Term -> Dom Type -> ReduceM Term -> Definition -> ReduceM Term -> forall a. (a -> ReduceM Term) -> [a] -> ReduceM Term -> QuotingKit
+ Agda.TypeChecking.Quote: QuotingKit :: (Term -> ReduceM Term) -> (Type -> ReduceM Term) -> (Clause -> ReduceM Term) -> (Dom Type -> ReduceM Term) -> (Definition -> ReduceM Term) -> (forall a. (a -> ReduceM Term) -> [a] -> ReduceM Term) -> QuotingKit
- Agda.TypeChecking.Records: ArgT :: (Dom Type) -> ElimType
+ Agda.TypeChecking.Records: ArgT :: Dom Type -> ElimType
- Agda.TypeChecking.Records: etaExpandRecord :: QName -> Args -> Term -> TCM (Telescope, Args)
+ Agda.TypeChecking.Records: etaExpandRecord :: (MonadTCM m, HasConstInfo m, MonadDebug m) => QName -> Args -> Term -> m (Telescope, Args)
- Agda.TypeChecking.Records: etaExpandRecord' :: Bool -> QName -> Args -> Term -> TCM (Telescope, Args)
+ Agda.TypeChecking.Records: etaExpandRecord' :: (MonadTCM m, HasConstInfo m, MonadDebug m) => Bool -> QName -> Args -> Term -> m (Telescope, Args)
- Agda.TypeChecking.Records: etaExpandRecord'_ :: Bool -> QName -> Args -> Defn -> Term -> TCM (Telescope, ConHead, ConInfo, Args)
+ Agda.TypeChecking.Records: etaExpandRecord'_ :: (MonadTCEnv m, HasOptions m, MonadDebug m) => Bool -> QName -> Args -> Defn -> Term -> m (Telescope, ConHead, ConInfo, Args)
- Agda.TypeChecking.Records: etaExpandRecord_ :: QName -> Args -> Defn -> Term -> TCM (Telescope, ConHead, ConInfo, Args)
+ Agda.TypeChecking.Records: etaExpandRecord_ :: (MonadTCEnv m, HasOptions m, MonadDebug m) => QName -> Args -> Defn -> Term -> m (Telescope, ConHead, ConInfo, Args)
- Agda.TypeChecking.Records: forceEtaExpandRecord :: QName -> Args -> Term -> TCM (Telescope, Args)
+ Agda.TypeChecking.Records: forceEtaExpandRecord :: (MonadTCM m, HasConstInfo m, MonadDebug m) => QName -> Args -> Term -> m (Telescope, Args)
- Agda.TypeChecking.Records: getDefType :: QName -> Type -> TCM (Maybe Type)
+ Agda.TypeChecking.Records: getDefType :: (HasConstInfo m, MonadReduce m, MonadDebug m) => QName -> Type -> m (Maybe Type)
- Agda.TypeChecking.Records: getRecordDef :: QName -> TCM Defn
+ Agda.TypeChecking.Records: getRecordDef :: (MonadTCM m, HasConstInfo m) => QName -> m Defn
- Agda.TypeChecking.Records: isEtaRecordType :: Type -> TCM (Maybe (QName, Args))
+ Agda.TypeChecking.Records: isEtaRecordType :: HasConstInfo m => Type -> m (Maybe (QName, Args))
- Agda.TypeChecking.Records: isRecordType :: Type -> TCM (Maybe (QName, Args, Defn))
+ Agda.TypeChecking.Records: isRecordType :: (MonadReduce m, HasConstInfo m) => Type -> m (Maybe (QName, Args, Defn))
- Agda.TypeChecking.Records: isSingletonTypeModuloRelevance :: (MonadTCM tcm) => Type -> tcm (Either MetaId Bool)
+ Agda.TypeChecking.Records: isSingletonTypeModuloRelevance :: MonadTCM tcm => Type -> tcm (Either MetaId Bool)
- Agda.TypeChecking.Records: tryRecordType :: Type -> TCM (Either (Blocked Type) (QName, Args, Defn))
+ Agda.TypeChecking.Records: tryRecordType :: (MonadReduce m, HasConstInfo m) => Type -> m (Either (Blocked Type) (QName, Args, Defn))
- Agda.TypeChecking.Reduce: ifBlocked :: MonadTCM tcm => Term -> (MetaId -> Term -> tcm a) -> (NotBlocked -> Term -> tcm a) -> tcm a
+ Agda.TypeChecking.Reduce: ifBlocked :: MonadReduce m => Term -> (MetaId -> Term -> m a) -> (NotBlocked -> Term -> m a) -> m a
- Agda.TypeChecking.Reduce: ifBlockedType :: MonadTCM tcm => Type -> (MetaId -> Type -> tcm a) -> (NotBlocked -> Type -> tcm a) -> tcm a
+ Agda.TypeChecking.Reduce: ifBlockedType :: MonadReduce m => Type -> (MetaId -> Type -> m a) -> (NotBlocked -> Type -> m a) -> m a
- Agda.TypeChecking.Reduce: instantiate :: Instantiate a => a -> TCM a
+ Agda.TypeChecking.Reduce: instantiate :: (Instantiate a, MonadReduce m) => a -> m a
- Agda.TypeChecking.Reduce: instantiateFull :: InstantiateFull a => a -> TCM a
+ Agda.TypeChecking.Reduce: instantiateFull :: (InstantiateFull a, MonadReduce m) => a -> m a
- Agda.TypeChecking.Reduce: isBlocked :: MonadTCM tcm => Term -> tcm (Maybe MetaId)
+ Agda.TypeChecking.Reduce: isBlocked :: MonadReduce m => Term -> m (Maybe MetaId)
- Agda.TypeChecking.Reduce: isBlockedType :: MonadTCM tcm => Type -> tcm (Maybe MetaId)
+ Agda.TypeChecking.Reduce: isBlockedType :: MonadReduce m => Type -> m (Maybe MetaId)
- Agda.TypeChecking.Reduce: normalise :: Normalise a => a -> TCM a
+ Agda.TypeChecking.Reduce: normalise :: (Normalise a, MonadReduce m) => a -> m a
- Agda.TypeChecking.Reduce: reduce :: Reduce a => a -> TCM a
+ Agda.TypeChecking.Reduce: reduce :: (Reduce a, MonadReduce m) => a -> m a
- Agda.TypeChecking.Reduce: reduceB :: Reduce a => a -> TCM (Blocked a)
+ Agda.TypeChecking.Reduce: reduceB :: (Reduce a, MonadReduce m) => a -> m (Blocked a)
- Agda.TypeChecking.Reduce: reduceHead :: Term -> TCM (Blocked Term)
+ Agda.TypeChecking.Reduce: reduceHead :: (HasBuiltins m, HasConstInfo m, MonadReduce m, MonadDebug m) => Term -> m (Blocked Term)
- Agda.TypeChecking.Reduce: simplify :: Simplify a => a -> TCM a
+ Agda.TypeChecking.Reduce: simplify :: (Simplify a, MonadReduce m) => a -> m a
- Agda.TypeChecking.Reduce: unfoldInlined :: Term -> TCM Term
+ Agda.TypeChecking.Reduce: unfoldInlined :: (HasConstInfo m, MonadReduce m) => Term -> m Term
- Agda.TypeChecking.Reduce.Monad: constructorForm :: Term -> ReduceM Term
+ Agda.TypeChecking.Reduce.Monad: constructorForm :: HasBuiltins m => Term -> m Term
- Agda.TypeChecking.Reduce.Monad: underAbstraction_ :: Subst t a => Abs a -> (a -> ReduceM b) -> ReduceM b
+ Agda.TypeChecking.Reduce.Monad: underAbstraction_ :: (MonadReduce m, Subst t a) => Abs a -> (a -> m b) -> m b
- Agda.TypeChecking.Rewriting: rewriteWith :: Maybe Type -> Term -> RewriteRule -> Elims -> ReduceM (Either (Blocked Term) Term)
+ Agda.TypeChecking.Rewriting: rewriteWith :: Type -> Term -> RewriteRule -> Elims -> ReduceM (Either (Blocked Term) Term)
- Agda.TypeChecking.Rewriting.NonLinMatch: checkPostponedEquations :: Substitution -> PostponedEquations -> ReduceM (Maybe Blocked_)
+ Agda.TypeChecking.Rewriting.NonLinMatch: checkPostponedEquations :: (MonadReduce m, HasConstInfo m, MonadDebug m) => Substitution -> PostponedEquations -> m (Maybe Blocked_)
- Agda.TypeChecking.Rewriting.NonLinMatch: class Match a b
+ Agda.TypeChecking.Rewriting.NonLinMatch: class Match t a b
- Agda.TypeChecking.Rewriting.NonLinMatch: class PatternFrom a b
+ Agda.TypeChecking.Rewriting.NonLinMatch: class PatternFrom t a b
- Agda.TypeChecking.Rewriting.NonLinMatch: equal :: Term -> Term -> ReduceM (Maybe Blocked_)
+ Agda.TypeChecking.Rewriting.NonLinMatch: equal :: (MonadReduce m, HasConstInfo m) => Term -> Term -> m (Maybe Blocked_)
- Agda.TypeChecking.Rewriting.NonLinMatch: match :: Match a b => Relevance -> Telescope -> Telescope -> a -> b -> NLM ()
+ Agda.TypeChecking.Rewriting.NonLinMatch: match :: Match t a b => Relevance -> Telescope -> Telescope -> t -> a -> b -> NLM ()
- Agda.TypeChecking.Rewriting.NonLinMatch: nonLinMatch :: (Match a b) => Telescope -> a -> b -> ReduceM (Either Blocked_ Substitution)
+ Agda.TypeChecking.Rewriting.NonLinMatch: nonLinMatch :: (MonadReduce m, HasConstInfo m, MonadDebug m, Match t a b) => Telescope -> t -> a -> b -> m (Either Blocked_ Substitution)
- Agda.TypeChecking.Rewriting.NonLinMatch: patternFrom :: PatternFrom a b => Relevance -> Int -> a -> TCM b
+ Agda.TypeChecking.Rewriting.NonLinMatch: patternFrom :: PatternFrom t a b => Relevance -> Int -> t -> a -> TCM b
- Agda.TypeChecking.Rewriting.NonLinMatch: reallyFree :: (Reduce a, Normalise a, Free a) => (Int -> Bool) -> a -> ReduceM (Either Blocked_ (Maybe a))
+ Agda.TypeChecking.Rewriting.NonLinMatch: reallyFree :: (MonadReduce m, Reduce a, ForceNotFree a) => IntSet -> a -> m (Either Blocked_ (Maybe a))
- Agda.TypeChecking.Rewriting.NonLinMatch: runNLM :: NLM () -> ReduceM (Either Blocked_ NLMState)
+ Agda.TypeChecking.Rewriting.NonLinMatch: runNLM :: MonadReduce m => NLM () -> m (Either Blocked_ NLMState)
- Agda.TypeChecking.Rules.Application: checkApplication :: Expr -> Args -> Expr -> Type -> TCM Term
+ Agda.TypeChecking.Rules.Application: checkApplication :: Comparison -> Expr -> Args -> Expr -> Type -> TCM Term
- Agda.TypeChecking.Rules.Application: checkArguments :: ExpandHidden -> Range -> [NamedArg Expr] -> Type -> Type -> (Elims -> Type -> CheckedTarget -> TCM Term) -> TCM Term
+ Agda.TypeChecking.Rules.Application: checkArguments :: ExpandHidden -> Range -> [NamedArg Expr] -> Type -> Type -> (MaybeRanges -> Elims -> Type -> CheckedTarget -> TCM Term) -> TCM Term
- Agda.TypeChecking.Rules.Data: bindParameters :: [LamBinding] -> Type -> (Telescope -> Type -> TCM a) -> TCM a
+ Agda.TypeChecking.Rules.Data: bindParameters :: Int -> [LamBinding] -> Type -> (Telescope -> Type -> TCM a) -> TCM a
- Agda.TypeChecking.Rules.Data: checkConstructor :: QName -> Telescope -> Nat -> Sort -> Constructor -> TCM ()
+ Agda.TypeChecking.Rules.Data: checkConstructor :: QName -> UniverseCheck -> Telescope -> Nat -> Sort -> Constructor -> TCM IsPathCons
- Agda.TypeChecking.Rules.Data: checkDataDef :: DefInfo -> QName -> [LamBinding] -> [Constructor] -> TCM ()
+ Agda.TypeChecking.Rules.Data: checkDataDef :: DefInfo -> QName -> UniverseCheck -> DataDefParams -> [Constructor] -> TCM ()
- Agda.TypeChecking.Rules.Data: constructs :: Int -> Type -> QName -> TCM ()
+ Agda.TypeChecking.Rules.Data: constructs :: Int -> Int -> Type -> QName -> TCM IsPathCons
- Agda.TypeChecking.Rules.Data: fitsIn :: [IsForced] -> Type -> Sort -> TCM Int
+ Agda.TypeChecking.Rules.Data: fitsIn :: UniverseCheck -> [IsForced] -> Type -> Sort -> TCM Int
- Agda.TypeChecking.Rules.Decl: checkSection :: ModuleInfo -> ModuleName -> Telescope -> [Declaration] -> TCM ()
+ Agda.TypeChecking.Rules.Decl: checkSection :: ModuleInfo -> ModuleName -> GeneralizeTelescope -> [Declaration] -> TCM ()
- Agda.TypeChecking.Rules.Decl: highlight_ :: Declaration -> TCM ()
+ Agda.TypeChecking.Rules.Decl: highlight_ :: HighlightModuleContents -> Declaration -> TCM ()
- Agda.TypeChecking.Rules.Def: checkClause :: Type -> Maybe Substitution -> SpineClause -> TCM Clause
+ Agda.TypeChecking.Rules.Def: checkClause :: Type -> Maybe Substitution -> SpineClause -> TCM (Clause, ClausesPostChecks)
- Agda.TypeChecking.Rules.Def: newSection :: ModuleName -> Telescope -> TCM a -> TCM a
+ Agda.TypeChecking.Rules.Def: newSection :: ModuleName -> GeneralizeTelescope -> TCM a -> TCM a
- Agda.TypeChecking.Rules.LHS: LHSResult :: Nat -> Telescope -> [NamedArg DeBruijnPattern] -> Bool -> Arg Type -> Substitution -> [AsBinding] -> LHSResult
+ Agda.TypeChecking.Rules.LHS: LHSResult :: Nat -> Telescope -> [NamedArg DeBruijnPattern] -> Bool -> Arg Type -> Substitution -> [AsBinding] -> [Int] -> LHSResult
- Agda.TypeChecking.Rules.LHS: checkSortOfSplitVar :: (MonadTCM tcm, MonadError TCErr tcm, LensSort a) => a -> tcm ()
+ Agda.TypeChecking.Rules.LHS: checkSortOfSplitVar :: (MonadTCM tcm, MonadReduce tcm, MonadError TCErr tcm, LensSort a) => DataOrRecord -> a -> Maybe (Arg Type) -> tcm ()
- Agda.TypeChecking.Rules.LHS.Problem: Dot :: Expr -> Term -> (Dom Type) -> DotPattern
+ Agda.TypeChecking.Rules.LHS.Problem: Dot :: Expr -> Term -> Dom Type -> DotPattern
- Agda.TypeChecking.Rules.LHS.Problem: LHSState :: Telescope -> [NamedArg DeBruijnPattern] -> Problem a -> Arg Type -> LHSState a
+ Agda.TypeChecking.Rules.LHS.Problem: LHSState :: Telescope -> [NamedArg DeBruijnPattern] -> Problem a -> Arg Type -> ![Maybe Int] -> LHSState a
- Agda.TypeChecking.Rules.LHS.Problem: Problem :: [ProblemEq] -> [NamedArg Pattern] -> LHSState a -> TCM a -> Problem a
+ Agda.TypeChecking.Rules.LHS.Problem: Problem :: [ProblemEq] -> [NamedArg Pattern] -> (LHSState a -> TCM a) -> Problem a
- Agda.TypeChecking.Rules.Record: checkRecDef :: DefInfo -> QName -> Maybe (Ranged Induction) -> Maybe HasEta -> Maybe QName -> [LamBinding] -> Expr -> [Field] -> TCM ()
+ Agda.TypeChecking.Rules.Record: checkRecDef :: DefInfo -> QName -> UniverseCheck -> Maybe (Ranged Induction) -> Maybe HasEta -> Maybe QName -> DataDefParams -> Expr -> [Field] -> TCM ()
- Agda.TypeChecking.Rules.Term: checkAbsurdLambda :: ExprInfo -> Hiding -> Expr -> Type -> TCM Term
+ Agda.TypeChecking.Rules.Term: checkAbsurdLambda :: Comparison -> ExprInfo -> Hiding -> Expr -> Type -> TCM Term
- Agda.TypeChecking.Rules.Term: checkDontExpandLast :: Expr -> Type -> TCM Term
+ Agda.TypeChecking.Rules.Term: checkDontExpandLast :: Comparison -> Expr -> Type -> TCM Term
- Agda.TypeChecking.Rules.Term: checkExtendedLambda :: ExprInfo -> DefInfo -> QName -> [Clause] -> Expr -> Type -> TCM Term
+ Agda.TypeChecking.Rules.Term: checkExtendedLambda :: Comparison -> ExprInfo -> DefInfo -> QName -> [Clause] -> Expr -> Type -> TCM Term
- Agda.TypeChecking.Rules.Term: checkLambda :: Arg TypedBinding -> Expr -> Type -> TCM Term
+ Agda.TypeChecking.Rules.Term: checkLambda :: Comparison -> TypedBinding -> Expr -> Type -> TCM Term
- Agda.TypeChecking.Rules.Term: checkPostponedLambda :: Arg ([WithHiding Name], Maybe Type) -> Expr -> Type -> TCM Term
+ Agda.TypeChecking.Rules.Term: checkPostponedLambda :: Comparison -> Arg ([WithHiding Name], Maybe Type) -> Expr -> Type -> TCM Term
- Agda.TypeChecking.Rules.Term: checkRecordExpression :: RecordAssigns -> Expr -> Type -> TCM Term
+ Agda.TypeChecking.Rules.Term: checkRecordExpression :: Comparison -> RecordAssigns -> Expr -> Type -> TCM Term
- Agda.TypeChecking.Rules.Term: checkRecordUpdate :: ExprInfo -> Expr -> Assigns -> Expr -> Type -> TCM Term
+ Agda.TypeChecking.Rules.Term: checkRecordUpdate :: Comparison -> ExprInfo -> Expr -> Assigns -> Expr -> Type -> TCM Term
- Agda.TypeChecking.Rules.Term: checkTypedBindings :: LamOrPi -> TypedBindings -> (Telescope -> TCM a) -> TCM a
+ Agda.TypeChecking.Rules.Term: checkTypedBindings :: LamOrPi -> TypedBinding -> (Telescope -> TCM a) -> TCM a
- Agda.TypeChecking.Rules.Term: lambdaIrrelevanceCheck :: LensRelevance dom => ArgInfo -> dom -> TCM ArgInfo
+ Agda.TypeChecking.Rules.Term: lambdaIrrelevanceCheck :: LensRelevance dom => dom -> ArgInfo -> TCM ArgInfo
- Agda.TypeChecking.Rules.Term: unquoteM :: Expr -> Term -> Type -> TCM Term -> TCM Term
+ Agda.TypeChecking.Rules.Term: unquoteM :: Expr -> Term -> Type -> TCM ()
- Agda.TypeChecking.Rules.Term: unquoteTactic :: Term -> Term -> Type -> TCM Term -> TCM Term
+ Agda.TypeChecking.Rules.Term: unquoteTactic :: Term -> Term -> Type -> TCM ()
- Agda.TypeChecking.Serialise.Base: Dict :: !(HashTable Node Int32) -> !(HashTable String Int32) -> !(HashTable ByteString Int32) -> !(HashTable Integer Int32) -> !(HashTable Double Int32) -> !(HashTable (Ptr Term) Int32) -> !(HashTable NameId Int32) -> !(HashTable QNameId Int32) -> !(IORef FreshAndReuse) -> !(IORef FreshAndReuse) -> !(IORef FreshAndReuse) -> !(IORef FreshAndReuse) -> !(IORef FreshAndReuse) -> !(IORef FreshAndReuse) -> !(IORef FreshAndReuse) -> !(IORef FreshAndReuse) -> !(HashTable String Int) -> Bool -> !(HashTable AbsolutePath Int32) -> Dict
+ Agda.TypeChecking.Serialise.Base: Dict :: !HashTable Node Int32 -> !HashTable String Int32 -> !HashTable Text Int32 -> !HashTable Integer Int32 -> !HashTable Double Int32 -> !HashTable (Ptr Term) Int32 -> !HashTable NameId Int32 -> !HashTable QNameId Int32 -> !IORef FreshAndReuse -> !IORef FreshAndReuse -> !IORef FreshAndReuse -> !IORef FreshAndReuse -> !IORef FreshAndReuse -> !IORef FreshAndReuse -> !IORef FreshAndReuse -> !IORef FreshAndReuse -> !HashTable String Int -> Bool -> !HashTable AbsolutePath Int32 -> Dict
- Agda.TypeChecking.Serialise.Base: St :: !(Array Int32 Node) -> !(Array Int32 String) -> !(Array Int32 ByteString) -> !(Array Int32 Integer) -> !(Array Int32 Double) -> !Memo -> !ModuleToSource -> [AbsolutePath] -> St
+ Agda.TypeChecking.Serialise.Base: St :: !Array Int32 Node -> !Array Int32 String -> !Array Int32 Text -> !Array Int32 Integer -> !Array Int32 Double -> !Memo -> !ModuleToSource -> [AbsolutePath] -> St
- Agda.TypeChecking.Serialise.Base: [absPathD] :: Dict -> !(HashTable AbsolutePath Int32)
+ Agda.TypeChecking.Serialise.Base: [absPathD] :: Dict -> !HashTable AbsolutePath Int32
- Agda.TypeChecking.Serialise.Base: [doubleC] :: Dict -> !(IORef FreshAndReuse)
+ Agda.TypeChecking.Serialise.Base: [doubleC] :: Dict -> !IORef FreshAndReuse
- Agda.TypeChecking.Serialise.Base: [doubleD] :: Dict -> !(HashTable Double Int32)
+ Agda.TypeChecking.Serialise.Base: [doubleD] :: Dict -> !HashTable Double Int32
- Agda.TypeChecking.Serialise.Base: [doubleE] :: St -> !(Array Int32 Double)
+ Agda.TypeChecking.Serialise.Base: [doubleE] :: St -> !Array Int32 Double
- Agda.TypeChecking.Serialise.Base: [integerC] :: Dict -> !(IORef FreshAndReuse)
+ Agda.TypeChecking.Serialise.Base: [integerC] :: Dict -> !IORef FreshAndReuse
- Agda.TypeChecking.Serialise.Base: [integerD] :: Dict -> !(HashTable Integer Int32)
+ Agda.TypeChecking.Serialise.Base: [integerD] :: Dict -> !HashTable Integer Int32
- Agda.TypeChecking.Serialise.Base: [integerE] :: St -> !(Array Int32 Integer)
+ Agda.TypeChecking.Serialise.Base: [integerE] :: St -> !Array Int32 Integer
- Agda.TypeChecking.Serialise.Base: [nameC] :: Dict -> !(IORef FreshAndReuse)
+ Agda.TypeChecking.Serialise.Base: [nameC] :: Dict -> !IORef FreshAndReuse
- Agda.TypeChecking.Serialise.Base: [nameD] :: Dict -> !(HashTable NameId Int32)
+ Agda.TypeChecking.Serialise.Base: [nameD] :: Dict -> !HashTable NameId Int32
- Agda.TypeChecking.Serialise.Base: [nodeC] :: Dict -> !(IORef FreshAndReuse)
+ Agda.TypeChecking.Serialise.Base: [nodeC] :: Dict -> !IORef FreshAndReuse
- Agda.TypeChecking.Serialise.Base: [nodeD] :: Dict -> !(HashTable Node Int32)
+ Agda.TypeChecking.Serialise.Base: [nodeD] :: Dict -> !HashTable Node Int32
- Agda.TypeChecking.Serialise.Base: [nodeE] :: St -> !(Array Int32 Node)
+ Agda.TypeChecking.Serialise.Base: [nodeE] :: St -> !Array Int32 Node
- Agda.TypeChecking.Serialise.Base: [qnameC] :: Dict -> !(IORef FreshAndReuse)
+ Agda.TypeChecking.Serialise.Base: [qnameC] :: Dict -> !IORef FreshAndReuse
- Agda.TypeChecking.Serialise.Base: [qnameD] :: Dict -> !(HashTable QNameId Int32)
+ Agda.TypeChecking.Serialise.Base: [qnameD] :: Dict -> !HashTable QNameId Int32
- Agda.TypeChecking.Serialise.Base: [stats] :: Dict -> !(HashTable String Int)
+ Agda.TypeChecking.Serialise.Base: [stats] :: Dict -> !HashTable String Int
- Agda.TypeChecking.Serialise.Base: [stringC] :: Dict -> !(IORef FreshAndReuse)
+ Agda.TypeChecking.Serialise.Base: [stringC] :: Dict -> !IORef FreshAndReuse
- Agda.TypeChecking.Serialise.Base: [stringD] :: Dict -> !(HashTable String Int32)
+ Agda.TypeChecking.Serialise.Base: [stringD] :: Dict -> !HashTable String Int32
- Agda.TypeChecking.Serialise.Base: [stringE] :: St -> !(Array Int32 String)
+ Agda.TypeChecking.Serialise.Base: [stringE] :: St -> !Array Int32 String
- Agda.TypeChecking.Serialise.Base: [termC] :: Dict -> !(IORef FreshAndReuse)
+ Agda.TypeChecking.Serialise.Base: [termC] :: Dict -> !IORef FreshAndReuse
- Agda.TypeChecking.Serialise.Base: [termD] :: Dict -> !(HashTable (Ptr Term) Int32)
+ Agda.TypeChecking.Serialise.Base: [termD] :: Dict -> !HashTable (Ptr Term) Int32
- Agda.TypeChecking.Serialise.Base: icod_ :: EmbPrj a => a -> S Int32
+ Agda.TypeChecking.Serialise.Base: icod_ :: (EmbPrj a, Enum a) => a -> S Int32
- Agda.TypeChecking.Serialise.Base: value :: EmbPrj a => Int32 -> R a
+ Agda.TypeChecking.Serialise.Base: value :: (EmbPrj a, Enum a) => Int32 -> R a
- Agda.TypeChecking.SizedTypes.Solve: canonicalizeSizeConstraint :: SizeConstraint -> Maybe (SizeConstraint)
+ Agda.TypeChecking.SizedTypes.Solve: canonicalizeSizeConstraint :: SizeConstraint -> Maybe SizeConstraint
- Agda.TypeChecking.SizedTypes.Solve: solveCluster :: DefaultToInfty -> [(CC, HypSizeConstraint)] -> TCM ()
+ Agda.TypeChecking.SizedTypes.Solve: solveCluster :: DefaultToInfty -> NonemptyList (CC, HypSizeConstraint) -> TCM ()
- Agda.TypeChecking.SizedTypes.WarshallSolver: findRigidBelow :: (Ord r, Ord f) => HypGraph r f -> (SizeExpr' r f) -> Maybe (SizeExpr' r f)
+ Agda.TypeChecking.SizedTypes.WarshallSolver: findRigidBelow :: (Ord r, Ord f) => HypGraph r f -> SizeExpr' r f -> Maybe (SizeExpr' r f)
- Agda.TypeChecking.Substitute: Lift :: !Int -> (Substitution' a) -> Substitution' a
+ Agda.TypeChecking.Substitute: Lift :: !Int -> Substitution' a -> Substitution' a
- Agda.TypeChecking.Substitute: Strengthen :: Empty -> (Substitution' a) -> Substitution' a
+ Agda.TypeChecking.Substitute: Strengthen :: Empty -> Substitution' a -> Substitution' a
- Agda.TypeChecking.Substitute: Wk :: !Int -> (Substitution' a) -> Substitution' a
+ Agda.TypeChecking.Substitute: Wk :: !Int -> Substitution' a -> Substitution' a
- Agda.TypeChecking.Substitute: applyNLPatSubst :: (Subst Term a) => Substitution' NLPat -> a -> a
+ Agda.TypeChecking.Substitute: applyNLPatSubst :: Subst Term a => Substitution' NLPat -> a -> a
- Agda.TypeChecking.Substitute: applyPatSubst :: (Subst Term a) => PatternSubstitution -> a -> a
+ Agda.TypeChecking.Substitute: applyPatSubst :: Subst Term a => PatternSubstitution -> a -> a
- Agda.TypeChecking.Substitute: univSort :: Sort -> Sort
+ Agda.TypeChecking.Substitute: univSort :: Maybe Sort -> Sort -> Sort
- Agda.TypeChecking.Substitute: univSort' :: Sort -> Maybe Sort
+ Agda.TypeChecking.Substitute: univSort' :: Maybe Sort -> Sort -> Maybe Sort
- Agda.TypeChecking.SyntacticEquality: checkSyntacticEquality :: (SynEq a) => a -> a -> ReduceM ((a, a), Bool)
+ Agda.TypeChecking.SyntacticEquality: checkSyntacticEquality :: (SynEq a, MonadReduce m) => a -> a -> m ((a, a), Bool)
- Agda.TypeChecking.Telescope: getOutputTypeName :: Type -> TCM OutputTypeName
+ Agda.TypeChecking.Telescope: getOutputTypeName :: Type -> TCM (Telescope, OutputTypeName)
- Agda.TypeChecking.Telescope: ifNotPi :: MonadTCM tcm => Term -> (Term -> tcm a) -> (Dom Type -> Abs Type -> tcm a) -> tcm a
+ Agda.TypeChecking.Telescope: ifNotPi :: MonadReduce m => Term -> (Term -> m a) -> (Dom Type -> Abs Type -> m a) -> m a
- Agda.TypeChecking.Telescope: ifNotPiType :: MonadTCM tcm => Type -> (Type -> tcm a) -> (Dom Type -> Abs Type -> tcm a) -> tcm a
+ Agda.TypeChecking.Telescope: ifNotPiType :: MonadReduce m => Type -> (Type -> m a) -> (Dom Type -> Abs Type -> m a) -> m a
- Agda.TypeChecking.Telescope: ifPi :: MonadTCM tcm => Term -> (Dom Type -> Abs Type -> tcm a) -> (Term -> tcm a) -> tcm a
+ Agda.TypeChecking.Telescope: ifPi :: MonadReduce m => Term -> (Dom Type -> Abs Type -> m a) -> (Term -> m a) -> m a
- Agda.TypeChecking.Telescope: ifPiType :: MonadTCM tcm => Type -> (Dom Type -> Abs Type -> tcm a) -> (Type -> tcm a) -> tcm a
+ Agda.TypeChecking.Telescope: ifPiType :: MonadReduce m => Type -> (Dom Type -> Abs Type -> m a) -> (Type -> m a) -> m a
- Agda.TypeChecking.Telescope: mustBePi :: MonadTCM tcm => Type -> tcm (Dom Type, Abs Type)
+ Agda.TypeChecking.Telescope: mustBePi :: MonadReduce m => Type -> m (Dom Type, Abs Type)
- Agda.TypeChecking.Telescope: piApplyM :: Type -> Args -> TCM Type
+ Agda.TypeChecking.Telescope: piApplyM :: (PiApplyM a, MonadReduce m) => Type -> a -> m Type
- Agda.TypeChecking.Telescope: tele2NamedArgs :: (DeBruijn a) => Telescope -> Telescope -> [NamedArg a]
+ Agda.TypeChecking.Telescope: tele2NamedArgs :: DeBruijn a => Telescope -> Telescope -> [NamedArg a]
- Agda.TypeChecking.Telescope: teleArgs :: (DeBruijn a) => Telescope -> [Arg a]
+ Agda.TypeChecking.Telescope: teleArgs :: DeBruijn a => Telescope -> [Arg a]
- Agda.TypeChecking.Telescope: teleNamedArgs :: (DeBruijn a) => Telescope -> [NamedArg a]
+ Agda.TypeChecking.Telescope: teleNamedArgs :: DeBruijn a => Telescope -> [NamedArg a]
- Agda.Utils.Benchmark: Benchmark :: !(BenchmarkOn a) -> !(CurrentAccount a) -> !(Timings a) -> Benchmark a
+ Agda.Utils.Benchmark: Benchmark :: !BenchmarkOn a -> !CurrentAccount a -> !Timings a -> Benchmark a
- Agda.Utils.Benchmark: [benchmarkOn] :: Benchmark a -> !(BenchmarkOn a)
+ Agda.Utils.Benchmark: [benchmarkOn] :: Benchmark a -> !BenchmarkOn a
- Agda.Utils.Benchmark: [currentAccount] :: Benchmark a -> !(CurrentAccount a)
+ Agda.Utils.Benchmark: [currentAccount] :: Benchmark a -> !CurrentAccount a
- Agda.Utils.Benchmark: [timings] :: Benchmark a -> !(Timings a)
+ Agda.Utils.Benchmark: [timings] :: Benchmark a -> !Timings a
- Agda.Utils.Cluster: cluster :: (a -> (C, [C])) -> [a] -> [[a]]
+ Agda.Utils.Cluster: cluster :: (a -> NonemptyList C) -> [a] -> [NonemptyList a]
- Agda.Utils.Cluster: cluster' :: [(a, (C, [C]))] -> [[a]]
+ Agda.Utils.Cluster: cluster' :: [(a, NonemptyList C)] -> [NonemptyList a]
- Agda.Utils.Except: catchError :: MonadError e m => m a -> e -> m a -> m a
+ Agda.Utils.Except: catchError :: MonadError e m => m a -> (e -> m a) -> m a
- Agda.Utils.Except: class Monad m => MonadError e (m :: * -> *) | m -> e
+ Agda.Utils.Except: class Monad m => MonadError e (m :: Type -> Type) | m -> e
- Agda.Utils.Except: data ExceptT e (m :: * -> *) a
+ Agda.Utils.Except: data ExceptT e (m :: Type -> Type) a
- Agda.Utils.Except: mapExceptT :: () => m Either e a -> n Either e' b -> ExceptT e m a -> ExceptT e' n b
+ Agda.Utils.Except: mapExceptT :: () => (m (Either e a) -> n (Either e' b)) -> ExceptT e m a -> ExceptT e' n b
- Agda.Utils.Except: runExceptT :: () => ExceptT e m a -> m Either e a
+ Agda.Utils.Except: runExceptT :: () => ExceptT e m a -> m (Either e a)
- Agda.Utils.Function: applyUnlessM :: (Monad m) => m Bool -> (m a -> m a) -> m a -> m a
+ Agda.Utils.Function: applyUnlessM :: Monad m => m Bool -> (m a -> m a) -> m a -> m a
- Agda.Utils.Function: applyWhenM :: (Monad m) => m Bool -> (m a -> m a) -> m a -> m a
+ Agda.Utils.Function: applyWhenM :: Monad m => m Bool -> (m a -> m a) -> m a -> m a
- Agda.Utils.Function: repeatWhileM :: (Monad m) => (a -> m (Bool, a)) -> a -> m a
+ Agda.Utils.Function: repeatWhileM :: Monad m => (a -> m (Bool, a)) -> a -> m a
- Agda.Utils.Function: trampolineWhileM :: (Monad m) => (a -> m (Bool, a)) -> a -> m a
+ Agda.Utils.Function: trampolineWhileM :: Monad m => (a -> m (Bool, a)) -> a -> m a
- Agda.Utils.Functor: (<$>) :: Functor f => a -> b -> f a -> f b
+ Agda.Utils.Functor: (<$>) :: Functor f => (a -> b) -> f a -> f b
- Agda.Utils.Functor: (<&>) :: Functor f => f a -> a -> b -> f b
+ Agda.Utils.Functor: (<&>) :: Functor f => f a -> (a -> b) -> f b
- Agda.Utils.Functor: distributeF :: (Decoration t, (Functor m)) => t (m a) -> m (t a)
+ Agda.Utils.Functor: distributeF :: (Decoration t, Functor m) => t (m a) -> m (t a)
- Agda.Utils.Haskell.Syntax: Alt :: Pat -> Rhs -> (Maybe Binds) -> Alt
+ Agda.Utils.Haskell.Syntax: Alt :: Pat -> Rhs -> Maybe Binds -> Alt
- Agda.Utils.Haskell.Syntax: Match :: Name -> [Pat] -> Rhs -> (Maybe Binds) -> Match
+ Agda.Utils.Haskell.Syntax: Match :: Name -> [Pat] -> Rhs -> Maybe Binds -> Match
- Agda.Utils.IO.UTF8: readTextFile :: FilePath -> IO String
+ Agda.Utils.IO.UTF8: readTextFile :: FilePath -> IO Text
- Agda.Utils.Lens: (<&>) :: Functor f => f a -> a -> b -> f b
+ Agda.Utils.Lens: (<&>) :: Functor f => f a -> (a -> b) -> f b
- Agda.Utils.Maybe.Strict: maybe :: () => b -> a -> b -> Maybe a -> b
+ Agda.Utils.Maybe.Strict: maybe :: () => b -> (a -> b) -> Maybe a -> b
- Agda.Utils.Memo: memoUnsafe :: Ord a => (a -> b) -> (a -> b)
+ Agda.Utils.Memo: memoUnsafe :: Ord a => (a -> b) -> a -> b
- Agda.Utils.Memo: memoUnsafeH :: (Eq a, Hashable a) => (a -> b) -> (a -> b)
+ Agda.Utils.Memo: memoUnsafeH :: (Eq a, Hashable a) => (a -> b) -> a -> b
- Agda.Utils.Monad: (<$>) :: Functor f => a -> b -> f a -> f b
+ Agda.Utils.Monad: (<$>) :: Functor f => (a -> b) -> f a -> f b
- Agda.Utils.Monad: (<*>) :: Applicative f => f a -> b -> f a -> f b
+ Agda.Utils.Monad: (<*>) :: Applicative f => f (a -> b) -> f a -> f b
- Agda.Utils.Monad: class (Alternative m, Monad m) => MonadPlus (m :: * -> *)
+ Agda.Utils.Monad: class (Alternative m, Monad m) => MonadPlus (m :: Type -> Type)
- Agda.Utils.NonemptyList: toList :: Foldable t => t a -> [a]
+ Agda.Utils.NonemptyList: toList :: NonemptyList a -> [a]
- Agda.Utils.Null: ifNull :: (Null a) => a -> b -> (a -> b) -> b
+ Agda.Utils.Null: ifNull :: Null a => a -> b -> (a -> b) -> b
- Agda.Utils.Pretty: fullRender :: () => Mode -> Int -> Float -> TextDetails -> a -> a -> a -> Doc -> a
+ Agda.Utils.Pretty: fullRender :: () => Mode -> Int -> Float -> (TextDetails -> a -> a) -> a -> Doc -> a
- Agda.Utils.Trie: Trie :: !(Maybe v) -> !(Map k (Trie k v)) -> Trie k v
+ Agda.Utils.Trie: Trie :: !Maybe v -> !Map k (Trie k v) -> Trie k v
- Agda.Utils.Trie: insert :: (Ord k) => [k] -> v -> Trie k v -> Trie k v
+ Agda.Utils.Trie: insert :: Ord k => [k] -> v -> Trie k v -> Trie k v
- Agda.Utils.Trie: insertWith :: (Ord k) => (v -> v -> v) -> [k] -> v -> Trie k v -> Trie k v
+ Agda.Utils.Trie: insertWith :: Ord k => (v -> v -> v) -> [k] -> v -> Trie k v -> Trie k v
- Agda.Utils.Trie: union :: (Ord k) => Trie k v -> Trie k v -> Trie k v
+ Agda.Utils.Trie: union :: Ord k => Trie k v -> Trie k v -> Trie k v
- Agda.Utils.Trie: unionWith :: (Ord k) => (v -> v -> v) -> Trie k v -> Trie k v -> Trie k v
+ Agda.Utils.Trie: unionWith :: Ord k => (v -> v -> v) -> Trie k v -> Trie k v -> Trie k v
- Agda.Utils.Tuple: mapFstM :: (Applicative m) => (a -> m c) -> (a, b) -> m (c, b)
+ Agda.Utils.Tuple: mapFstM :: Applicative m => (a -> m c) -> (a, b) -> m (c, b)
- Agda.Utils.Tuple: mapPairM :: (Applicative m) => (a -> m c) -> (b -> m d) -> (a, b) -> m (c, d)
+ Agda.Utils.Tuple: mapPairM :: Applicative m => (a -> m c) -> (b -> m d) -> (a, b) -> m (c, d)
- Agda.Utils.Tuple: mapSndM :: (Applicative m) => (b -> m d) -> (a, b) -> m (a, d)
+ Agda.Utils.Tuple: mapSndM :: Applicative m => (b -> m d) -> (a, b) -> m (a, d)
- Agda.Utils.VarSet: unions :: [IntSet] -> IntSet
+ Agda.Utils.VarSet: unions :: Foldable f => f IntSet -> IntSet
- Agda.Utils.Warshall: Graph :: Map FlexId Scope -> Map Node NodeId -> Map NodeId Node -> NodeId -> NodeId -> NodeId -> Weight -> Graph
+ Agda.Utils.Warshall: Graph :: Map FlexId Scope -> Map Node NodeId -> Map NodeId Node -> NodeId -> (NodeId -> NodeId -> Weight) -> Graph
- Agda.Utils.Warshall: LegendMatrix :: Matrix a -> Int -> b -> Int -> c -> LegendMatrix a b c
+ Agda.Utils.Warshall: LegendMatrix :: Matrix a -> (Int -> b) -> (Int -> c) -> LegendMatrix a b c

Files

Agda.cabal view
@@ -1,10 +1,10 @@ name:            Agda-version:         2.5.4.2+version:         2.6.0 cabal-version:   >= 1.10 build-type:      Custom license:         OtherLicense license-file:    LICENSE-author:          Agda 2 was originally written by Ulf Norell, partially based on code from Agda 1 by Catarina Coquand and Makoto Takeyama, and from Agdalight by Ulf Norell and Andreas Abel. Agda 2 is currently actively developed mainly by Andreas Abel, Guillaume Allais, Jesper Cockx, Nils Anders Danielsson, Philipp Hausmann, Fredrik Nordvall Forsberg, Ulf Norell, Víctor López Juan, Andrés Sicard-Ramírez, and Andrea Vezzosi. Further, Agda 2 has received contributions by, amongst others, Stevan Andjelkovic, Marcin Benke, Jean-Philippe Bernardy, Guillaume Brunerie, James Chapman, Dominique Devriese, Péter Diviánszki, Olle Fredriksson, Adam Gundry, Daniel Gustafsson, Kuen-Bang Hou (favonia), Patrik Jansson, Alan Jeffrey, Wolfram Kahl, Wen Kokke, Fredrik Lindblad, Francesco Mazzoli, Stefan Monnier, Darin Morrison, Guilhem Moulin, Nicolas Pouillard, Nobuo Yamashita, Christian Sattler, and Makoto Takeyama and many more.+author:          Agda 2 was originally written by Ulf Norell, partially based on code from Agda 1 by Catarina Coquand and Makoto Takeyama, and from Agdalight by Ulf Norell and Andreas Abel. Agda 2 is currently actively developed mainly by Andreas Abel, Guillaume Allais, Jesper Cockx, Nils Anders Danielsson, Philipp Hausmann, Fredrik Nordvall Forsberg, Ulf Norell, Víctor López Juan, Andrés Sicard-Ramírez, and Andrea Vezzosi. Further, Agda 2 has received contributions by, amongst others, Stevan Andjelkovic, Marcin Benke, Jean-Philippe Bernardy, Guillaume Brunerie, James Chapman, Dominique Devriese, Péter Diviánszky, Olle Fredriksson, Adam Gundry, Daniel Gustafsson, Kuen-Bang Hou (favonia), Patrik Jansson, Alan Jeffrey, Wolfram Kahl, Wen Kokke, Fredrik Lindblad, Francesco Mazzoli, Stefan Monnier, Darin Morrison, Guilhem Moulin, Nicolas Pouillard, Nobuo Yamashita, Christian Sattler, and Makoto Takeyama and many more. maintainer:      Ulf Norell <ulfn@chalmers.se> homepage:        http://wiki.portal.chalmers.se/agda/ bug-reports:     https://github.com/agda/agda/issues@@ -37,6 +37,7 @@                     GHC == 8.0.2                     GHC == 8.2.2                     GHC == 8.4.4+                    GHC == 8.6.4 extra-source-files: CHANGELOG.md                     README.md                     doc/user-manual.pdf@@ -45,6 +46,7 @@                     stack-8.0.2.yaml                     stack-8.2.2.yaml                     stack-8.4.4.yaml+                    stack-8.6.4.yaml  data-dir:           src/data data-files:         Agda.css@@ -54,8 +56,15 @@                     JS/biginteger.js                     lib/prim/Agda/Builtin/Bool.agda                     lib/prim/Agda/Builtin/Char.agda+                    lib/prim/Agda/Builtin/Char/Properties.agda                     lib/prim/Agda/Builtin/Coinduction.agda+                    lib/prim/Agda/Builtin/Cubical/Path.agda+                    lib/prim/Agda/Builtin/Cubical/Id.agda+                    lib/prim/Agda/Builtin/Cubical/Sub.agda+                    lib/prim/Agda/Builtin/Cubical/Glue.agda                     lib/prim/Agda/Builtin/Equality.agda+                    lib/prim/Agda/Builtin/Equality/Erase.agda+                    lib/prim/Agda/Builtin/Equality/Rewrite.agda                     lib/prim/Agda/Builtin/Float.agda                     lib/prim/Agda/Builtin/FromNat.agda                     lib/prim/Agda/Builtin/FromNeg.agda@@ -69,10 +78,12 @@                     lib/prim/Agda/Builtin/Size.agda                     lib/prim/Agda/Builtin/Strict.agda                     lib/prim/Agda/Builtin/String.agda+                    lib/prim/Agda/Builtin/String/Properties.agda                     lib/prim/Agda/Builtin/TrustMe.agda                     lib/prim/Agda/Builtin/Unit.agda                     lib/prim/Agda/Builtin/Word.agda                     lib/prim/Agda/Primitive.agda+                    lib/prim/Agda/Primitive/Cubical.agda                     MAlonzo/src/MAlonzo/*.hs                     postprocess-latex.pl @@ -83,7 +94,7 @@ source-repository this   type:     git   location: https://github.com/agda/agda.git-  tag:      v2.5.4.2+  tag:      v2.6.0  flag cpphs   default:     False@@ -105,11 +116,11 @@ -- ASR (2018-09-14). Every new setup dependency should also be added -- as a library dependency. See Issue #3225. custom-setup-  setup-depends:  base >= 4.8.0.0 && < 4.12-                , Cabal >= 1.22.5.0 && < 2.3+  setup-depends:  base >= 4.8.0.0 && < 4.13+                , Cabal >= 1.22.5.0 && < 2.5                 , filepath >= 1.4.0.0 && < 1.5-                , filemanip >= 0.3.6.2 && < 0.4                 , process >= 1.2.3.0 && < 1.7+                , directory >= 1.2.2.0 && < 1.4  library   hs-source-dirs:   src/full@@ -134,14 +145,25 @@   if os(windows)     build-depends:  Win32 >= 2.3.1.0 && < 2.7 -  build-depends:  array >= 0.5.1.0 && < 0.6+  -- Agda cannot be built with GHC 8.6.1 due to a compiler bug, see+  -- Agda Issue #3344.+  if impl(ghc == 8.6.1)+    buildable: False++  -- Agda cannot be built with Windows and GHC 8.6.3 due to a compiler+  -- bug, see Agda Issue #3657.+  if os(windows) && impl(ghc == 8.6.3)+    buildable: False++  build-depends:  aeson >= 0.11.3.0 && < 1.5+                , array >= 0.5.1.0 && < 0.6                 , async >= 2.2 && < 2.3-                , base >= 4.8.0.0 && < 4.12+                , base >= 4.8.0.0 && < 4.13                 , binary >= 0.7.3.0 && < 0.9                 , blaze-html >= 0.8 && < 0.10                 , boxes >= 0.1.3 && < 0.2                 , bytestring >= 0.10.6.0 && < 0.11-                , containers >= 0.5.6.2 && < 0.6+                , containers >= 0.5.6.2 && < 0.7                 , data-hash >= 0.2.0.0 && < 0.3                 , deepseq >= 1.4.1.1 && < 1.5                 , directory >= 1.2.2.0 && < 1.4@@ -149,6 +171,8 @@                 , EdisonCore == 1.3.1.1 || >= 1.3.2.1 && < 1.4                 , edit-distance >= 0.2.1.2 && < 0.3                 , equivalence >= 0.3.2 && < 0.4+                -- exceptions-0.8 instead of 0.10 because of stack+                , exceptions >= 0.8 && < 0.11                 , filepath >= 1.4.0.0 && < 1.5                 , geniplate-mirror >= 0.6.0.6 && < 0.8                 , gitrev >= 1.3.1 && < 2.0@@ -172,17 +196,21 @@                 , pretty >= 1.1.2.0 && < 1.2                 , process >= 1.2.3.0 && < 1.7                 , regex-tdfa >= 1.2.2 && < 1.3-                , stm >= 2.4.4 && < 2.5+                , split >= 0.2.0.0 && < 0.2.3.4+                , stm >= 2.4.4 && < 2.6                 , strict >= 0.3.2 && < 0.4-                , template-haskell >= 2.10.0.0 && < 2.14+                , template-haskell >= 2.10.0.0 && < 2.15                 , time >= 1.5.0.1 && < 1.9                 , unordered-containers >= 0.2.5.0 && < 0.3                 , uri-encode >= 1.5.0.4 && < 1.6    -- In hTags the mtl library must be compiled with the version of   -- transformers shipped with GHC, so we use that version in Agda (see,-  -- for example, Issue 2983).-  if impl(ghc >= 8.4)+  -- for example, Issue #2983).+  if impl(ghc >= 8.6.4) && impl(ghc < 8.6.6)+    build-depends: transformers == 0.5.6.2++  if impl(ghc >= 8.4) && impl(ghc < 8.6.4)     build-depends: transformers == 0.5.5.0    -- ASR (2018-10-16). Required for supporting GHC 8.4.1, 8.4.2 and@@ -208,10 +236,8 @@     build-depends: zlib >= 0.4.0.1 && < 0.7    if impl(ghc < 8.0)-    -- provide/emulate `Control.Monad.Fail` and `Data.Semigroups` API-    -- for pre-GHC8-    build-depends:  fail == 4.9.*-                  , semigroups == 0.18.*+    -- provide/emulate `Data.Semigroups` API for pre-GHC8+    build-depends:  semigroups == 0.18.*    -- We don't write upper bounds for Alex nor Happy because the   -- `build-tools` field can not be modified in Hackage. Agda doesn't@@ -259,16 +285,20 @@                     Agda.Compiler.Treeless.Uncase                     Agda.Compiler.Treeless.Unused                     Agda.ImpossibleTest+                    Agda.Interaction.AgdaTop                     Agda.Interaction.BasicOps                     Agda.Interaction.SearchAbout                     Agda.Interaction.CommandLine                     Agda.Interaction.EmacsCommand                     Agda.Interaction.EmacsTop+                    Agda.Interaction.JSONTop                     Agda.Interaction.FindFile+                    Agda.Interaction.Highlighting.Common                     Agda.Interaction.Highlighting.Dot                     Agda.Interaction.Highlighting.Emacs                     Agda.Interaction.Highlighting.Generate                     Agda.Interaction.Highlighting.HTML+                    Agda.Interaction.Highlighting.JSON                     Agda.Interaction.Highlighting.Precise                     Agda.Interaction.Highlighting.Range                     Agda.Interaction.Highlighting.Vim@@ -294,8 +324,11 @@                     Agda.Syntax.Abstract.Pretty                     Agda.Syntax.Abstract.Views                     Agda.Syntax.Abstract+                    Agda.Syntax.Builtin                     Agda.Syntax.Common+                    Agda.Syntax.Concrete.Attribute                     Agda.Syntax.Concrete.Definitions+                    Agda.Syntax.Concrete.Fixity                     Agda.Syntax.Concrete.Generic                     Agda.Syntax.Concrete.Name                     Agda.Syntax.Concrete.Operators.Parser@@ -365,6 +398,7 @@                     Agda.TypeChecking.DropArgs                     Agda.TypeChecking.Empty                     Agda.TypeChecking.EtaContract+                    Agda.TypeChecking.EtaExpand                     Agda.TypeChecking.Errors                     Agda.TypeChecking.Free                     Agda.TypeChecking.Free.Lazy@@ -373,6 +407,8 @@                     Agda.TypeChecking.Free.Reduce                     Agda.TypeChecking.Forcing                     Agda.TypeChecking.Functions+                    Agda.TypeChecking.Generalize+                    Agda.TypeChecking.IApplyConfluence                     Agda.TypeChecking.Implicit                     Agda.TypeChecking.Injectivity                     Agda.TypeChecking.Inlining@@ -403,6 +439,7 @@                     Agda.TypeChecking.Monad.Statistics                     Agda.TypeChecking.Monad.Trace                     Agda.TypeChecking.Monad+                    Agda.TypeChecking.Names                     Agda.TypeChecking.Patterns.Abstract                     Agda.TypeChecking.Patterns.Internal                     Agda.TypeChecking.Patterns.Match@@ -411,6 +448,7 @@                     Agda.TypeChecking.Positivity.Occurrence                     Agda.TypeChecking.Pretty                     Agda.TypeChecking.Primitive+                    Agda.TypeChecking.Primitive.Cubical                     Agda.TypeChecking.ProjectionLike                     Agda.TypeChecking.Quote                     Agda.TypeChecking.ReconstructParameters@@ -455,6 +493,7 @@                     Agda.TypeChecking.Substitute.DeBruijn                     Agda.TypeChecking.SyntacticEquality                     Agda.TypeChecking.Telescope+                    Agda.TypeChecking.Telescope.Path                     Agda.TypeChecking.Unquote                     Agda.TypeChecking.Warnings                     Agda.TypeChecking.With@@ -476,6 +515,7 @@                     Agda.Utils.Function                     Agda.Utils.Geniplate                     Agda.Utils.Graph.AdjacencyMap.Unidirectional+                    Agda.Utils.Graph.TopSort                     Agda.Utils.Hash                     Agda.Utils.HashMap                     Agda.Utils.Haskell.Syntax@@ -485,6 +525,7 @@                     Agda.Utils.IO                     Agda.Utils.IO.Binary                     Agda.Utils.IO.Directory+                    Agda.Utils.IO.TempFile                     Agda.Utils.IO.UTF8                     Agda.Utils.IORef                     Agda.Utils.Lens@@ -516,9 +557,11 @@                     Agda.Utils.Trie                     Agda.Utils.Tuple                     Agda.Utils.TypeLevel+                    Agda.Utils.TypeLits                     Agda.Utils.Update                     Agda.Utils.VarSet                     Agda.Utils.Warshall+                    Agda.Utils.WithDefault                     Agda.Utils.Zipper                     Agda.Version                     Agda.VersionCommit@@ -579,7 +622,11 @@                  -Wsimplifiable-class-constraints                  -Wunbanged-strict-patterns +  if impl(ghc >= 8.6)+    ghc-options: -Winaccessible-code+   default-language: Haskell2010+   default-extensions: ConstraintKinds                     , DataKinds                     , DefaultSignatures@@ -594,6 +641,7 @@                     , MultiParamTypeClasses                     , MultiWayIf                     , NamedFieldPuns+                    , OverloadedStrings                     , RankNTypes                     , RecordWildCards                     , ScopedTypeVariables@@ -627,7 +675,7 @@   hs-source-dirs:   src/agda-mode   main-is:          Main.hs   other-modules:    Paths_Agda-  build-depends:    base >= 4.8.0.0 && < 4.12+  build-depends:    base >= 4.8.0.0 && < 4.13                   , directory >= 1.2.2.0 && < 1.4                   , filepath >= 1.4.0.0 && < 1.5                   , process >= 1.2.3.0 && < 1.7
CHANGELOG.md view
@@ -1,3 +1,853 @@+Release notes for Agda version 2.6.0+====================================++Highlights+----------++* Added support for [Cubical+  Agda](https://agda.readthedocs.io/en/latest/language/cubical.html)+  which adds new features such as univalence and higher inductive+  types to Agda.++* Added support for ML-style [automatic generalization of+  variables](https://agda.readthedocs.io/en/latest/language/generalization-of-declared-variables.html).++* Added a new sort ``Prop`` of [definitionally proof-irrelevant+  propositions](https://agda.readthedocs.io/en/latest/language/prop.html).++* The implementation of [instance+  search](https://agda.readthedocs.io/en/latest/language/instance-arguments.html)+  got a major overhaul and no longer supports overlapping instances+  (unless enabled by a flag).++Installation and infrastructure+-------------------------------++* Added support for GHC 8.6.4.++* Interface files for all builtin and primitive files are now+  re-generated each time Agda is installed.++Syntax+------++* Agda now supports implicit generalization of declared+  variables. Variables to be generalized can declared with the new+  keyword `variable`.  For example:++  ```agda+    postulate+      Con : Set++    variable+      Γ Δ θ : Con+  ```++  Declared variables are automatically generalized in type signatures,+  module telescopes and data type and record parameters and indices:++  ```agda+    postulate+      Sub : Con → Con → Set++      id  : Sub Γ Γ+   -- -- equivalent to+   -- id  : {Γ : Con} → Sub Γ Γ++      _∘_ : Sub Θ Δ → Sub Γ Θ → Sub Γ Δ+   -- -- equivalent to+   -- _∘_ : {Γ Δ Θ : Con} → Sub Θ Δ → Sub Γ Θ → Sub Γ Δ+  ```++  See the [user manual](https://agda.readthedocs.io/en/latest/language/generalization-of-declared-variables.html)+  for more details.++* Data type and record definitions separated from their type signatures can no+  longer repeat the types of the parameters, but can bind implicit parameters+  by name [Issue [#1886](https://github.com/agda/agda/issues/1886)].++  This is now allowed+  ```agda+    data D {a b} (A : Set a) (B : Set b) : Set (a ⊔ lsuc b)+    data D {b = b} A B where+      mkD : (A → Set b) → D A B+  ```+  but this is not+  ```agda+    data I (A : Set) : Set+    data I (A : Set) where+  ```++* The label used for named implicit arguments can now be different from the+  name of the bound variable [Issue [#952](https://github.com/agda/agda/issues/952)].++  Example,+  ```agda+    id₁ : {A = X : Set} → X → X+    id₁ x = x++    id₂ : ∀ {B = X} → X → X+    id₂ {B = X} x = id₁ {A = X} x++    test : Nat+    test = id₁ {A = Nat} 5 + id₂ {B = Nat} 6+  ```+  Only implicit and instance arguments can have a label and either or both of+  the label and bound variable can be `_`. Labeled bindings with a type+  signature can only bind a single variable. For instance, the type `Set` has+  to be repeated here:+  ```agda+    const : {A = X : Set} {B = Y : Set} → X → Y → X+    const x _ = x+  ```++* The rules for parsing of patterns have changed slightly [Issue+  [#3400](https://github.com/agda/agda/issues/3400)].++  Now projections are treated similarly to constructors: In a pattern+  name parts coming from projections can only be used as part of+  projections, constructors or pattern synonyms. They cannot be used+  as variables, or as part of the name of the defined value.++  Examples:++  * The following code used to be syntactically ambiguous, but is now+    parsed, because A can no longer be used as a variable:+    ```agda+    record R : Set₂ where+      field+        _A : Set₁++    open R++    r : R+    r A = Set+    ```++  * On the other hand the following code is no longer parsed:+    ```agda+    record R : Set₁ where+      field+        ⟨_+_⟩ : Set++    open R++    + : Set → Set+    + A = A+    ```+++Type checking+-------------++* Agda now supports a cubical mode which adds new features from+  [Cubical Type Theory](https://arxiv.org/abs/1611.02108), including+  univalence and higher inductive types. Option `--cubical` enables+  the cubical mode, and cubical primitives are defined in the module+  `Agda.Primitive.Cubical`.  See the [user+  manual](https://agda.readthedocs.io/en/latest/language/cubical.html)+  for more info.++* Agda now supports the new sort ``Prop`` of [definitionally+  proof-irrelevant propositions](https://hal.inria.fr/hal-01859964).+  Option `--prop` enables the `Prop` universe but is off by default.+  Option `--no-prop` disables the `Prop` universe.  See the [user+  manual](https://agda.readthedocs.io/en/latest/language/prop.html)+  for more details.++  In the absense of `Prop`, the sort `Set` is the lowest sort, thus,+  the sort annotation `: Set` can be ommitted if the sort is+  constrained to be weakly below `Set`.  For instance:++  ```agda+  {-# OPTIONS --no-prop #-}++  data Wrap A : Set where+    wrap : A → Wrap A+  ```++  In contrast, when `--prop` is enabled the sort of `A` could be+  either `Set` or `Prop` so this code no longer typechecks.++* Agda now allows omitting absurd clauses in case one of the pattern+  variable inhabits an obviously empty type+  [Issue [#1086](https://github.com/agda/agda/issues/1086)].+  For example:+  ```agda+  f : Fin 1 → Nat+  f zero = 0+  -- f (suc ())   -- this clause is no longer required+  ```+  Absurd clauses are still required in case deep pattern matching is+  needed to expose the absurd variable, or if there are no non-absurd+  clauses.++  Due to the changes to the coverage checker required for this new+  feature, Agda will now sometimes construct a different case when+  there are multiple valid splitting orders. In some cases this may+  impact the constraints that Agda is able to solve (for example, see+  [#673](https://github.com/agda/agda-stdlib/pull/673) on the+  standard library).++* Since Agda 2.5.3, the hiding is considered part of the name in the+  insertion of implicit arguments.  Until Agda 2.5.2, the following+  code was rejected:+  ```agda+    test : {{X : Set}} {X : Set} → Set+    test {X = X} = X+  ```+  The rationale was that named argument `X` is given with the wrong hiding.+  The new rationale is that the hiding is considered part of the name,+  distinguishing `{{X}}` from `{X}`.+  This language change was accidential and has not been documented in+  the 2.5.3 release notes.++* Agda no longer allows case splitting on irrelevant arguments of+  record types (see Issue+  [#3056](https://github.com/agda/agda/issues/3056)).++* Metavariables in module telescopes are now sometimes frozen later+  [Issue [#1063](https://github.com/agda/agda/issues/1063)].++  Metavariables created in the types of module parameters used to be+  frozen right after the module's first mutual block had been+  type-checked (unless, perhaps, if the module itself was contained in+  a mutual block). Now they are instead frozen at the end of the+  module (with a similar caveat regarding an outer mutual block).++* When `--without-K` is enabled, Agda no longer allows datatypes with+  large indices. For example, the following definition of equality is+  now forbidden when `--without-K` is enabled:+  ```agda+    data _≡₀_ {ℓ} {A : Set ℓ} (x : A) : A → Set where+      refl : x ≡₀ x+  ```++* The termination checker now also looks for recursive calls in the type of definitions.+  This fixes an issue where Agda allowed very dependent types+  [Issue [#1556](https://github.com/agda/agda/issues/1556)].++  This change affects induction-induction, e.g.+  ```agda+    mutual+      data Cxt : Set where+        ε    :  Cxt+        _,_  :  (Γ : Cxt) (A : Ty Γ) → Cxt++      data Ty : (Γ : Cxt) → Set where+        u  :  ∀ Γ → Ty Γ+        Π  :  ∀ Γ (A : Ty Γ) (B : Ty (Γ , A)) → Ty Γ++    mutual+      f : Cxt → Cxt+      f ε        =  ε+      f (Γ , T)  =  (f Γ , g Γ T)++      g : ∀ Γ → Ty Γ → Ty (f Γ)+      g Γ (u .Γ)      =  u (f Γ)+      g Γ (Π .Γ A B)  =  Π (f Γ) (g Γ A) (g (Γ , A) B)++  ```+  The type of `g` contains a call `g Γ _ --> f Γ` which is now taken+  into account during termination checking.++Instance search+---------------++* Instance argument resolution now also applies when there are+  unconstrained metavariables in the type of the argument. For+  example, if there is a single instance `eqBool : Eq Bool` in scope,+  then an instance argument `{{eq : Eq _}}` will be solved to+  `eqBool`, setting the value of the metavariable `_` to `Bool` in the+  process.++* By default, Agda no longer allows overlapping instances. Two+  instances are defined to overlap if they could both solve the+  instance goal when given appropriate solutions for their recursive+  (instance) arguments. Agda used to choose between undecidable+  instances based on the result of recursive instance search, but this+  lead to an exponential slowdown in instance resolution. Overlapping+  instances can be enabled with the flag `--overlapping-instances`.++* Explicit arguments are no longer automatically turned into instance+  arguments for the purpose of recursive instance search. Instead,+  explicit arguments are left unresolved and will thus never be used.++  If an instance is declared which has explicit arguments, Agda will+  raise a warning that this instance will never be considered by+  instance search.++* Instance arguments that are already solved by conversion checking+  are no longer ignored by instance search. Thus the constructor of+  the unit type must now be explicitly be declared as an instance in+  order to be considered by instance search:+  ```agda+    record ⊤ : Set where+      instance constructor tt+  ```++* Instances are now (correctly) required to be in scope to be eligible+  (see Issue [#1913](https://github.com/agda/agda/issues/1913)+   and Issue [#2489](https://github.com/agda/agda/issues/2489)+  ).+  This means that you can no longer import instances from parameterised modules by+  ```agda+    import Some.Module Arg₁ Arg2+  ```+  without opening or naming the module.++Reflection+----------+++* New TC primitive `noConstraints` [Issue+  [#2351](https://github.com/agda/agda/issues/2351)]:++  ```agda+    noConstraints : ∀ {a} {A : Set a} → TC A → TC A+  ```++  The computation `noConstraints m` fails if `m` gives rise to new,+  unsolved+  ["blocking"](https://github.com/agda/agda/blob/4900ef5fc61776381f3a5e9c94ef776375e9e1f1/src/full/Agda/TypeChecking/Monad/Constraints.hs#L160-L174)+  constraints.++* New TC primitive `runSpeculative` [Issue+  [#3346](https://github.com/agda/agda/issues/3346)]:++  ```+    runSpeculative : ∀ {a} {A : Set a} → TC (Σ A λ _ → Bool) → TC A+  ```++  The computation `runSpeculative m` runs `m` and either keeps the new+  TC state (if the second component is `true`) or resets to the old TC+  state (if it is `false`).+++Interaction and error reporting+-------------------------------++* A new command `agda2-elaborate-give` (C-c C-m) normalizes a goal input+  (it repects the C-u prefixes), type checks, and inserts the normalized+  term into the goal.++* 'Solve constraints' (C-c C-s) now turns unsolved metavariables into new+  interaction holes (see Issue [#2273](https://github.com/agda/agda/issues/2273)).++* Out-of-scope identifiers are no longer prefixed by a '.' dot [Issue+  [#3127](https://github.com/agda/agda/issues/3127)].  This notation+  could be confused with dot patterns, postfix projections, and+  irrelevance. Now Agda will do its best to make up fresh names for+  out-of-scope identifiers that do not conflict with any existing+  names. In addition, these names are marked as "(out of scope)" when+  printing the context.++  The change affects the printing of terms, e.g. in error messages and+  interaction, and the parsing of out-of-scope variables for+  case splitting (`C-c C-c` in emacs).++* Shadowed local variables are now assigned fresh names in error+  messages and interactive goals [Issue+  [#572](https://github.com/agda/agda/issues/572)]. For example,+  consider the following piece of code:+  ```agda+    postulate P : Set -> Set++    test : (B : Set) -> P B -> P B+    test = λ p p -> {!!}+  ```+  When asking for the goal type, Agda will now print the following:+  ```+    Goal: P p₁+    ————————————————————————————————————————————————————————————+    p      : P p₁+    p = p₁ : Set  (not in scope)+  ```+  Shadowed top-level identifiers are printed using the qualified name,+  for example in+  ```agda+    module M where++      postulate A : Set++      test : Set → A+      test A = {!!}+  ```+  Agda will now show the goal type as+  ```+    Goal: M.A+    ————————————————————————————————————————————————————————————+    A : Set+  ```++* When case splitting (`C-c C-c` in emacs), Agda will now filter out+  impossible cases (i.e. ones where at least one of the variables+  could be replaced by an absurd pattern `()`). If all the clauses+  produced by a case split are impossible, Agda will not filter out+  any of them.++Pragmas and options+-------------------++* Consistency checking of options used.++  Agda now checks that options used in imported modules are consistent+  with each other, e.g. a module using `--safe`, `--without-K`,+  `--no-universe-polymorphism` or `--no-sized-types` may only import+  modules with the same option, and modules using `--cubical` or+  `--prop` must in turn use the same option. If an interface file has+  been generated using different options compared to the current ones,+  Agda will now re-typecheck the file.+  [Issue [#2487](https://github.com/agda/agda/issues/2487)].++* New option `--cubical` to enable Cubical Agda.++* New option `--prop` to enable the ``Prop`` sort, and `--no-prop` to+  disable it (default).++* New options `--guardedness` and `--no-guardedness` [Issue+  [#1209](https://github.com/agda/agda/issues/1209)].++  Constructor-based guarded corecursion is now only (meant to be)+  allowed if the `--guardedness` option is active. This option is+  active by default. The combination of constructor-based guarded+  corecursion and sized types is not allowed if `--safe` is used,+  and activating `--safe` turns off both `--guardedness` and+  `--sized-types` (because this combination is known to be+  inconsistent in the current implementation). If you want to use+  either constructor-based guarded corecursion or sized types in+  safe mode, then you can use `--safe --guardedness` or `--safe+  --sized-types` respectively (in this order).++  The option `--no-guardedness` turns off constructor-based guarded+  corecursion.++* Option `--irrelevant-projections` is now off by default and+  not considered `--safe` any longer.+  Reason: There are consistency issues that may be systemic+  [Issue [#2170](https://github.com/agda/agda/issues/2170)].++* New option `--no-syntactic-equality` disables the syntactic equality+  shortcut used by the conversion checker. This will slow down+  typechecking in most cases, but makes the performance more+  predictable and stable under minor changes.++* New option `--overlapping-instances` enables overlapping instances+  by performing recursive instance search during pruning of instance+  candidates (this used to be the default behaviour). Overlapping+  instances can be disabled with `--no-overlapping-instances`+  (default).++* Option (and experimental feature)+  `--guardedness-preserving-type-constructors`+  has been removed.+  [Issue [#3180](https://github.com/agda/agda/issues/3180)].++* Deprecated options `--sharing` and `--no-sharing` now raise an error.++* New primitive `primErase`. It takes a proof of equality and returns a proof of+  the same equality. `primErase eq` reduces to `refl` on the diagonal. `trustMe`+  is not a primitive anymore, it is implemented using `primErase`.++  The primitive is declared in `Agda.Builtin.Equality.Erase`.++* The `REWRITE` builtin is now bound to the builtin equality type from+  `Agda.Builtin.Equality` in `Agda.Builtin.Equality.Rewrite` [Issue+  [#3318](https://github.com/agda/agda/issues/3318)].++* New primitives `primCharToNatInjective` and `primStringToListInjective`+  internalising the fact that `primCharToNat` and `primStringtoList` are+  injective functions. They are respectively bound in `Agda.Builtin.Char.Properties`+  and `Agda.Builtin.String.Properties`.++* The option `--only-scope-checking` is now allowed together with `--safe`.++* The option `--ignore-interfaces` no longer ignores the interfaces of+  builtin and primitive modules. For experts, there is the option+  `--ignore-all-interfaces` which also rechecks builtin and primitive+  files.++* The following deprecated compiler pragmas have been removed:++  ```+    {-# COMPILED f e #-}+    {-# COMPILED_TYPE A T #-}+    {-# COMPILED_DATA A D C1 .. CN #-}+    {-# COMPILED_DECLARE_DATA #-}+    {-# COMPILED_EXPORT f g #-}+    {-# IMPORT M #-}+    {-# HASKELL code #-}+    {-# COMPILED_UHC f e #-}+    {-# COMPILED_DATA_UHC A D C1 .. CN #-}+    {-# IMPORT_UHC M #-}+    {-# COMPILED_JS f e #-}+  ```++  See the [user manual](https://agda.readthedocs.io/en/latest/language/foreign-function-interface.html)+  for how to use the `COMPILE` and `FOREIGN` pragmas that replaced these in Agda 2.5.++### New warnings++* A declaration of the form `f : A` without an accompanying definition+  is no longer an error, but instead raises a warning.++* A clause that has both an absurd pattern and a right-hand side is no+  longer an error, but instead raises a warning.++* An import statement for `M` that mentions names not exported by `M`+  (in either `using`, `hiding`, or `renaming`) is no longer an+  error. Instead, Agda will raise a warning and ignore the names.++* Pragma, primitive, module or import statements in a mutual block+  are no longer errors. Instead, Agda will raise a warning and ignore+  these statements.++### Pragmas and options concerning universes++* New pragma `{-# NO_UNIVERSE_CHECK #-}`.++  The pragma `{-# NO_UNIVERSE_CHECK #-}` can be put in front of a data+  or record type to disable universe consistency checking locally.+  Example:+  ```agda+    {-# NO_UNIVERSE_CHECK #-}+    data U : Set where+      el : Set → U+  ```+  Like the similar pragmas for disabling termination and positivity+  checking, `{-# NO_UNIVERSE_CHECK #-}` cannot be used with `--safe`.++* New builtin `SETOMEGA`.++  Agda's top sort `Setω` is now defined as a builtin in `Agda.Primitive`+  and can be renamed when importing that module.++* New option `--omega-in-omega`.++  The option `--omega-in-omega` enables the typing rule `Setω : Setω`.+  Example:+  ```agda+  {-# OPTIONS --omega-in-omega #-}+  open import Agda.Primitive++  data Type : Setω where+    el : ∀ {ℓ} → Set ℓ → Type+  ```+  Like `--type-in-type`, this makes Agda inconsistent. However, code+  written using `--omega-in-omega` is still compatible with normal+  universe-polymorphic code and can be used in such files.++Emacs mode+----------++* Jump-to-definition now works for record field names in record expressions+  and patterns. [Issue [#3120](https://github.com/agda/agda/issues/3120)]+  ```agda+    record R : Set₂ where+      field f : Set₁++    exp : R+    exp = record { f = Set }++    pat : R → R+    pat r@record { f = X } = record r { f = X }+  ```+  Jump-to-definition (`M-.` or middle-click) on any of these `f`s+  now jumps to the field declaration.++* Commas "ʻ،⸲⸴⹁⹉、︐︑﹐﹑,、" and semi-colons "؛⁏፤꛶;︔﹔⍮⸵;" added+  to the input mode.++* It is now possible to customise the highlighting of more text in+  pragmas [Issue [#2452](https://github.com/agda/agda/issues/2452)].++  Some text was already highlighted. Now there is a specific face for+  the remaining text (`agda2-highlight-pragma-face`).++LaTeX backend+-------------++* The code environment has two new options, `inline` and `inline*`.++  These options are for typesetting inline code. The implementation of+  these options is a bit of a hack. Only use these options for+  typesetting a single line of code without multiple consecutive+  whitespace characters (except at the beginning of the line).++  When the option `inline*` is used space (`\AgdaSpace{}`) is added at+  the end of the code, and when `inline` is used space is not added.++* Now highlighting commands for things like "this is an unsolved+  meta-variable" are applied on the outside of highlighting commands+  for things like "this is a postulate" [Issue+  [#2474](https://github.com/agda/agda/issues/2474)].++  Example: Instead of generating+  `\AgdaPostulate{\AgdaUnsolvedMeta{F}}` Agda now generates+  `\AgdaUnsolvedMeta{\AgdaPostulate{F}}`.++* The package `agda.sty` no longer selects any fonts, and no longer+  changes the input or font encodings [Issue+  [#3224](https://github.com/agda/agda/issues/3224)].++  The new behaviour is the same as the old behaviour with the options+  `nofontsetup` and `noinputencodingsetup`. These options have been+  removed.++  One reason for this change is that several persons have received+  complaints from reviewers because they have unwittingly used+  non-standard fonts in submitted papers. Another is that the `utf8x`+  option to `inputenc` is now deprecated.++  Note that Agda code is now less likely to typeset properly out of+  the box. See the documentation for some hints about what to do if+  this affects you.++* Some text was by default typeset in math mode when LuaLaTeX or+  XeLaTeX were used, and in text mode when pdfLaTeX was used. Now text+  mode is the default for all of these engines.++* Typesetting of pragmas should now work better [Issue+  [#2452](https://github.com/agda/agda/issues/2452)].++  The `\AgdaOption` command and `AgdaOption` colour have been replaced+  by `\AgdaPragma` and `AgdaPragma`. The `\AgdaPragma` command is used+  where `\AgdaOption` used to be used (for certain options), but also+  in other cases (for other options and certain other text in+  pragmas).++* There is no longer any special treatment of the character `-` [Issue+  [#2452](https://github.com/agda/agda/issues/2452)].++  This might, depending on things like what font your are using, mean+  that the token `--` is typeset like an en dash (–). However, this is+  not the case for at least one common monospace font (in at least one+  setting).++* The default value of `\AgdaEmptySkip` has been changed from+  `\baselineskip` to `\abovedisplayskip`. This could mean that less+  vertical space is used to render empty lines in code blocks.++HTML backend+------------++* New option `--html-highlight=[code,all,auto]`.++  The option `--html-highlight=code` makes the HTML-backend generate+  files with:++  0. No HTML footer/header+  1. Agda codes highlighted+  2. Non-Agda code parts as-is+  3. Output file extension as-is (i.e. `.lagda.md` becomes `.md`)+  4. For ReStructuredText, a `.. raw:: html\n` will be inserted+     before every code blocks++  This makes it possible to use an ordinary Markdown/ReStructuredText+  processor to render the generated HTML.++  This will affect all the files involved in one compilation, making+  pure Agda code files rendered without HTML footer/header as well.+  To use `code` with literate Agda files and `all` with pure Agda+  files, use `--html-highlight=auto`, which means auto-detection.++  The old and default behaviour is still `--html-highlight=all`.++List of all closed issues+-------------------------++For 2.6.0, the following issues have been closed+(see [bug tracker](https://github.com/agda/agda/issues)):++  -  [#572](https://github.com/agda/agda/issues/572): Shadowed identifiers should be preceded by a dot when printed+  -  [#723](https://github.com/agda/agda/issues/723): Instance search needs to know whether a meta must be a function type+  -  [#758](https://github.com/agda/agda/issues/758): No highlighting for syntax declarations+  -  [#887](https://github.com/agda/agda/issues/887): Case-split causes problems for coverage checker+  -  [#952](https://github.com/agda/agda/issues/952): Parse named implicit pi {x = y : A} -> B+  -  [#1003](https://github.com/agda/agda/issues/1003): No highlighting for ambiguous instance argument+  -  [#1063](https://github.com/agda/agda/issues/1063): Freeze metas in module telescope after checking the module?+  -  [#1086](https://github.com/agda/agda/issues/1086): Make absurd patterns not needed at toplevel+  -  [#1209](https://github.com/agda/agda/issues/1209): Guardedness checker inconsistency with copatterns+  -  [#1581](https://github.com/agda/agda/issues/1581): Fields of opened records sometimes highlighted, sometimes not+  -  [#1602](https://github.com/agda/agda/issues/1602): NonStrict arguments should be allowed to occur relevantly in the type+  -  [#1706](https://github.com/agda/agda/issues/1706): Feature request: ML-style forall-generalization+  -  [#1764](https://github.com/agda/agda/issues/1764): Type in type and universe polymorphism+  -  [#1886](https://github.com/agda/agda/issues/1886): Second copies of telescopes not checked?+  -  [#1909](https://github.com/agda/agda/issues/1909): parameters are not dropped from reflected pattern lambda+  -  [#1913](https://github.com/agda/agda/issues/1913): Names that are not in scope can sometimes be candidates for instance resolution+  -  [#1995](https://github.com/agda/agda/issues/1995): Correct names in goal types after multiple renaming imports.+  -  [#2044](https://github.com/agda/agda/issues/2044): Better diagnosis for failed instance search+  -  [#2089](https://github.com/agda/agda/issues/2089): ''No such module'' is a rude error message for private modules+  -  [#2153](https://github.com/agda/agda/issues/2153): PDF version of Language Documentation on readthedocs lacks most Unicode characters+  -  [#2273](https://github.com/agda/agda/issues/2273): C-c C-s should put new goals instead of underscores for unknown subterms+  -  [#2351](https://github.com/agda/agda/issues/2351): expose noConstraints to reflection framework+  -  [#2452](https://github.com/agda/agda/issues/2452): The LaTeX backend does not handle options very well+  -  [#2473](https://github.com/agda/agda/issues/2473): Don't reread the source code without checking that it is unchanged+  -  [#2487](https://github.com/agda/agda/issues/2487): Options used for different modules must be consistent with each other, and options used when loading an interface must be consistent with those used when the interface was created+  -  [#2489](https://github.com/agda/agda/issues/2489): Where clauses in functions leak instances to global instance search+  -  [#2490](https://github.com/agda/agda/issues/2490): possible non-terminating inference of instance arguments?+  -  [#2513](https://github.com/agda/agda/issues/2513): Extensible syntax for function space annotations+  -  [#2548](https://github.com/agda/agda/issues/2548): Move the "Old Reference Manual" to the current documentation+  -  [#2563](https://github.com/agda/agda/issues/2563): Improve documentation and error reporting related to instance resolution (especially unconstrained metavariables)+  -  [#2579](https://github.com/agda/agda/issues/2579): Import statements with module instantiation should not trigger an error message+  -  [#2618](https://github.com/agda/agda/issues/2618): Reflection and pattern-matching lambdas+  -  [#2670](https://github.com/agda/agda/issues/2670): Instance arguments and multi-sorted algebras+  -  [#2757](https://github.com/agda/agda/issues/2757): Proposal: split non-strict relevance into shape-irrelevance, parametricity, and runtime-irrelevance+  -  [#2760](https://github.com/agda/agda/issues/2760): Relax instance search restriction on unconstrained metas+  -  [#2774](https://github.com/agda/agda/issues/2774): Internal error with sized types+  -  [#2783](https://github.com/agda/agda/issues/2783): Make more primitive/builtin modules safe?+  -  [#2789](https://github.com/agda/agda/issues/2789): Narrow and broad options+  -  [#2791](https://github.com/agda/agda/issues/2791): More illtyped meta solutions+  -  [#2797](https://github.com/agda/agda/issues/2797): Relevance check missed for overloaded projection+  -  [#2833](https://github.com/agda/agda/issues/2833): Coverage checker splits on result too eagerly+  -  [#2837](https://github.com/agda/agda/issues/2837): The Emacs mode only handles LaTeX-based literate Agda+  -  [#2872](https://github.com/agda/agda/issues/2872): Case splitting adds a dot in front of pattern matches on Chars+  -  [#2880](https://github.com/agda/agda/issues/2880): Disallow FFI binding for defined functions when --safe is used+  -  [#2892](https://github.com/agda/agda/issues/2892): 'With' should also abstract over the type of stripped dot patterns+  -  [#2893](https://github.com/agda/agda/issues/2893): Display warnings also when an error is encountered+  -  [#2899](https://github.com/agda/agda/issues/2899): Add a warning for infix notations without corresponding fixity declaration+  -  [#2929](https://github.com/agda/agda/issues/2929): Turn "missing definition" into a warning+  -  [#2936](https://github.com/agda/agda/issues/2936): Sort warning flags alphabetically in user manual+  -  [#2939](https://github.com/agda/agda/issues/2939): make install-bin on a Mac can fail to install text-icu+  -  [#2964](https://github.com/agda/agda/issues/2964): Mismatch between order of matching in clauses and case tree; subject reduction broken+  -  [#2969](https://github.com/agda/agda/issues/2969): Module parameter is erased from dot pattern+  -  [#2979](https://github.com/agda/agda/issues/2979): Rewriting matching does not respect eta rules+  -  [#2993](https://github.com/agda/agda/issues/2993): Quadratic (failing) instance search+  -  [#3010](https://github.com/agda/agda/issues/3010): Field of opened record does not get highlighted+  -  [#3032](https://github.com/agda/agda/issues/3032): spurious meta in dot pattern+  -  [#3056](https://github.com/agda/agda/issues/3056): Matching on irrelevant variable of dependent record type should not be allowed+  -  [#3057](https://github.com/agda/agda/issues/3057): A module can export two definitions with the same name+  -  [#3068](https://github.com/agda/agda/issues/3068): Add option to turn off syntactic equality check+  -  [#3095](https://github.com/agda/agda/issues/3095): Would like to make hidden variable visible but it is created ambiguous+  -  [#3102](https://github.com/agda/agda/issues/3102): Performance regression: very slow reduction in the presence of many module parameters+  -  [#3114](https://github.com/agda/agda/issues/3114): Missing alpha-renaming when printing constraints+  -  [#3120](https://github.com/agda/agda/issues/3120): No tooltips for record field names in record expressions+  -  [#3122](https://github.com/agda/agda/issues/3122): Hidden record fields are not picked up from module in record expression+  -  [#3124](https://github.com/agda/agda/issues/3124): De Bruijn index in lhs checking error message+  -  [#3125](https://github.com/agda/agda/issues/3125): Internal error in InstanceArguments.hs:292+  -  [#3127](https://github.com/agda/agda/issues/3127): Notation for out-of-scope variables conflicts with notation for irrelevance+  -  [#3128](https://github.com/agda/agda/issues/3128): Sigma builtin not added to setup, agdai file missing.+  -  [#3130](https://github.com/agda/agda/issues/3130): Conflict between dot pattern and postfix projection+  -  [#3137](https://github.com/agda/agda/issues/3137): Preserve Markdown as-is when outputting HTML+  -  [#3138](https://github.com/agda/agda/issues/3138): Result splitter introduces pattern variable that conflicts with constructor+  -  [#3139](https://github.com/agda/agda/issues/3139): Internal error in parser+  -  [#3147](https://github.com/agda/agda/issues/3147): Non-linear as-patterns+  -  [#3152](https://github.com/agda/agda/issues/3152): `give` in a do-block inserts spurious parentheses+  -  [#3153](https://github.com/agda/agda/issues/3153): Type checker fails to infer missing signature of module parameter.+  -  [#3161](https://github.com/agda/agda/issues/3161): Case splitter produces end-of-comment+  -  [#3169](https://github.com/agda/agda/issues/3169): Doc for rewriting+  -  [#3170](https://github.com/agda/agda/issues/3170): UnicodeDeclare fails with pdflatex from TeX Live 2018+  -  [#3175](https://github.com/agda/agda/issues/3175): Instance resolution fails with defined method+  -  [#3176](https://github.com/agda/agda/issues/3176): Empty lambdas are sometimes considered definitionally equal, other times not+  -  [#3180](https://github.com/agda/agda/issues/3180): Remove feature `--guardedness-preserving-type-constructors`+  -  [#3188](https://github.com/agda/agda/issues/3188): Warnings disappear when fatal error is encountered+  -  [#3195](https://github.com/agda/agda/issues/3195): Internal error at Auto/Typecheck.hs:373+  -  [#3196](https://github.com/agda/agda/issues/3196): Turning MissingDefinition into a warning+  -  [#3200](https://github.com/agda/agda/issues/3200): Function marked as irrelevant when it isn't+  -  [#3201](https://github.com/agda/agda/issues/3201): [ warning ] AbsurdPatternRequiresNoRHS+  -  [#3205](https://github.com/agda/agda/issues/3205): [ cleanup + warning ] ModuleDoesntExport can be recovered from+  -  [#3224](https://github.com/agda/agda/issues/3224): Switch from utf8x to utf8? Make agda.sty easier to maintain?+  -  [#3235](https://github.com/agda/agda/issues/3235): Cannot pass backend flags via emacs variable `agda2-program-args`+  -  [#3247](https://github.com/agda/agda/issues/3247): Support cabal-install >= 2.4.1.0 in the Makefile+  -  [#3248](https://github.com/agda/agda/issues/3248): Max of two sizes less than i+  -  [#3253](https://github.com/agda/agda/issues/3253): [ fix ] ignore duplicate declarations of libraries+  -  [#3254](https://github.com/agda/agda/issues/3254): `cpphs` doesn't build with GHC 8.6.*+  -  [#3256](https://github.com/agda/agda/issues/3256): Internal error at src/full/Agda/TypeChecking/Reduce.hs:148+  -  [#3257](https://github.com/agda/agda/issues/3257): Anonymous top-level modules can have names with multiple components+  -  [#3258](https://github.com/agda/agda/issues/3258): Ordering the constructor names at Definition.+  -  [#3262](https://github.com/agda/agda/issues/3262): Suboptimal placement of "missing with-clauses" error+  -  [#3264](https://github.com/agda/agda/issues/3264): When refine leads to a termination error it should say so rather than "cannot refine"+  -  [#3268](https://github.com/agda/agda/issues/3268): [ haddock ] Fix haddock formatting+  -  [#3285](https://github.com/agda/agda/issues/3285): Internal error for syntax declaration+  -  [#3302](https://github.com/agda/agda/issues/3302): Multiple definitions called _ are sometimes allowed, sometimes not+  -  [#3307](https://github.com/agda/agda/issues/3307): `--no-unicode` bug: case splitting inside a pattern matching lambda still produces unicode arrows+  -  [#3309](https://github.com/agda/agda/issues/3309): Use of irrelevant arguments with copatterns and irrelevant fields+  -  [#3313](https://github.com/agda/agda/issues/3313): Add --html-highlight support for the HTML backend+  -  [#3315](https://github.com/agda/agda/issues/3315): The primErase primitive is not safe+  -  [#3318](https://github.com/agda/agda/issues/3318): Lots of primitives and builtins are not declared in the primitive/builtin modules+  -  [#3320](https://github.com/agda/agda/issues/3320): Extra indentation when code is hidden+  -  [#3323](https://github.com/agda/agda/issues/3323): Internal error with inconsistent irrelevance info between declaration and definition of data type+  -  [#3338](https://github.com/agda/agda/issues/3338): Missing Definitions not recognised in instance search+  -  [#3342](https://github.com/agda/agda/issues/3342): GHC panic on stack and GHC 7.10.3+  -  [#3344](https://github.com/agda/agda/issues/3344): Disable compilation with GHC 8.6.1+  -  [#3356](https://github.com/agda/agda/issues/3356): C-c C-s prints postfix projections by default+  -  [#3363](https://github.com/agda/agda/issues/3363): The wiki should support HTTPS+  -  [#3364](https://github.com/agda/agda/issues/3364): Funny scope error when trying to import as qualified+  -  [#3366](https://github.com/agda/agda/issues/3366): Add a command line flag to change the extension of the files generated by the HTML backend+  -  [#3368](https://github.com/agda/agda/issues/3368): Support GHC 8.6.2+  -  [#3370](https://github.com/agda/agda/issues/3370): [ fix ] < and > need to be in math mode in latex+  -  [#3371](https://github.com/agda/agda/issues/3371): Document common LaTeX backend pitfalls+  -  [#3372](https://github.com/agda/agda/issues/3372): Provide some simple LaTeX backend templates+  -  [#3373](https://github.com/agda/agda/issues/3373): Wrap HTML in `raw` directive when working with ReStructuredText+  -  [#3379](https://github.com/agda/agda/issues/3379): Adding a tutorial set in the readthedocs frontpage+  -  [#3380](https://github.com/agda/agda/issues/3380): Too much erasure in strict backends+  -  [#3394](https://github.com/agda/agda/issues/3394): Internal error in mutual block with unsolved implicit argument in termination checker+  -  [#3400](https://github.com/agda/agda/issues/3400): Obscure parse error with copattern and infix field+  -  [#3403](https://github.com/agda/agda/issues/3403): Internal error in Agda.TypeChecking.Rules.Term+  -  [#3404](https://github.com/agda/agda/issues/3404): Positivity checker marks postulates as constant in mutual block+  -  [#3407](https://github.com/agda/agda/issues/3407): Internal error at "src/full/Agda/TypeChecking/Reduce/Fast.hs:1338"+  -  [#3409](https://github.com/agda/agda/issues/3409): No error if mapping the empty type to non-empty Haskell type+  -  [#3410](https://github.com/agda/agda/issues/3410): ghc backend generates program that segfaults+  -  [#3419](https://github.com/agda/agda/issues/3419): Allow unconstrained instances & disallow overlapping instances+  -  [#3420](https://github.com/agda/agda/issues/3420): Inductive definitions live in a larger set --without-K+  -  [#3425](https://github.com/agda/agda/issues/3425): Internal error at src/full/Agda/Termination/Monad.hs:177+  -  [#3426](https://github.com/agda/agda/issues/3426): Termination checking false positive when using "where"+  -  [#3428](https://github.com/agda/agda/issues/3428): Another interal error in Substitute:72 when filling a hole+  -  [#3431](https://github.com/agda/agda/issues/3431): Rewrite rule doesn't fire during conversion checking+  -  [#3434](https://github.com/agda/agda/issues/3434): Regression related to instance resolution+  -  [#3435](https://github.com/agda/agda/issues/3435): Performance regression+  -  [#3439](https://github.com/agda/agda/issues/3439): Setω doesn’t respect --type-in-type+  -  [#3441](https://github.com/agda/agda/issues/3441): Generate Level expressions with fewer parentheses+  -  [#3442](https://github.com/agda/agda/issues/3442): Support GHC 8.6.3+  -  [#3443](https://github.com/agda/agda/issues/3443): "internal error" in Agda of December 7, 2018+  -  [#3444](https://github.com/agda/agda/issues/3444): `Setup.hs` is not generating the interface files+  -  [#3445](https://github.com/agda/agda/issues/3445): case splitting attempts to shadow constructor+  -  [#3451](https://github.com/agda/agda/issues/3451): The --no-sized-types option is broken+  -  [#3452](https://github.com/agda/agda/issues/3452): Case split on irrelevant argument goes through but is later rejected+  -  [#3454](https://github.com/agda/agda/issues/3454): Highlighting for incomplete pattern matching should be above highliting for non-exact split+  -  [#3456](https://github.com/agda/agda/issues/3456): [ new ] Injectivity of prim(NatToChar/StringToList)+  -  [#3461](https://github.com/agda/agda/issues/3461): Macro loop+  -  [#3463](https://github.com/agda/agda/issues/3463): Impossible to give certain instance arguments by name?+  -  [#3466](https://github.com/agda/agda/issues/3466): two definitionally equal terms are not equal+  -  [#3471](https://github.com/agda/agda/issues/3471): Can't install via cabal-install on current Haskell Platform+  -  [#3480](https://github.com/agda/agda/issues/3480): Parse error at EOF should be reported before EOF (especially if there is a long comment before EOF)+  -  [#3483](https://github.com/agda/agda/issues/3483): Internal error at TypeChecking/Monad/Signature.hs:732+  -  [#3485](https://github.com/agda/agda/issues/3485): [ warnings ] for empty primitive blocks+  -  [#3491](https://github.com/agda/agda/issues/3491): Internal error src/full/Agda/TypeChecking/Rules/LHS.hs:294 after pattern matching+  -  [#3498](https://github.com/agda/agda/issues/3498): Internal error in activateLoadedFileCache+  -  [#3501](https://github.com/agda/agda/issues/3501): Case split in let clause causes internal error+  -  [#3503](https://github.com/agda/agda/issues/3503): Internal error in BasicOps+  -  [#3514](https://github.com/agda/agda/issues/3514): Accidential language change in 2.5.3: hiding is now part of name when resolving hidden argument insertion+  -  [#3517](https://github.com/agda/agda/issues/3517): Option consistency checking bug+  -  [#3518](https://github.com/agda/agda/issues/3518): Performance regression+  -  [#3521](https://github.com/agda/agda/issues/3521): Documentation: fixes a plural issue in copatterns+  -  [#3526](https://github.com/agda/agda/issues/3526): Do not generate trivially impossible clause when case-splitting+  -  [#3533](https://github.com/agda/agda/issues/3533): [ fix #3526 ] Remove trivially impossible clauses from case-split+  -  [#3534](https://github.com/agda/agda/issues/3534): Problem finding higher-order instances+  -  [#3536](https://github.com/agda/agda/issues/3536): Patternmatching on coinductive record fields breaks+  -  [#3544](https://github.com/agda/agda/issues/3544): internal error @ TypeChecking/Forcing.hs:227+  -  [#3548](https://github.com/agda/agda/issues/3548): [ new ] Add support for compiling literate Org documents+  -  [#3554](https://github.com/agda/agda/issues/3554): Type checker explosion+  -  [#3561](https://github.com/agda/agda/issues/3561): fix typo: "FreBSD" => "FreeBSD"+  -  [#3566](https://github.com/agda/agda/issues/3566): Missing name when printing type of definition of a record+  -  [#3578](https://github.com/agda/agda/issues/3578): Pattern matching unifier normalizes too much+  -  [#3586](https://github.com/agda/agda/issues/3586): Internal error in ConcreteToAbstract.hs:2217+  -  [#3590](https://github.com/agda/agda/issues/3590): Superlinear time required for simple code+  -  [#3597](https://github.com/agda/agda/issues/3597): Agda loops on simple code with a record and a hole+  -  [#3600](https://github.com/agda/agda/issues/3600): Size solver complains, explicit sizes work+  -  [#3610](https://github.com/agda/agda/issues/3610): Support GHC 8.6.4+  -  [#3621](https://github.com/agda/agda/issues/3621): performance problem+  -  [#3631](https://github.com/agda/agda/issues/3631): Performance with --no-universe-polymorphism+  -  [#3638](https://github.com/agda/agda/issues/3638): Rewrite rules do not fire in goal normalization in parametrized module+  -  [#3639](https://github.com/agda/agda/issues/3639): Argument to function created by tactic is lost+  -  [#3640](https://github.com/agda/agda/issues/3640): Polarity: Size index check crashes due to wrong parameter number calculation+  -  [#3641](https://github.com/agda/agda/issues/3641): Remove old compiler pragmas+  -  [#3648](https://github.com/agda/agda/issues/3648): Agda could fail to build if a .agda-lib file exists in a parent directory+  -  [#3651](https://github.com/agda/agda/issues/3651): internal error ghc backend+  -  [#3657](https://github.com/agda/agda/issues/3657): Disable compilation with Windows and GHC 8.6.3+  -  [#3678](https://github.com/agda/agda/issues/3678): Two out-of-scope variables are given the same name+  -  [#3687](https://github.com/agda/agda/issues/3687): Show module contents (C-c C-o) prints garbled names in clause+ Release notes for Agda version 2.5.4.2 ====================================== @@ -18,6 +868,7 @@ For 2.5.4.2 the following issues have also been closed (see [bug tracker](https://github.com/agda/agda/issues)): +  - [#3177](https://github.com/agda/agda/issues/3177): Slow typechecking with unsolved instance constraint   - [#3199](https://github.com/agda/agda/issues/3199): Panics when serialising absolute paths   - [#3312](https://github.com/agda/agda/issues/3312): Crash in Substitute.hs @@ -645,6 +1496,9 @@ * OtherAspects (unsolved meta variables, catchall clauses, etc.) are   now correctly highlighted in the LaTeX backend (and the HTML one).   [Issue [#2474](https://github.com/agda/agda/issues/2474)]++* `postprocess-latex.pl` does not add extra spaces around tagged `\Agda*{}`+  commands anymore.  HTML backend ------------
LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2005-2018 remains with the authors.+Copyright (c) 2005-2019 remains with the authors. Agda 2 was originally written by Ulf Norell, partially based on code from Agda 1 by Catarina Coquand and Makoto Takeyama, and from Agdalight by Ulf Norell and Andreas Abel.@@ -10,13 +10,13 @@  Further, Agda 2 has received contributions by, amongst others, Stevan Andjelkovic, Marcin Benke, Jean-Philippe Bernardy, Guillaume Brunerie,-James Chapman, Dominique Devriese, Péter Diviánszki, Olle Fredriksson,+James Chapman, Dominique Devriese, Péter Diviánszky, Olle Fredriksson, Adam Gundry, Daniel Gustafsson, Kuen-Bang Hou (favonia), Patrik Jansson, Alan Jeffrey, Wolfram Kahl, Wen Kokke, Fredrik Lindblad, Francesco Mazzoli, Stefan Monnier, Darin Morrison, Guilhem Moulin,-Nicolas Pouillard, Nobuo Yamashita, Christian Sattler, and Makoto-Takeyama.  The full list of contributors is available at-https://github.com/agda/agda/graphs/contributors+Nicolas Pouillard, Nobuo Yamashita, Christian Sattler, Makoto+Takeyama and Tesla Ice Zhang.  The full list of contributors is+available at https://github.com/agda/agda/graphs/contributors  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the
README.md view
@@ -3,9 +3,9 @@  [![Hackage version](https://img.shields.io/hackage/v/Agda.svg?label=Hackage)](http://hackage.haskell.org/package/Agda) [![Stackage version](https://www.stackage.org/package/Agda/badge/lts?label=Stackage)](https://www.stackage.org/package/Agda)-[![Travis Status](https://travis-ci.org/agda/agda.svg?branch=stable-2.5)](https://travis-ci.org/agda/agda)-[![Appveyor Status](https://ci.appveyor.com/api/projects/status/x6liln2dol0bg4qw/branch/stable-2.5?svg=true)](https://ci.appveyor.com/project/gallais/agda)-[![Documentation Status](https://readthedocs.org/projects/agda/badge/?version=stable-2.5)](http://agda.readthedocs.io/en/stable-2.5/?badge=stable-2.5)+[![Travis Status](https://travis-ci.org/agda/agda.svg?branch=master)](https://travis-ci.org/agda/agda)+[![Appveyor Status](https://ci.appveyor.com/api/projects/status/x6liln2dol0bg4qw/branch/master?svg=true)](https://ci.appveyor.com/project/gallais/agda)+[![Documentation Status](https://readthedocs.org/projects/agda/badge/?version=latest)](http://agda.readthedocs.io/en/latest/?badge=latest)  Note that this README is only about Agda, not its standard library. See the [Agda Wiki][agdawiki] for information about the@@ -28,6 +28,6 @@ Hacking on Agda --------------- -Head to [`HACKING`](https://github.com/agda/agda/blob/master/HACKING)+Head to [`HACKING`](https://github.com/agda/agda/blob/master/HACKING.md)  [agdawiki]: http://wiki.portal.chalmers.se/agda/pmwiki.php
Setup.hs view
@@ -1,41 +1,104 @@+{-# LANGUAGE CPP #-}  import Distribution.Simple import Distribution.Simple.LocalBuildInfo import Distribution.Simple.Setup import Distribution.Simple.BuildPaths (exeExtension) import Distribution.PackageDescription+-- ASR (2019-01-10): The Cabal macro @MIN_VERSION_Cabal@ is avaliable+-- from Cabal_>_1.24 so this macro is not supported with the+-- "standard" GHC 7.10.3 which is shipped with Cabal 1.22.5.0.+#if __GLASGOW_HASKELL__ > 710+#if MIN_VERSION_Cabal(2,3,0)+import Distribution.System ( buildPlatform )+#endif+#endif import System.FilePath-import System.FilePath.Find+import System.Directory (makeAbsolute, removeFile)+import System.Environment (getEnvironment) import System.Process import System.Exit+import System.IO.Error (isDoesNotExistError) -main = defaultMainWithHooks hooks+import Control.Monad (when, forM_)+import Control.Exception (catch, throwIO) -hooks = simpleUserHooks { regHook = checkAgdaPrimitiveAndRegister }+main :: IO ()+main = defaultMainWithHooks userhooks -builtins :: FilePath -> IO [FilePath]-builtins = find always (extension ==? ".agda")+userhooks :: UserHooks+userhooks = simpleUserHooks { buildHook = buildHook'+                            , copyHook  = copyHook'+                            , instHook  = instHook'+                            } -checkAgdaPrimitive :: PackageDescription -> LocalBuildInfo -> RegisterFlags -> IO ()-checkAgdaPrimitive pkg info flags | regGenPkgConf flags /= NoFlag = return ()   -- Gets run twice, only do this the second time-checkAgdaPrimitive pkg info flags = do-  let dirs   = absoluteInstallDirs pkg info NoCopyDest-      agda   = buildDir info </> "agda" </> "agda" <.> exeExtension-      auxDir = datadir dirs </> "lib" </> "prim" </> "Agda"-      prim   = auxDir </> "Primitive" <.> "agda"+-- Install and copy hooks are default, but amended with .agdai files in data-files.+instHook' :: PackageDescription -> LocalBuildInfo -> UserHooks -> InstallFlags -> IO ()+instHook' pd lbi hooks flags = instHook simpleUserHooks pd' lbi hooks flags where+  pd' = pd { dataFiles = concatMap expandAgdaExt $ dataFiles pd } -      checkPrim file = do-        ok <- rawSystem agda [file, "-v0"]-        case ok of-          ExitSuccess   -> return ()-          ExitFailure _ -> putStrLn $ "WARNING: Failed to typecheck " ++ file ++ "!"+copyHook' :: PackageDescription -> LocalBuildInfo -> UserHooks -> CopyFlags -> IO ()+copyHook' pd lbi hooks flags = copyHook simpleUserHooks pd' lbi hooks flags where+  pd' = pd { dataFiles = concatMap expandAgdaExt $ dataFiles pd } +-- Used to add .agdai files to data-files+expandAgdaExt :: FilePath -> [FilePath]+expandAgdaExt fp | takeExtension fp == ".agda" = [ fp, toIFile fp ]+                 | otherwise                   = [ fp ]++toIFile :: FilePath -> FilePath+toIFile file = replaceExtension file ".agdai"++buildHook' :: PackageDescription -> LocalBuildInfo -> UserHooks -> BuildFlags -> IO ()+buildHook' pd lbi hooks flags = do+  -- build first+  buildHook simpleUserHooks pd lbi hooks flags++  -- then...+  let bdir = buildDir lbi+      agda = bdir </> "agda" </> "agda" <.> agdaExeExtension++  ddir <- makeAbsolute $ "src" </> "data"++  -- assuming we want to type check all .agda files in data-files+  -- current directory root of the package.+   putStrLn "Generating Agda library interface files..."-  checkPrim prim-  auxBuiltins <- builtins (auxDir </> "Builtins")-  mapM_ checkPrim auxBuiltins+  forM_ (dataFiles pd) $ \fp -> when (takeExtension fp == ".agda") $ do+    let fullpath  = ddir </> fp+    let fullpathi = toIFile fullpath -checkAgdaPrimitiveAndRegister :: PackageDescription -> LocalBuildInfo -> UserHooks -> RegisterFlags -> IO ()-checkAgdaPrimitiveAndRegister pkg info hooks flags = do-  checkAgdaPrimitive pkg info flags-  regHook simpleUserHooks pkg info hooks flags  -- This actually does something useful+    -- remove existing interface file+    let handleExists e | isDoesNotExistError e = return ()+                       | otherwise             = throwIO e++    removeFile fullpathi `catch` handleExists++    putStrLn $ "... " ++ fullpath+    ok <- rawSystem' ddir agda [ "--no-libraries", fullpath, "-v0" ]+    case ok of+      ExitSuccess   -> return ()+      ExitFailure _ -> die $ "Error: Failed to typecheck " ++ fullpath ++ "!"++agdaExeExtension :: String+-- ASR (2019-01-10): The Cabal macro @MIN_VERSION_Cabal@ is avaliable+-- from Cabal_>_1.24 so this macro is not supported with the+-- "standard" GHC 7.10.3 which is shipped with Cabal 1.22.5.0.+#if __GLASGOW_HASKELL__ > 710+#if MIN_VERSION_Cabal(2,3,0)+agdaExeExtension = exeExtension buildPlatform+#else+agdaExeExtension = exeExtension+#endif+#else+agdaExeExtension = exeExtension+#endif++rawSystem' :: FilePath -> String -> [String] -> IO ExitCode+rawSystem' agda_datadir cmd args = do+  -- modify environment with Agda_datadir, so agda-executable will look+  -- for data-files in the right place+  e <- getEnvironment+  let e' = ("Agda_datadir", agda_datadir) : e+  (_,_,_,p) <- createProcess_ "rawSystem" (proc cmd args) { delegate_ctlc = True, env = Just e' }+  waitForProcess p
dist/build/Agda/Syntax/Parser/Lexer.hs view
@@ -55,1398 +55,1376 @@ alex_tab_size = 8 alex_base :: AlexAddr alex_base = AlexA#-  "\xf7\xff\xff\xff\x6c\x00\x00\x00\xe1\x00\x00\x00\x55\x01\x00\x00\xcb\x01\x00\x00\xc1\x02\x00\x00\x36\x03\x00\x00\xac\x03\x00\x00\x73\x00\x00\x00\xd8\xff\xff\xff\x8b\x04\x00\x00\xe9\x04\x00\x00\x47\x05\x00\x00\xcc\x01\x00\x00\xa3\x05\x00\x00\xff\x05\x00\x00\x54\x06\x00\x00\x53\x06\x00\x00\xd3\x06\x00\x00\x53\x07\x00\x00\x32\x08\x00\x00\x31\x08\x00\x00\xb1\x08\x00\x00\x31\x09\x00\x00\xb1\x09\x00\x00\x90\x0a\x00\x00\xec\x0a\x00\x00\xeb\x0a\x00\x00\x00\x00\x00\x00\x5c\x0b\x00\x00\x00\x00\x00\x00\xcd\x0b\x00\x00\x00\x00\x00\x00\x3e\x0c\x00\x00\x00\x00\x00\x00\xaf\x0c\x00\x00\x00\x00\x00\x00\xf0\x0c\x00\x00\x00\x00\x00\x00\x31\x0d\x00\x00\x00\x00\x00\x00\x72\x0d\x00\x00\x00\x00\x00\x00\xb3\x0d\x00\x00\x92\x0e\x00\x00\x11\x0f\x00\x00\xd1\x0e\x00\x00\x00\x00\x00\x00\xd1\x0f\x00\x00\x91\x0f\x00\x00\x00\x00\x00\x00\x91\x10\x00\x00\x51\x10\x00\x00\x00\x00\x00\x00\x51\x11\x00\x00\xc7\x11\x00\x00\x29\x11\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x12\x00\x00\xb5\x13\x00\x00\xac\x14\x00\x00\xa3\x15\x00\x00\x9a\x16\x00\x00\x91\x17\x00\x00\x88\x18\x00\x00\x7f\x19\x00\x00\x76\x1a\x00\x00\x6d\x1b\x00\x00\x64\x1c\x00\x00\x5b\x1d\x00\x00\x52\x1e\x00\x00\x49\x1f\x00\x00\x40\x20\x00\x00\x37\x21\x00\x00\x2e\x22\x00\x00\x25\x23\x00\x00\x1c\x24\x00\x00\x13\x25\x00\x00\x0a\x26\x00\x00\x01\x27\x00\x00\xf8\x27\x00\x00\xef\x28\x00\x00\xe6\x29\x00\x00\xdd\x2a\x00\x00\xd4\x2b\x00\x00\xcb\x2c\x00\x00\xc2\x2d\x00\x00\xb9\x2e\x00\x00\xb0\x2f\x00\x00\xa7\x30\x00\x00\x9e\x31\x00\x00\x95\x32\x00\x00\x8c\x33\x00\x00\x83\x34\x00\x00\x7a\x35\x00\x00\x71\x36\x00\x00\x68\x37\x00\x00\x5f\x38\x00\x00\x56\x39\x00\x00\x4d\x3a\x00\x00\x44\x3b\x00\x00\x3b\x3c\x00\x00\x32\x3d\x00\x00\x29\x3e\x00\x00\x20\x3f\x00\x00\x17\x40\x00\x00\x0e\x41\x00\x00\x05\x42\x00\x00\xfc\x42\x00\x00\xf3\x43\x00\x00\xea\x44\x00\x00\xe1\x45\x00\x00\xd8\x46\x00\x00\xcf\x47\x00\x00\xc6\x48\x00\x00\xbd\x49\x00\x00\xb4\x4a\x00\x00\xab\x4b\x00\x00\xa2\x4c\x00\x00\x99\x4d\x00\x00\x90\x4e\x00\x00\x87\x4f\x00\x00\x7e\x50\x00\x00\x75\x51\x00\x00\x6c\x52\x00\x00\x63\x53\x00\x00\x5a\x54\x00\x00\x51\x55\x00\x00\x48\x56\x00\x00\x3f\x57\x00\x00\x36\x58\x00\x00\x2d\x59\x00\x00\x24\x5a\x00\x00\x1b\x5b\x00\x00\x12\x5c\x00\x00\x09\x5d\x00\x00\x00\x5e\x00\x00\xf7\x5e\x00\x00\xee\x5f\x00\x00\xe5\x60\x00\x00\xdc\x61\x00\x00\xd3\x62\x00\x00\xca\x63\x00\x00\xc1\x64\x00\x00\xb8\x65\x00\x00\xaf\x66\x00\x00\xa6\x67\x00\x00\x9d\x68\x00\x00\x94\x69\x00\x00\x8b\x6a\x00\x00\x82\x6b\x00\x00\x79\x6c\x00\x00\x70\x6d\x00\x00\x67\x6e\x00\x00\x5e\x6f\x00\x00\x55\x70\x00\x00\x4c\x71\x00\x00\x43\x72\x00\x00\x3a\x73\x00\x00\x31\x74\x00\x00\x28\x75\x00\x00\x1f\x76\x00\x00\x16\x77\x00\x00\x0d\x78\x00\x00\x04\x79\x00\x00\xfb\x79\x00\x00\xf2\x7a\x00\x00\xe9\x7b\x00\x00\xe0\x7c\x00\x00\xd7\x7d\x00\x00\xce\x7e\x00\x00\xc5\x7f\x00\x00\xbc\x80\x00\x00\xb3\x81\x00\x00\xaa\x82\x00\x00\xa1\x83\x00\x00\x98\x84\x00\x00\x8f\x85\x00\x00\x86\x86\x00\x00\x7d\x87\x00\x00\x74\x88\x00\x00\x6b\x89\x00\x00\x62\x8a\x00\x00\x59\x8b\x00\x00\x50\x8c\x00\x00\x47\x8d\x00\x00\x3e\x8e\x00\x00\x35\x8f\x00\x00\x2c\x90\x00\x00\x23\x91\x00\x00\x1a\x92\x00\x00\x11\x93\x00\x00\x08\x94\x00\x00\xff\x94\x00\x00\xf6\x95\x00\x00\xed\x96\x00\x00\xe4\x97\x00\x00\xdb\x98\x00\x00\xd2\x99\x00\x00\xc9\x9a\x00\x00\xc0\x9b\x00\x00\xb7\x9c\x00\x00\xae\x9d\x00\x00\xa5\x9e\x00\x00\x9c\x9f\x00\x00\x93\xa0\x00\x00\x8a\xa1\x00\x00\x81\xa2\x00\x00\x78\xa3\x00\x00\x6f\xa4\x00\x00\x66\xa5\x00\x00\x5d\xa6\x00\x00\x54\xa7\x00\x00\x4b\xa8\x00\x00\x42\xa9\x00\x00\x39\xaa\x00\x00\x30\xab\x00\x00\x27\xac\x00\x00\x1e\xad\x00\x00\x15\xae\x00\x00\x0c\xaf\x00\x00\x03\xb0\x00\x00\xfa\xb0\x00\x00\xf1\xb1\x00\x00\xe8\xb2\x00\x00\xdf\xb3\x00\x00\xd6\xb4\x00\x00\xcd\xb5\x00\x00\xc4\xb6\x00\x00\xbb\xb7\x00\x00\xb2\xb8\x00\x00\xa9\xb9\x00\x00\xa0\xba\x00\x00\x97\xbb\x00\x00\x8e\xbc\x00\x00\x85\xbd\x00\x00\x7c\xbe\x00\x00\x73\xbf\x00\x00\x6a\xc0\x00\x00\x61\xc1\x00\x00\x58\xc2\x00\x00\x4f\xc3\x00\x00\x46\xc4\x00\x00\x3d\xc5\x00\x00\x34\xc6\x00\x00\x2b\xc7\x00\x00\x22\xc8\x00\x00\x19\xc9\x00\x00\x10\xca\x00\x00\x07\xcb\x00\x00\xfe\xcb\x00\x00\xf5\xcc\x00\x00\xec\xcd\x00\x00\xe3\xce\x00\x00\xda\xcf\x00\x00\xd1\xd0\x00\x00\xc8\xd1\x00\x00\xbf\xd2\x00\x00\xb6\xd3\x00\x00\xad\xd4\x00\x00\xa4\xd5\x00\x00\x9b\xd6\x00\x00\x92\xd7\x00\x00\x89\xd8\x00\x00\x80\xd9\x00\x00\x77\xda\x00\x00\x6e\xdb\x00\x00\x65\xdc\x00\x00\x5c\xdd\x00\x00\x53\xde\x00\x00\x4a\xdf\x00\x00\x41\xe0\x00\x00\x38\xe1\x00\x00\x2f\xe2\x00\x00\x26\xe3\x00\x00\x1d\xe4\x00\x00\x14\xe5\x00\x00\x0b\xe6\x00\x00\x02\xe7\x00\x00\xf9\xe7\x00\x00\xf0\xe8\x00\x00\xe7\xe9\x00\x00\xde\xea\x00\x00\xd5\xeb\x00\x00\xcc\xec\x00\x00\xc3\xed\x00\x00\xba\xee\x00\x00\xb1\xef\x00\x00\xa8\xf0\x00\x00\x9f\xf1\x00\x00\x96\xf2\x00\x00\xe3\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\xf3\x00\x00\x8c\xf4\x00\x00\x8c\xf5\x00\x00\x82\xf6\x00\x00\x82\xf7\x00\x00\x78\xf8\x00\x00\x78\xf9\x00\x00\x78\xfa\x00\x00\x78\xfb\x00\x00\x78\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x13\x00\x00\xa3\x14\x00\x00\xbb\xee\x00\x00\xa8\xef\x00\x00\x8d\xf2\x00\x00\x76\xf3\x00\x00\x6c\xf6\x00\x00\x57\xfd\x00\x00\xb3\xfd\x00\x00\x0f\xfe\x00\x00\x6b\xfe\x00\x00\xc7\xfe\x00\x00\x23\xff\x00\x00\x7f\xff\x00\x00\xdb\xff\x00\x00\x37\x00\x01\x00\x93\x00\x01\x00\xef\x00\x01\x00\x4b\x01\x01\x00\xa7\x01\x01\x00\x03\x02\x01\x00\x5f\x02\x01\x00\xbb\x02\x01\x00\x17\x03\x01\x00\x73\x03\x01\x00\xcf\x03\x01\x00\x2b\x04\x01\x00\x87\x04\x01\x00\xe3\x04\x01\x00\x3f\x05\x01\x00\x9b\x05\x01\x00\xf7\x05\x01\x00\x53\x06\x01\x00\xaf\x06\x01\x00\x0b\x07\x01\x00\x67\x07\x01\x00\xc3\x07\x01\x00\x1f\x08\x01\x00\x7b\x08\x01\x00\xd7\x08\x01\x00\x33\x09\x01\x00\x8f\x09\x01\x00\xeb\x09\x01\x00\x47\x0a\x01\x00\xa3\x0a\x01\x00\xff\x0a\x01\x00\x5b\x0b\x01\x00\xb7\x0b\x01\x00\x13\x0c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\xff\xff\xda\xff\xff\xff\x00\x00\x00\x00\x6f\x0c\x01\x00\xcb\x0c\x01\x00\x9a\xf0\x00\x00\x27\x0d\x01\x00\x83\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\xff\xff\xff\x00\x00\x00\x00\xdf\x0d\x01\x00\x91\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x0e\x01\x00\x97\x0e\x01\x00\xf3\x0e\x01\x00\x4f\x0f\x01\x00\xab\x0f\x01\x00\x07\x10\x01\x00\x63\x10\x01\x00\xbf\x10\x01\x00\x1b\x11\x01\x00\x77\x11\x01\x00\xd3\x11\x01\x00\x2f\x12\x01\x00\x8b\x12\x01\x00\xe7\x12\x01\x00\x43\x13\x01\x00\x9f\x13\x01\x00\xfb\x13\x01\x00\x57\x14\x01\x00\xb3\x14\x01\x00\x0f\x15\x01\x00\x6d\x15\x01\x00\xcb\x15\x01\x00\x29\x16\x01\x00\x87\x16\x01\x00\xe5\x16\x01\x00\x43\x17\x01\x00\xa1\x17\x01\x00\xfd\x17\x01\x00\x59\x18\x01\x00\xb5\x18\x01\x00\x11\x19\x01\x00\x6d\x19\x01\x00\xc9\x19\x01\x00\x25\x1a\x01\x00\x81\x1a\x01\x00\xdd\x1a\x01\x00\x39\x1b\x01\x00\x95\x1b\x01\x00\xf1\x1b\x01\x00\x4d\x1c\x01\x00\xa9\x1c\x01\x00\x05\x1d\x01\x00\x61\x1d\x01\x00\xbd\x1d\x01\x00\x19\x1e\x01\x00\x75\x1e\x01\x00\xd1\x1e\x01\x00\x2d\x1f\x01\x00\x89\x1f\x01\x00\xe5\x1f\x01\x00\x41\x20\x01\x00\x9d\x20\x01\x00\xf9\x20\x01\x00\x55\x21\x01\x00\xb1\x21\x01\x00\x0d\x22\x01\x00\x69\x22\x01\x00\xc5\x22\x01\x00\x21\x23\x01\x00\x7d\x23\x01\x00\xd9\x23\x01\x00\x35\x24\x01\x00\x91\x24\x01\x00\xed\x24\x01\x00\x49\x25\x01\x00\xa5\x25\x01\x00\x01\x26\x01\x00\x5d\x26\x01\x00\xb9\x26\x01\x00\x15\x27\x01\x00\x71\x27\x01\x00\xcd\x27\x01\x00\x29\x28\x01\x00\x85\x28\x01\x00\xe1\x28\x01\x00\x3d\x29\x01\x00\x99\x29\x01\x00\xf5\x29\x01\x00\x51\x2a\x01\x00\xad\x2a\x01\x00\x09\x2b\x01\x00\x65\x2b\x01\x00\xc1\x2b\x01\x00\x1d\x2c\x01\x00\x79\x2c\x01\x00\xd5\x2c\x01\x00\x31\x2d\x01\x00\x8d\x2d\x01\x00\xe9\x2d\x01\x00\x45\x2e\x01\x00\xa1\x2e\x01\x00\xfd\x2e\x01\x00\x59\x2f\x01\x00\xb5\x2f\x01\x00\x11\x30\x01\x00\x6d\x30\x01\x00\xc9\x30\x01\x00\x25\x31\x01\x00\x81\x31\x01\x00\xdd\x31\x01\x00\x39\x32\x01\x00\x95\x32\x01\x00\xf1\x32\x01\x00\x4d\x33\x01\x00\xa9\x33\x01\x00\x05\x34\x01\x00\x61\x34\x01\x00\xbd\x34\x01\x00\x19\x35\x01\x00\x75\x35\x01\x00\xd1\x35\x01\x00\x2d\x36\x01\x00\x89\x36\x01\x00\xe5\x36\x01\x00\x41\x37\x01\x00\x9d\x37\x01\x00\xf9\x37\x01\x00\x55\x38\x01\x00\xb1\x38\x01\x00\x0d\x39\x01\x00\x69\x39\x01\x00\xc5\x39\x01\x00\x21\x3a\x01\x00\x7d\x3a\x01\x00\xd9\x3a\x01\x00\x35\x3b\x01\x00\x91\x3b\x01\x00\xed\x3b\x01\x00\x49\x3c\x01\x00\xa5\x3c\x01\x00\x01\x3d\x01\x00\x5d\x3d\x01\x00\xb9\x3d\x01\x00\x15\x3e\x01\x00\x71\x3e\x01\x00\xcd\x3e\x01\x00\x29\x3f\x01\x00\x85\x3f\x01\x00\xe1\x3f\x01\x00\x3d\x40\x01\x00\x99\x40\x01\x00\xf5\x40\x01\x00\x51\x41\x01\x00\xad\x41\x01\x00\x09\x42\x01\x00\x65\x42\x01\x00\xc1\x42\x01\x00\x1d\x43\x01\x00\x79\x43\x01\x00\xd5\x43\x01\x00\x31\x44\x01\x00\x8d\x44\x01\x00\xe9\x44\x01\x00\x45\x45\x01\x00\xa1\x45\x01\x00\xfd\x45\x01\x00\x59\x46\x01\x00\xb5\x46\x01\x00\x11\x47\x01\x00\x6d\x47\x01\x00\xc9\x47\x01\x00\x25\x48\x01\x00\x81\x48\x01\x00\xdd\x48\x01\x00\x39\x49\x01\x00\x95\x49\x01\x00\xf1\x49\x01\x00\x4d\x4a\x01\x00\xa9\x4a\x01\x00\x05\x4b\x01\x00\x61\x4b\x01\x00\xbd\x4b\x01\x00\x19\x4c\x01\x00\x75\x4c\x01\x00\xd1\x4c\x01\x00\x2d\x4d\x01\x00\x89\x4d\x01\x00\xe5\x4d\x01\x00\x41\x4e\x01\x00\x9d\x4e\x01\x00\xf9\x4e\x01\x00\x55\x4f\x01\x00\xb1\x4f\x01\x00\x0d\x50\x01\x00\x69\x50\x01\x00\xc5\x50\x01\x00\x21\x51\x01\x00\x7d\x51\x01\x00\xd9\x51\x01\x00\x35\x52\x01\x00\x91\x52\x01\x00\xed\x52\x01\x00\x49\x53\x01\x00\xa5\x53\x01\x00\x01\x54\x01\x00\x5d\x54\x01\x00\xb9\x54\x01\x00\x15\x55\x01\x00\x71\x55\x01\x00\xcd\x55\x01\x00\x29\x56\x01\x00\x85\x56\x01\x00\xe1\x56\x01\x00\x3d\x57\x01\x00\x99\x57\x01\x00\xf5\x57\x01\x00\x51\x58\x01\x00\xad\x58\x01\x00\x09\x59\x01\x00\x65\x59\x01\x00\xc1\x59\x01\x00\x1d\x5a\x01\x00\x79\x5a\x01\x00\xd5\x5a\x01\x00\x31\x5b\x01\x00\x8d\x5b\x01\x00\xe9\x5b\x01\x00\x45\x5c\x01\x00\xa1\x5c\x01\x00\xfd\x5c\x01\x00\x59\x5d\x01\x00\xb5\x5d\x01\x00\x11\x5e\x01\x00\x6d\x5e\x01\x00\xc9\x5e\x01\x00\x25\x5f\x01\x00\x81\x5f\x01\x00\xdd\x5f\x01\x00\x39\x60\x01\x00\x95\x60\x01\x00\xf1\x60\x01\x00\x4d\x61\x01\x00"#--alex_table :: AlexAddr-alex_table = AlexA#-  "\x00\x00\x35\x01\x3a\x00\x3a\x00\x3a\x00\x28\x01\x3d\x00\x6a\x01\x6b\x01\x73\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\x3a\x00\x06\x02\x7e\x01\x06\x02\x06\x02\x06\x02\x06\x02\x7d\x01\x75\x01\x76\x01\x06\x02\x06\x02\x06\x02\x93\x01\x6c\x01\x06\x02\x85\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x6e\x01\x6d\x01\x06\x02\x6f\x01\x06\x02\x71\x01\x79\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xb9\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x78\x01\x06\x02\x06\x02\x70\x01\x06\x02\x0a\x02\x06\x02\xe7\x01\x9a\x01\x08\x02\xdb\x01\x06\x02\xf3\x01\x65\x02\x06\x02\x06\x02\xb1\x01\xdf\x01\x05\x02\x2d\x02\xf5\x01\xe0\x01\xe8\x01\xf2\x01\xf1\x01\xe3\x01\x06\x02\xc1\x01\x06\x02\x06\x02\x06\x02\x7b\x01\x72\x01\x7c\x01\x06\x02\x36\x01\x3a\x00\x3a\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x3a\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x3b\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x0a\x00\x3a\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x1a\x00\x14\x00\x14\x00\x19\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x09\x00\x14\x00\x00\x00\x14\x00\x35\x01\x3a\x00\x3a\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x06\x02\x7e\x01\x06\x02\x06\x02\x06\x02\x06\x02\x7d\x01\x75\x01\x76\x01\x06\x02\x06\x02\x06\x02\x93\x01\x6c\x01\x06\x02\x85\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x6e\x01\x6d\x01\x06\x02\x6f\x01\x06\x02\x71\x01\x79\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xb9\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x78\x01\x06\x02\x06\x02\x70\x01\x06\x02\x0a\x02\x06\x02\xe7\x01\x9a\x01\x08\x02\xdb\x01\x06\x02\xf3\x01\x65\x02\x06\x02\x06\x02\xb1\x01\xdf\x01\x05\x02\x2d\x02\xf5\x01\xe0\x01\xe8\x01\xf2\x01\xf1\x01\xe3\x01\x06\x02\xc1\x01\x06\x02\x06\x02\x06\x02\x7b\x01\x72\x01\x7c\x01\x06\x02\x3a\x00\x3a\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x0a\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x1a\x00\x14\x00\x14\x00\x19\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x09\x00\x14\x00\x00\x00\x14\x00\xff\xff\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x69\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x06\x02\x25\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\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\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\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\x24\x01\x00\x00\x06\x02\x00\x00\x06\x02\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\x35\x01\x3a\x00\x3a\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x92\x01\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x0d\x00\x06\x02\x06\x02\x0c\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xaf\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x09\x00\x06\x02\x00\x00\x06\x02\x37\x01\x3a\x00\x3a\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x0a\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x1a\x00\x14\x00\x14\x00\x19\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x09\x00\x14\x00\x00\x00\x14\x00\xff\xff\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x7e\x01\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x00\xb3\x00\xb5\x00\x13\x01\xb4\x00\x00\x00\xb6\x00\xa7\x00\x00\x00\x00\x00\x91\x00\xb9\x00\xbe\x00\xea\x00\xc1\x00\x00\x00\xbc\x00\xed\x00\xcb\x00\x00\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x2c\x01\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x29\x01\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x0b\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x2a\x01\x14\x00\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x48\x02\x06\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\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\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\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\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x0f\x00\x48\x02\x48\x02\x0e\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x00\x00\x48\x02\x36\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x33\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\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x0b\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x00\x00\x14\x00\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x11\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x14\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x90\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x0f\x00\x48\x02\x48\x02\x0e\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x00\x00\x48\x02\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x38\x00\x11\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2b\x00\x16\x00\x22\x00\x22\x00\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\xff\xff\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\xff\xff\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xf6\x01\x06\x02\xb4\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x11\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\x00\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x00\x00\x00\x00\x00\x00\x00\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x01\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\xf1\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\x88\x00\x15\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x06\x02\x3f\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x00\x00\x06\x02\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\xff\xff\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\xff\xff\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x22\x01\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\xff\xff\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x23\x01\x06\x02\x06\x02\x06\x02\x06\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\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\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\x06\x02\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\xff\xff\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x00\x00\x06\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\xff\xff\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x00\x00\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x01\x2e\x01\x00\x00\x00\x00\x00\x00\x2c\x01\x2e\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\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2e\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\x2e\x01\x00\x00\x2b\x01\x00\x00\x2e\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\xff\xff\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x00\x00\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x01\x2e\x01\x00\x00\x00\x00\x00\x00\x2c\x01\x2e\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\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2e\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\x2e\x01\x00\x00\x2e\x01\x00\x00\x2e\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x00\x00\x06\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\xff\xff\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x00\x00\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x01\x2e\x01\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2e\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\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2e\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\x30\x01\x00\x00\x00\x00\x31\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\x2e\x01\x00\x00\x2e\x01\x00\x00\x2e\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x01\x00\x00\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x00\x00\x00\x00\x34\x01\x34\x01\x34\x01\x34\x01\x00\x00\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x00\x00\x34\x01\x34\x01\x34\x01\x34\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\x34\x01\x34\x01\x34\x01\x34\x01\x00\x00\x34\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\x34\x01\x00\x00\x34\x01\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\xff\xff\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x00\x00\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x01\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2e\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\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2e\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\x2e\x01\x00\x00\x2e\x01\x00\x00\x2e\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\xff\xff\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x00\x00\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x01\x2e\x01\x00\x00\x00\x00\x00\x00\x32\x01\x2f\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\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2e\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\x2e\x01\x00\x00\x2b\x01\x00\x00\x2e\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\xff\xff\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x00\x00\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x01\x2e\x01\x00\x00\x00\x00\x00\x00\x32\x01\x2f\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\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2e\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\x2e\x01\x00\x00\x2e\x01\x00\x00\x2e\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\xff\xff\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x2e\x01\x00\x00\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x01\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2f\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\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2e\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\x2e\x01\x00\x00\x2e\x01\x00\x00\x2e\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x4d\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x4e\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x59\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x58\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\xfb\x01\x06\x02\x06\x02\x06\x02\xd2\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xd5\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\xbb\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x74\x01\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x4d\x02\x06\x02\x98\x01\x2c\x00\x06\x02\x82\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x80\x01\x80\x01\x80\x01\x80\x01\x7f\x01\x80\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x80\x01\x80\x01\x80\x01\x80\x01\x7f\x01\x80\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x2c\x00\x06\x02\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x80\x01\x80\x01\x80\x01\x80\x01\x7f\x01\x80\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x80\x01\x80\x01\x80\x01\x80\x01\x7f\x01\x80\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x2c\x00\x06\x02\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x2c\x00\x06\x02\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x80\x01\x80\x01\x80\x01\x80\x01\x7f\x01\x80\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x80\x01\x80\x01\x80\x01\x80\x01\x7f\x01\x80\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x49\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x2c\x00\x06\x02\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x4c\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x4c\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x2c\x00\x06\x02\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x2c\x00\x06\x02\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x4c\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x4c\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x50\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x2c\x00\x06\x02\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x51\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x48\x02\x06\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x48\x02\x4f\x02\x48\x02\x4f\x02\x10\x00\x48\x02\x8b\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x89\x01\x89\x01\x89\x01\x89\x01\x88\x01\x89\x01\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x89\x01\x89\x01\x89\x01\x89\x01\x88\x01\x89\x01\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x10\x00\x48\x02\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x89\x01\x89\x01\x89\x01\x89\x01\x88\x01\x89\x01\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x89\x01\x89\x01\x89\x01\x89\x01\x88\x01\x89\x01\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x10\x00\x48\x02\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x10\x00\x48\x02\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x89\x01\x89\x01\x89\x01\x89\x01\x88\x01\x89\x01\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x89\x01\x89\x01\x89\x01\x89\x01\x88\x01\x89\x01\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x4a\x02\x48\x02\x48\x02\x00\x00\x48\x02\x06\x02\x48\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x49\x02\x06\x02\x06\x02\x00\x00\x06\x02\x48\x02\x06\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x10\x00\x48\x02\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x4e\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x4e\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x10\x00\x48\x02\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x10\x00\x48\x02\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x4e\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x4e\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x4b\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x10\x00\x48\x02\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x4a\x02\x48\x02\x48\x02\x00\x00\x48\x02\x06\x02\x48\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x32\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x29\x01\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x32\x01\x10\x00\x06\x02\x86\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x06\x02\x00\x00\x06\x02\x06\x02\x77\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x29\x01\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xfd\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x2a\x01\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xfe\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x2a\x01\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x07\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x2a\x01\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x2a\x01\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x8d\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x2a\x01\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x3a\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x3f\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x3b\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x3e\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x3f\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x40\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x43\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x44\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x45\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x48\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x49\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x4a\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x4b\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x51\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x52\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x54\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x5c\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x5d\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x5e\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x61\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x64\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x65\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x66\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x67\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x68\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x66\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x62\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x5f\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x5e\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x5d\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x5c\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xa6\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x5b\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x5a\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x57\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x54\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xab\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x53\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xb0\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x47\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x46\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xbf\x01\x45\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x44\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x43\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x42\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x41\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x40\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x3e\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x3d\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x3c\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x3b\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x3a\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x39\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xb5\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xb6\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x38\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x37\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x36\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xba\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x35\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x34\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x33\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x32\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x31\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x30\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x2f\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x2e\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xc0\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x18\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xc8\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xf4\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x26\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x2c\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x2b\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xd0\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x22\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x1c\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xd4\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xd6\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x29\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xf0\x01\x06\x02\x06\x02\x06\x02\x06\x02\xd8\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xda\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x25\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x24\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x21\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xdc\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xdd\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x20\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x1f\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x1e\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x1d\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x1a\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x19\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xe1\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xe2\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x16\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x14\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xe4\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x0f\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xfc\x01\x06\x02\x06\x02\xee\x01\x06\x02\x06\x02\x13\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xea\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xeb\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xec\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xed\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x12\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x10\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x0e\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xf8\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xf9\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x0c\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x94\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x95\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x01\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x96\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x04\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x03\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x02\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x0b\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xfa\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xf7\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x0d\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xe9\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xe5\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x15\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x17\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xde\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x1b\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x27\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xd9\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xd7\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x28\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xd3\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xd1\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x2a\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xe6\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xcf\x01\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xce\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xcd\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xcc\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xcb\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xca\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xc9\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xc7\x01\x06\x02\x06\x02\x06\x02\x06\x02\x09\x02\x06\x02\x06\x02\x06\x02\x06\x02\xff\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xc6\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xc5\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xc4\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xc3\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xc2\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xbe\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xbd\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xbc\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xb8\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xb7\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xb3\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xb2\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xef\x01\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xae\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xad\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xac\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x52\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xaa\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xa9\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xa8\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x56\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x59\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xa7\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xa5\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xa4\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xa3\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xa2\x01\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xa1\x01\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x60\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\xa0\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x9f\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x9e\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x61\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x9d\x01\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x9c\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x9b\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x63\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x64\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x99\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x48\x02\x06\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x10\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x06\x02\x48\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x48\x02\x06\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x10\x00\x48\x02\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x10\x00\x48\x02\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x89\x01\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x06\x02\x48\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x4d\x02\x06\x02\x98\x01\x10\x00\x06\x02\x8d\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x8d\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x48\x02\x06\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x48\x02\x4f\x02\x48\x02\x4f\x02\x10\x00\x48\x02\x91\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x10\x00\x48\x02\x91\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x48\x02\x00\x00\x48\x02\x06\x02\x48\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x63\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x62\x01\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x55\x02\x06\x02\x06\x02\x60\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x5f\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x5b\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x5a\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x56\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x55\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x53\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x50\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x4f\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x4c\x01\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x47\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x46\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x42\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x41\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x3d\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x3c\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x23\x02\x39\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x00\x00\x06\x02\x06\x02\x06\x02\x97\x01\x10\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x38\x01\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x06\x02\x00\x00\x06\x02\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--alex_check :: AlexAddr-alex_check = AlexA#-  "\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2d\x00\x23\x00\x2e\x00\x2e\x00\x7c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x20\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x20\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\xff\xff\x7e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\xff\xff\x7e\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x21\x00\x23\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\xff\xff\x7e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\xff\xff\x7e\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\xff\xff\x52\x00\x53\x00\x54\x00\xff\xff\xff\xff\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\x7b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x7c\x00\xff\xff\x7e\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x59\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x59\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x59\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4d\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x59\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\xff\xff\xff\xff\xff\xff\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x50\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x50\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x50\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x50\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x50\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x42\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x50\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x21\x00\x23\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x20\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x2d\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x20\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x2d\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#--alex_deflt :: AlexAddr-alex_deflt = AlexA#-  "\xff\xff\xff\xff\xff\xff\xff\xff\x26\x01\xff\xff\xff\xff\xd8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x24\x00\x26\x00\x26\x00\x28\x00\x28\x00\x2a\x00\x2a\x00\x2f\x00\x2f\x00\x32\x00\x32\x00\x35\x00\x35\x00\x39\x00\x39\x00\xff\xff\x2e\x01\x2e\x01\x2e\x01\x26\x01\x26\x01\x26\x01\xd8\x00\xd8\x00\xd8\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xd8\x00\x26\x01\x26\x01\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\x26\x01\x26\x01\x26\x01\x26\x01\x26\x01\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x01\x2d\x01\x2d\x01\x2e\x01\x34\x01\x2e\x01\x34\x01\x33\x01\x33\x01\x34\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#--alex_accept = listArray (0 :: Int, 614)-  [ AlexAccNone-  , AlexAccPred 557 ( not' eof )(AlexAccNone)-  , AlexAccNone-  , AlexAcc 556-  , AlexAccNone-  , AlexAccNone-  , AlexAcc 555-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccNone-  , AlexAccSkip-  , AlexAccSkip-  , AlexAccSkip-  , AlexAcc 554-  , AlexAcc 553-  , AlexAcc 552-  , AlexAcc 551-  , AlexAcc 550-  , AlexAcc 549-  , AlexAcc 548-  , AlexAcc 547-  , AlexAcc 546-  , AlexAcc 545-  , AlexAcc 544-  , AlexAcc 543-  , AlexAcc 542-  , AlexAcc 541-  , AlexAcc 540-  , AlexAcc 539-  , AlexAcc 538-  , AlexAcc 537-  , AlexAcc 536-  , AlexAcc 535-  , AlexAcc 534-  , AlexAcc 533-  , AlexAcc 532-  , AlexAcc 531-  , AlexAcc 530-  , AlexAcc 529-  , AlexAcc 528-  , AlexAcc 527-  , AlexAcc 526-  , AlexAcc 525-  , AlexAcc 524-  , AlexAcc 523-  , AlexAcc 522-  , AlexAcc 521-  , AlexAcc 520-  , AlexAcc 519-  , AlexAcc 518-  , AlexAcc 517-  , AlexAcc 516-  , AlexAcc 515-  , AlexAcc 514-  , AlexAcc 513-  , AlexAcc 512-  , AlexAcc 511-  , AlexAcc 510-  , AlexAcc 509-  , AlexAcc 508-  , AlexAcc 507-  , AlexAcc 506-  , AlexAcc 505-  , AlexAcc 504-  , AlexAcc 503-  , AlexAcc 502-  , AlexAcc 501-  , AlexAcc 500-  , AlexAcc 499-  , AlexAcc 498-  , AlexAcc 497-  , AlexAcc 496-  , AlexAcc 495-  , AlexAcc 494-  , AlexAcc 493-  , AlexAcc 492-  , AlexAcc 491-  , AlexAcc 490-  , AlexAcc 489-  , AlexAcc 488-  , AlexAcc 487-  , AlexAcc 486-  , AlexAcc 485-  , AlexAcc 484-  , AlexAcc 483-  , AlexAcc 482-  , AlexAcc 481-  , AlexAcc 480-  , AlexAcc 479-  , AlexAcc 478-  , AlexAcc 477-  , AlexAcc 476-  , AlexAcc 475-  , AlexAcc 474-  , AlexAcc 473-  , AlexAcc 472-  , AlexAcc 471-  , AlexAcc 470-  , AlexAcc 469-  , AlexAcc 468-  , AlexAcc 467-  , AlexAcc 466-  , AlexAcc 465-  , AlexAcc 464-  , AlexAcc 463-  , AlexAcc 462-  , AlexAcc 461-  , AlexAcc 460-  , AlexAcc 459-  , AlexAcc 458-  , AlexAcc 457-  , AlexAcc 456-  , AlexAcc 455-  , AlexAcc 454-  , AlexAcc 453-  , AlexAcc 452-  , AlexAcc 451-  , AlexAcc 450-  , AlexAcc 449-  , AlexAcc 448-  , AlexAcc 447-  , AlexAcc 446-  , AlexAcc 445-  , AlexAcc 444-  , AlexAcc 443-  , AlexAcc 442-  , AlexAcc 441-  , AlexAcc 440-  , AlexAcc 439-  , AlexAcc 438-  , AlexAcc 437-  , AlexAcc 436-  , AlexAcc 435-  , AlexAcc 434-  , AlexAcc 433-  , AlexAcc 432-  , AlexAcc 431-  , AlexAcc 430-  , AlexAcc 429-  , AlexAcc 428-  , AlexAcc 427-  , AlexAcc 426-  , AlexAcc 425-  , AlexAcc 424-  , AlexAcc 423-  , AlexAcc 422-  , AlexAcc 421-  , AlexAcc 420-  , AlexAcc 419-  , AlexAcc 418-  , AlexAcc 417-  , AlexAcc 416-  , AlexAcc 415-  , AlexAcc 414-  , AlexAcc 413-  , AlexAcc 412-  , AlexAcc 411-  , AlexAcc 410-  , AlexAcc 409-  , AlexAcc 408-  , AlexAcc 407-  , AlexAcc 406-  , AlexAcc 405-  , AlexAcc 404-  , AlexAcc 403-  , AlexAcc 402-  , AlexAcc 401-  , AlexAcc 400-  , AlexAcc 399-  , AlexAcc 398-  , AlexAcc 397-  , AlexAcc 396-  , AlexAcc 395-  , AlexAcc 394-  , AlexAcc 393-  , AlexAcc 392-  , AlexAcc 391-  , AlexAcc 390-  , AlexAcc 389-  , AlexAcc 388-  , AlexAcc 387-  , AlexAcc 386-  , AlexAcc 385-  , AlexAcc 384-  , AlexAcc 383-  , AlexAcc 382-  , AlexAcc 381-  , AlexAcc 380-  , AlexAcc 379-  , AlexAcc 378-  , AlexAcc 377-  , AlexAcc 376-  , AlexAcc 375-  , AlexAcc 374-  , AlexAcc 373-  , AlexAcc 372-  , AlexAcc 371-  , AlexAcc 370-  , AlexAcc 369-  , AlexAcc 368-  , AlexAcc 367-  , AlexAcc 366-  , AlexAcc 365-  , AlexAcc 364-  , AlexAcc 363-  , AlexAcc 362-  , AlexAcc 361-  , AlexAcc 360-  , AlexAcc 359-  , AlexAcc 358-  , AlexAcc 357-  , AlexAcc 356-  , AlexAcc 355-  , AlexAcc 354-  , AlexAcc 353-  , AlexAcc 352-  , AlexAcc 351-  , AlexAcc 350-  , AlexAcc 349-  , AlexAcc 348-  , AlexAcc 347-  , AlexAcc 346-  , AlexAcc 345-  , AlexAcc 344-  , AlexAcc 343-  , AlexAcc 342-  , AlexAcc 341-  , AlexAcc 340-  , AlexAcc 339-  , AlexAcc 338-  , AlexAcc 337-  , AlexAcc 336-  , AlexAcc 335-  , AlexAcc 334-  , AlexAcc 333-  , AlexAcc 332-  , AlexAcc 331-  , AlexAcc 330-  , AlexAcc 329-  , AlexAcc 328-  , AlexAcc 327-  , AlexAcc 326-  , AlexAcc 325-  , AlexAcc 324-  , AlexAcc 323-  , AlexAcc 322-  , AlexAcc 321-  , AlexAccPred 320 ( not' (followedBy '#') )(AlexAccNone)-  , AlexAccPred 319 ( not' (followedBy '#') )(AlexAccNone)-  , AlexAcc 318-  , AlexAcc 317-  , AlexAcc 316-  , AlexAccPred 315 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone))-  , AlexAccPred 314 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone))-  , AlexAccPred 313 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone))-  , AlexAccPred 312 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone))-  , AlexAccPred 311 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone))-  , AlexAccPred 310 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone))-  , AlexAccPred 309 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAcc 308))-  , AlexAccPred 307 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAcc 306))-  , AlexAccPred 305 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAcc 304))-  , AlexAcc 303-  , AlexAccSkip-  , AlexAccSkip-  , AlexAcc 302-  , AlexAcc 301-  , AlexAcc 300-  , AlexAcc 299-  , AlexAcc 298-  , AlexAcc 297-  , AlexAcc 296-  , AlexAcc 295-  , AlexAcc 294-  , AlexAcc 293-  , AlexAcc 292-  , AlexAcc 291-  , AlexAcc 290-  , AlexAcc 289-  , AlexAcc 288-  , AlexAcc 287-  , AlexAcc 286-  , AlexAcc 285-  , AlexAcc 284-  , AlexAcc 283-  , AlexAcc 282-  , AlexAcc 281-  , AlexAcc 280-  , AlexAcc 279-  , AlexAcc 278-  , AlexAcc 277-  , AlexAcc 276-  , AlexAcc 275-  , AlexAcc 274-  , AlexAcc 273-  , AlexAcc 272-  , AlexAcc 271-  , AlexAcc 270-  , AlexAcc 269-  , AlexAcc 268-  , AlexAcc 267-  , AlexAcc 266-  , AlexAcc 265-  , AlexAcc 264-  , AlexAcc 263-  , AlexAcc 262-  , AlexAcc 261-  , AlexAcc 260-  , AlexAcc 259-  , AlexAcc 258-  , AlexAcc 257-  , AlexAcc 256-  , AlexAcc 255-  , AlexAcc 254-  , AlexAcc 253-  , AlexAcc 252-  , AlexAcc 251-  , AlexAcc 250-  , AlexAcc 249-  , AlexAcc 248-  , AlexAcc 247-  , AlexAcc 246-  , AlexAcc 245-  , AlexAcc 244-  , AlexAccPred 243 (alexRightContext 8)(AlexAccNone)-  , AlexAcc 242-  , AlexAcc 241-  , AlexAcc 240-  , AlexAcc 239-  , AlexAcc 238-  , AlexAcc 237-  , AlexAccPred 236 (alexRightContext 55)(AlexAccNone)-  , AlexAcc 235-  , AlexAcc 234-  , AlexAcc 233-  , AlexAcc 232-  , AlexAcc 231-  , AlexAcc 230-  , AlexAcc 229-  , AlexAcc 228-  , AlexAcc 227-  , AlexAcc 226-  , AlexAcc 225-  , AlexAcc 224-  , AlexAcc 223-  , AlexAcc 222-  , AlexAcc 221-  , AlexAcc 220-  , AlexAcc 219-  , AlexAcc 218-  , AlexAcc 217-  , AlexAcc 216-  , AlexAcc 215-  , AlexAcc 214-  , AlexAcc 213-  , AlexAcc 212-  , AlexAcc 211-  , AlexAcc 210-  , AlexAcc 209-  , AlexAcc 208-  , AlexAcc 207-  , AlexAcc 206-  , AlexAcc 205-  , AlexAcc 204-  , AlexAcc 203-  , AlexAcc 202-  , AlexAcc 201-  , AlexAcc 200-  , AlexAcc 199-  , AlexAcc 198-  , AlexAcc 197-  , AlexAcc 196-  , AlexAcc 195-  , AlexAcc 194-  , AlexAcc 193-  , AlexAcc 192-  , AlexAcc 191-  , AlexAcc 190-  , AlexAcc 189-  , AlexAcc 188-  , AlexAcc 187-  , AlexAcc 186-  , AlexAcc 185-  , AlexAcc 184-  , AlexAcc 183-  , AlexAcc 182-  , AlexAcc 181-  , AlexAcc 180-  , AlexAcc 179-  , AlexAcc 178-  , AlexAcc 177-  , AlexAcc 176-  , AlexAcc 175-  , AlexAcc 174-  , AlexAcc 173-  , AlexAcc 172-  , AlexAcc 171-  , AlexAcc 170-  , AlexAcc 169-  , AlexAcc 168-  , AlexAcc 167-  , AlexAcc 166-  , AlexAcc 165-  , AlexAcc 164-  , AlexAcc 163-  , AlexAcc 162-  , AlexAcc 161-  , AlexAcc 160-  , AlexAcc 159-  , AlexAcc 158-  , AlexAcc 157-  , AlexAcc 156-  , AlexAcc 155-  , AlexAcc 154-  , AlexAcc 153-  , AlexAcc 152-  , AlexAcc 151-  , AlexAcc 150-  , AlexAcc 149-  , AlexAcc 148-  , AlexAcc 147-  , AlexAcc 146-  , AlexAcc 145-  , AlexAcc 144-  , AlexAcc 143-  , AlexAcc 142-  , AlexAcc 141-  , AlexAcc 140-  , AlexAcc 139-  , AlexAcc 138-  , AlexAcc 137-  , AlexAcc 136-  , AlexAcc 135-  , AlexAcc 134-  , AlexAcc 133-  , AlexAcc 132-  , AlexAcc 131-  , AlexAcc 130-  , AlexAcc 129-  , AlexAcc 128-  , AlexAcc 127-  , AlexAcc 126-  , AlexAcc 125-  , AlexAcc 124-  , AlexAcc 123-  , AlexAcc 122-  , AlexAcc 121-  , AlexAcc 120-  , AlexAcc 119-  , AlexAcc 118-  , AlexAcc 117-  , AlexAcc 116-  , AlexAcc 115-  , AlexAcc 114-  , AlexAcc 113-  , AlexAcc 112-  , AlexAcc 111-  , AlexAcc 110-  , AlexAcc 109-  , AlexAcc 108-  , AlexAcc 107-  , AlexAcc 106-  , AlexAcc 105-  , AlexAcc 104-  , AlexAcc 103-  , AlexAcc 102-  , AlexAcc 101-  , AlexAcc 100-  , AlexAcc 99-  , AlexAcc 98-  , AlexAcc 97-  , AlexAcc 96-  , AlexAcc 95-  , AlexAcc 94-  , AlexAcc 93-  , AlexAcc 92-  , AlexAcc 91-  , AlexAcc 90-  , AlexAcc 89-  , AlexAcc 88-  , AlexAcc 87-  , AlexAcc 86-  , AlexAcc 85-  , AlexAcc 84-  , AlexAcc 83-  , AlexAcc 82-  , AlexAcc 81-  , AlexAcc 80-  , AlexAcc 79-  , AlexAcc 78-  , AlexAcc 77-  , AlexAcc 76-  , AlexAcc 75-  , AlexAcc 74-  , AlexAcc 73-  , AlexAcc 72-  , AlexAcc 71-  , AlexAcc 70-  , AlexAcc 69-  , AlexAcc 68-  , AlexAcc 67-  , AlexAcc 66-  , AlexAcc 65-  , AlexAcc 64-  , AlexAcc 63-  , AlexAcc 62-  , AlexAcc 61-  , AlexAcc 60-  , AlexAcc 59-  , AlexAcc 58-  , AlexAcc 57-  , AlexAcc 56-  , AlexAcc 55-  , AlexAcc 54-  , AlexAcc 53-  , AlexAcc 52-  , AlexAcc 51-  , AlexAcc 50-  , AlexAcc 49-  , AlexAcc 48-  , AlexAcc 47-  , AlexAcc 46-  , AlexAcc 45-  , AlexAcc 44-  , AlexAcc 43-  , AlexAcc 42-  , AlexAcc 41-  , AlexAcc 40-  , AlexAcc 39-  , AlexAcc 38-  , AlexAcc 37-  , AlexAcc 36-  , AlexAcc 35-  , AlexAcc 34-  , AlexAcc 33-  , AlexAcc 32-  , AlexAcc 31-  , AlexAcc 30-  , AlexAcc 29-  , AlexAcc 28-  , AlexAcc 27-  , AlexAcc 26-  , AlexAcc 25-  , AlexAcc 24-  , AlexAcc 23-  , AlexAcc 22-  , AlexAcc 21-  , AlexAcc 20-  , AlexAcc 19-  , AlexAcc 18-  , AlexAcc 17-  , AlexAcc 16-  , AlexAcc 15-  , AlexAcc 14-  , AlexAcc 13-  , AlexAcc 12-  , AlexAcc 11-  , AlexAcc 10-  , AlexAcc 9-  , AlexAcc 8-  , AlexAcc 7-  , AlexAcc 6-  , AlexAcc 5-  , AlexAcc 4-  , AlexAcc 3-  , AlexAcc 2-  , AlexAcc 1-  , AlexAcc 0-  ]--alex_actions = array (0 :: Int, 558)-  [ (557,alex_action_45)-  , (556,alex_action_48)-  , (555,alex_action_47)-  , (554,alex_action_2)-  , (553,alex_action_2)-  , (552,alex_action_3)-  , (551,alex_action_4)-  , (550,alex_action_4)-  , (549,alex_action_5)-  , (548,alex_action_6)-  , (547,alex_action_7)-  , (546,alex_action_8)-  , (545,alex_action_9)-  , (544,alex_action_10)-  , (543,alex_action_11)-  , (542,alex_action_12)-  , (541,alex_action_13)-  , (540,alex_action_14)-  , (539,alex_action_15)-  , (538,alex_action_16)-  , (537,alex_action_17)-  , (536,alex_action_18)-  , (535,alex_action_19)-  , (534,alex_action_20)-  , (533,alex_action_21)-  , (532,alex_action_22)-  , (531,alex_action_23)-  , (530,alex_action_24)-  , (529,alex_action_25)-  , (528,alex_action_26)-  , (527,alex_action_27)-  , (526,alex_action_28)-  , (525,alex_action_29)-  , (524,alex_action_30)-  , (523,alex_action_31)-  , (522,alex_action_32)-  , (521,alex_action_33)-  , (520,alex_action_34)-  , (519,alex_action_35)-  , (518,alex_action_36)-  , (517,alex_action_36)-  , (516,alex_action_36)-  , (515,alex_action_36)-  , (514,alex_action_36)-  , (513,alex_action_36)-  , (512,alex_action_36)-  , (511,alex_action_36)-  , (510,alex_action_36)-  , (509,alex_action_36)-  , (508,alex_action_36)-  , (507,alex_action_36)-  , (506,alex_action_36)-  , (505,alex_action_36)-  , (504,alex_action_36)-  , (503,alex_action_36)-  , (502,alex_action_36)-  , (501,alex_action_36)-  , (500,alex_action_36)-  , (499,alex_action_36)-  , (498,alex_action_36)-  , (497,alex_action_36)-  , (496,alex_action_36)-  , (495,alex_action_36)-  , (494,alex_action_36)-  , (493,alex_action_36)-  , (492,alex_action_36)-  , (491,alex_action_36)-  , (490,alex_action_36)-  , (489,alex_action_36)-  , (488,alex_action_36)-  , (487,alex_action_36)-  , (486,alex_action_36)-  , (485,alex_action_36)-  , (484,alex_action_36)-  , (483,alex_action_36)-  , (482,alex_action_36)-  , (481,alex_action_36)-  , (480,alex_action_36)-  , (479,alex_action_36)-  , (478,alex_action_36)-  , (477,alex_action_36)-  , (476,alex_action_36)-  , (475,alex_action_36)-  , (474,alex_action_36)-  , (473,alex_action_36)-  , (472,alex_action_36)-  , (471,alex_action_36)-  , (470,alex_action_36)-  , (469,alex_action_36)-  , (468,alex_action_36)-  , (467,alex_action_36)-  , (466,alex_action_36)-  , (465,alex_action_36)-  , (464,alex_action_36)-  , (463,alex_action_36)-  , (462,alex_action_36)-  , (461,alex_action_36)-  , (460,alex_action_36)-  , (459,alex_action_36)-  , (458,alex_action_36)-  , (457,alex_action_36)-  , (456,alex_action_36)-  , (455,alex_action_36)-  , (454,alex_action_36)-  , (453,alex_action_36)-  , (452,alex_action_36)-  , (451,alex_action_36)-  , (450,alex_action_36)-  , (449,alex_action_36)-  , (448,alex_action_36)-  , (447,alex_action_36)-  , (446,alex_action_36)-  , (445,alex_action_36)-  , (444,alex_action_36)-  , (443,alex_action_36)-  , (442,alex_action_36)-  , (441,alex_action_36)-  , (440,alex_action_36)-  , (439,alex_action_36)-  , (438,alex_action_36)-  , (437,alex_action_36)-  , (436,alex_action_36)-  , (435,alex_action_36)-  , (434,alex_action_36)-  , (433,alex_action_36)-  , (432,alex_action_36)-  , (431,alex_action_36)-  , (430,alex_action_36)-  , (429,alex_action_36)-  , (428,alex_action_36)-  , (427,alex_action_36)-  , (426,alex_action_36)-  , (425,alex_action_36)-  , (424,alex_action_36)-  , (423,alex_action_36)-  , (422,alex_action_36)-  , (421,alex_action_36)-  , (420,alex_action_36)-  , (419,alex_action_36)-  , (418,alex_action_36)-  , (417,alex_action_36)-  , (416,alex_action_36)-  , (415,alex_action_36)-  , (414,alex_action_36)-  , (413,alex_action_36)-  , (412,alex_action_36)-  , (411,alex_action_36)-  , (410,alex_action_36)-  , (409,alex_action_36)-  , (408,alex_action_36)-  , (407,alex_action_36)-  , (406,alex_action_36)-  , (405,alex_action_36)-  , (404,alex_action_36)-  , (403,alex_action_36)-  , (402,alex_action_36)-  , (401,alex_action_36)-  , (400,alex_action_36)-  , (399,alex_action_36)-  , (398,alex_action_36)-  , (397,alex_action_36)-  , (396,alex_action_36)-  , (395,alex_action_36)-  , (394,alex_action_36)-  , (393,alex_action_36)-  , (392,alex_action_36)-  , (391,alex_action_36)-  , (390,alex_action_36)-  , (389,alex_action_36)-  , (388,alex_action_36)-  , (387,alex_action_36)-  , (386,alex_action_36)-  , (385,alex_action_36)-  , (384,alex_action_36)-  , (383,alex_action_36)-  , (382,alex_action_36)-  , (381,alex_action_36)-  , (380,alex_action_36)-  , (379,alex_action_36)-  , (378,alex_action_36)-  , (377,alex_action_36)-  , (376,alex_action_36)-  , (375,alex_action_36)-  , (374,alex_action_36)-  , (373,alex_action_36)-  , (372,alex_action_36)-  , (371,alex_action_36)-  , (370,alex_action_36)-  , (369,alex_action_36)-  , (368,alex_action_36)-  , (367,alex_action_36)-  , (366,alex_action_36)-  , (365,alex_action_36)-  , (364,alex_action_36)-  , (363,alex_action_36)-  , (362,alex_action_36)-  , (361,alex_action_36)-  , (360,alex_action_36)-  , (359,alex_action_36)-  , (358,alex_action_36)-  , (357,alex_action_36)-  , (356,alex_action_36)-  , (355,alex_action_36)-  , (354,alex_action_36)-  , (353,alex_action_36)-  , (352,alex_action_36)-  , (351,alex_action_36)-  , (350,alex_action_36)-  , (349,alex_action_36)-  , (348,alex_action_36)-  , (347,alex_action_36)-  , (346,alex_action_36)-  , (345,alex_action_36)-  , (344,alex_action_36)-  , (343,alex_action_36)-  , (342,alex_action_36)-  , (341,alex_action_36)-  , (340,alex_action_36)-  , (339,alex_action_36)-  , (338,alex_action_36)-  , (337,alex_action_36)-  , (336,alex_action_36)-  , (335,alex_action_36)-  , (334,alex_action_36)-  , (333,alex_action_36)-  , (332,alex_action_36)-  , (331,alex_action_36)-  , (330,alex_action_36)-  , (329,alex_action_36)-  , (328,alex_action_36)-  , (327,alex_action_36)-  , (326,alex_action_36)-  , (325,alex_action_37)-  , (324,alex_action_37)-  , (323,alex_action_37)-  , (322,alex_action_37)-  , (321,alex_action_37)-  , (320,alex_action_38)-  , (319,alex_action_38)-  , (318,alex_action_39)-  , (317,alex_action_40)-  , (316,alex_action_40)-  , (315,alex_action_41)-  , (314,alex_action_41)-  , (313,alex_action_41)-  , (312,alex_action_41)-  , (311,alex_action_41)-  , (310,alex_action_41)-  , (309,alex_action_41)-  , (308,alex_action_120)-  , (307,alex_action_41)-  , (306,alex_action_120)-  , (305,alex_action_41)-  , (304,alex_action_120)-  , (303,alex_action_43)-  , (302,alex_action_49)-  , (301,alex_action_50)-  , (300,alex_action_51)-  , (299,alex_action_52)-  , (298,alex_action_53)-  , (297,alex_action_54)-  , (296,alex_action_55)-  , (295,alex_action_56)-  , (294,alex_action_57)-  , (293,alex_action_58)-  , (292,alex_action_59)-  , (291,alex_action_60)-  , (290,alex_action_61)-  , (289,alex_action_62)-  , (288,alex_action_63)-  , (287,alex_action_64)-  , (286,alex_action_65)-  , (285,alex_action_66)-  , (284,alex_action_67)-  , (283,alex_action_68)-  , (282,alex_action_69)-  , (281,alex_action_70)-  , (280,alex_action_71)-  , (279,alex_action_72)-  , (278,alex_action_73)-  , (277,alex_action_74)-  , (276,alex_action_75)-  , (275,alex_action_76)-  , (274,alex_action_77)-  , (273,alex_action_78)-  , (272,alex_action_79)-  , (271,alex_action_80)-  , (270,alex_action_80)-  , (269,alex_action_80)-  , (268,alex_action_81)-  , (267,alex_action_82)-  , (266,alex_action_83)-  , (265,alex_action_84)-  , (264,alex_action_85)-  , (263,alex_action_86)-  , (262,alex_action_87)-  , (261,alex_action_88)-  , (260,alex_action_89)-  , (259,alex_action_90)-  , (258,alex_action_91)-  , (257,alex_action_92)-  , (256,alex_action_93)-  , (255,alex_action_94)-  , (254,alex_action_95)-  , (253,alex_action_96)-  , (252,alex_action_97)-  , (251,alex_action_98)-  , (250,alex_action_99)-  , (249,alex_action_100)-  , (248,alex_action_101)-  , (247,alex_action_102)-  , (246,alex_action_103)-  , (245,alex_action_104)-  , (244,alex_action_105)-  , (243,alex_action_106)-  , (242,alex_action_107)-  , (241,alex_action_108)-  , (240,alex_action_109)-  , (239,alex_action_110)-  , (238,alex_action_111)-  , (237,alex_action_112)-  , (236,alex_action_113)-  , (235,alex_action_114)-  , (234,alex_action_115)-  , (233,alex_action_116)-  , (232,alex_action_117)-  , (231,alex_action_118)-  , (230,alex_action_118)-  , (229,alex_action_118)-  , (228,alex_action_118)-  , (227,alex_action_118)-  , (226,alex_action_118)-  , (225,alex_action_118)-  , (224,alex_action_118)-  , (223,alex_action_119)-  , (222,alex_action_119)-  , (221,alex_action_119)-  , (220,alex_action_119)-  , (219,alex_action_119)-  , (218,alex_action_119)-  , (217,alex_action_119)-  , (216,alex_action_119)-  , (215,alex_action_119)-  , (214,alex_action_119)-  , (213,alex_action_119)-  , (212,alex_action_120)-  , (211,alex_action_120)-  , (210,alex_action_120)-  , (209,alex_action_120)-  , (208,alex_action_120)-  , (207,alex_action_120)-  , (206,alex_action_120)-  , (205,alex_action_120)-  , (204,alex_action_120)-  , (203,alex_action_120)-  , (202,alex_action_120)-  , (201,alex_action_120)-  , (200,alex_action_120)-  , (199,alex_action_120)-  , (198,alex_action_120)-  , (197,alex_action_120)-  , (196,alex_action_120)-  , (195,alex_action_120)-  , (194,alex_action_120)-  , (193,alex_action_120)-  , (192,alex_action_120)-  , (191,alex_action_120)-  , (190,alex_action_120)-  , (189,alex_action_120)-  , (188,alex_action_120)-  , (187,alex_action_120)-  , (186,alex_action_120)-  , (185,alex_action_120)-  , (184,alex_action_120)-  , (183,alex_action_120)-  , (182,alex_action_120)-  , (181,alex_action_120)-  , (180,alex_action_120)-  , (179,alex_action_120)-  , (178,alex_action_120)-  , (177,alex_action_120)-  , (176,alex_action_120)-  , (175,alex_action_120)-  , (174,alex_action_120)-  , (173,alex_action_120)-  , (172,alex_action_120)-  , (171,alex_action_120)-  , (170,alex_action_120)-  , (169,alex_action_120)-  , (168,alex_action_120)-  , (167,alex_action_120)-  , (166,alex_action_120)-  , (165,alex_action_120)-  , (164,alex_action_120)-  , (163,alex_action_120)-  , (162,alex_action_120)-  , (161,alex_action_120)-  , (160,alex_action_120)-  , (159,alex_action_120)-  , (158,alex_action_120)-  , (157,alex_action_120)-  , (156,alex_action_120)-  , (155,alex_action_120)-  , (154,alex_action_120)-  , (153,alex_action_120)-  , (152,alex_action_120)-  , (151,alex_action_120)-  , (150,alex_action_120)-  , (149,alex_action_120)-  , (148,alex_action_120)-  , (147,alex_action_120)-  , (146,alex_action_120)-  , (145,alex_action_120)-  , (144,alex_action_120)-  , (143,alex_action_120)-  , (142,alex_action_120)-  , (141,alex_action_120)-  , (140,alex_action_120)-  , (139,alex_action_120)-  , (138,alex_action_120)-  , (137,alex_action_120)-  , (136,alex_action_120)-  , (135,alex_action_120)-  , (134,alex_action_120)-  , (133,alex_action_120)-  , (132,alex_action_120)-  , (131,alex_action_120)-  , (130,alex_action_120)-  , (129,alex_action_120)-  , (128,alex_action_120)-  , (127,alex_action_120)-  , (126,alex_action_120)-  , (125,alex_action_120)-  , (124,alex_action_120)-  , (123,alex_action_120)-  , (122,alex_action_120)-  , (121,alex_action_120)-  , (120,alex_action_120)-  , (119,alex_action_120)-  , (118,alex_action_120)-  , (117,alex_action_120)-  , (116,alex_action_120)-  , (115,alex_action_120)-  , (114,alex_action_120)-  , (113,alex_action_120)-  , (112,alex_action_120)-  , (111,alex_action_120)-  , (110,alex_action_120)-  , (109,alex_action_120)-  , (108,alex_action_120)-  , (107,alex_action_120)-  , (106,alex_action_120)-  , (105,alex_action_120)-  , (104,alex_action_120)-  , (103,alex_action_120)-  , (102,alex_action_120)-  , (101,alex_action_120)-  , (100,alex_action_120)-  , (99,alex_action_120)-  , (98,alex_action_120)-  , (97,alex_action_120)-  , (96,alex_action_120)-  , (95,alex_action_120)-  , (94,alex_action_120)-  , (93,alex_action_120)-  , (92,alex_action_120)-  , (91,alex_action_120)-  , (90,alex_action_120)-  , (89,alex_action_120)-  , (88,alex_action_120)-  , (87,alex_action_120)-  , (86,alex_action_120)-  , (85,alex_action_120)-  , (84,alex_action_120)-  , (83,alex_action_120)-  , (82,alex_action_120)-  , (81,alex_action_120)-  , (80,alex_action_120)-  , (79,alex_action_120)-  , (78,alex_action_120)-  , (77,alex_action_120)-  , (76,alex_action_120)-  , (75,alex_action_120)-  , (74,alex_action_120)-  , (73,alex_action_120)-  , (72,alex_action_120)-  , (71,alex_action_120)-  , (70,alex_action_120)-  , (69,alex_action_120)-  , (68,alex_action_120)-  , (67,alex_action_120)-  , (66,alex_action_120)-  , (65,alex_action_120)-  , (64,alex_action_120)-  , (63,alex_action_120)-  , (62,alex_action_120)-  , (61,alex_action_120)-  , (60,alex_action_120)-  , (59,alex_action_120)-  , (58,alex_action_120)-  , (57,alex_action_120)-  , (56,alex_action_120)-  , (55,alex_action_120)-  , (54,alex_action_120)-  , (53,alex_action_120)-  , (52,alex_action_120)-  , (51,alex_action_120)-  , (50,alex_action_120)-  , (49,alex_action_120)-  , (48,alex_action_120)-  , (47,alex_action_120)-  , (46,alex_action_120)-  , (45,alex_action_120)-  , (44,alex_action_120)-  , (43,alex_action_120)-  , (42,alex_action_120)-  , (41,alex_action_120)-  , (40,alex_action_120)-  , (39,alex_action_120)-  , (38,alex_action_120)-  , (37,alex_action_120)-  , (36,alex_action_120)-  , (35,alex_action_120)-  , (34,alex_action_120)-  , (33,alex_action_120)-  , (32,alex_action_120)-  , (31,alex_action_120)-  , (30,alex_action_120)-  , (29,alex_action_120)-  , (28,alex_action_120)-  , (27,alex_action_120)-  , (26,alex_action_120)-  , (25,alex_action_120)-  , (24,alex_action_120)-  , (23,alex_action_120)-  , (22,alex_action_120)-  , (21,alex_action_120)-  , (20,alex_action_120)-  , (19,alex_action_120)-  , (18,alex_action_120)-  , (17,alex_action_120)-  , (16,alex_action_120)-  , (15,alex_action_120)-  , (14,alex_action_120)-  , (13,alex_action_120)-  , (12,alex_action_120)-  , (11,alex_action_120)-  , (10,alex_action_120)-  , (9,alex_action_120)-  , (8,alex_action_120)-  , (7,alex_action_120)-  , (6,alex_action_120)-  , (5,alex_action_120)-  , (4,alex_action_120)-  , (3,alex_action_120)-  , (2,alex_action_120)-  , (1,alex_action_120)-  , (0,alex_action_120)-  ]--{-# LINE 246 "src/full/Agda/Syntax/Parser/Lexer.x" #-}----- | This is the initial state for parsing a regular, non-literate file.-normal :: LexState-normal = 0---{-| The layout state. Entered when we see a layout keyword ('withLayout') and-    exited either when seeing an open brace ('openBrace') or at the next token-    ('newLayoutContext').--    Update: we don't use braces for layout anymore.--}-layout :: LexState-layout = layout_---{-| The state inside a pragma.--}-pragma :: LexState-pragma = pragma_---- | The state inside a FOREIGN pragma. This needs to be different so that we don't---   lex further strings as pragma keywords.-fpragma :: LexState-fpragma = fpragma_--{-| We enter this state from 'newLayoutContext' when the token following a-    layout keyword is to the left of (or at the same column as) the current-    layout context. Example:--    > data Empty : Set where-    > foo : Empty -> Nat--    Here the second line is not part of the @where@ clause since it is has the-    same indentation as the @data@ definition. What we have to do is insert an-    empty layout block @{}@ after the @where@. The only thing that can happen-    in this state is that 'emptyLayout' is executed, generating the closing-    brace. The open brace is generated when entering by 'newLayoutContext'.--}-empty_layout :: LexState-empty_layout = empty_layout_----- | This state is entered at the beginning of each line. You can't lex---   anything in this state, and to exit you have to check the layout rule.---   Done with 'offsideRule'.-bol :: LexState-bol = bol_----- | This state can only be entered by the parser. In this state you can only---   lex the keywords @using@, @hiding@, @renaming@ and @to@. Moreover they are---   only keywords in this particular state. The lexer will never enter this---   state by itself, that has to be done in the parser.-imp_dir :: LexState-imp_dir = imp_dir_----- | Return the next token. This is the function used by Happy in the parser.------   @lexer k = 'lexToken' >>= k@-lexer :: (Token -> Parser a) -> Parser a-lexer k = lexToken >>= k---- | Do not use this function; it sets the 'ParseFlags' to--- 'undefined'.-alexScan :: AlexInput -> Int -> AlexReturn (LexAction Token)---- | This is the main lexing function generated by Alex.-alexScanUser :: ([LexState], ParseFlags) -> AlexInput -> Int -> AlexReturn (LexAction Token)----bol_,code,empty_layout_,fpragma_,imp_dir_,layout_,pragma_ :: Int-bol_ = 1-code = 2-empty_layout_ = 3-fpragma_ = 4-imp_dir_ = 5-layout_ = 6-pragma_ = 7-alex_action_2 =  beginWith pragma  $ symbol SymOpenPragma -alex_action_3 =  beginWith fpragma $ symbol SymOpenPragma -alex_action_4 =  endWith $ symbol SymClosePragma -alex_action_5 =  keyword KwBUILTIN -alex_action_6 =  keyword KwCATCHALL -alex_action_7 =  keyword KwCOMPILED -alex_action_8 =  keyword KwCOMPILED_DATA -alex_action_9 =  keyword KwCOMPILED_DATA_UHC -alex_action_10 =  keyword KwCOMPILED_EXPORT -alex_action_11 =  keyword KwCOMPILED_JS -alex_action_12 =  keyword KwCOMPILED_TYPE -alex_action_13 =  keyword KwCOMPILED_UHC -alex_action_14 =  endWith $ beginWith fpragma $ keyword KwCOMPILE -alex_action_15 =  endWith $ beginWith fpragma $ keyword KwFOREIGN -alex_action_16 =  keyword KwDISPLAY -alex_action_17 =  keyword KwETA -alex_action_18 =  endWith $ beginWith fpragma $ keyword KwHASKELL -alex_action_19 =  keyword KwIMPORT -alex_action_20 =  keyword KwIMPORT_UHC -alex_action_21 =  keyword KwIMPOSSIBLE -alex_action_22 =  keyword KwINJECTIVE -alex_action_23 =  keyword KwINLINE -alex_action_24 =  keyword KwNOINLINE -alex_action_25 =  keyword KwLINE -alex_action_26 =  keyword KwMEASURE -alex_action_27 =  keyword KwNO_POSITIVITY_CHECK -alex_action_28 =  keyword KwNO_TERMINATION_CHECK -alex_action_29 =  keyword KwNON_TERMINATING -alex_action_30 =  keyword KwOPTIONS -alex_action_31 =  keyword KwPOLARITY -alex_action_32 =  keyword KwREWRITE -alex_action_33 =  keyword KwSTATIC -alex_action_34 =  keyword KwTERMINATING -alex_action_35 =  keyword KwWARNING_ON_USAGE -alex_action_36 =  withInterval $ TokString -alex_action_37 =  withInterval $ TokString -alex_action_38 =  nestedComment -alex_action_39 =  symbol SymEndComment -alex_action_40 =  symbol SymEndComment -alex_action_41 =  withInterval TokComment -alex_action_43 =  begin bol_ -alex_action_45 =  offsideRule -alex_action_47 =  endWith newLayoutContext -alex_action_48 =  emptyLayout -alex_action_49 =  keyword KwLet -alex_action_50 =  keyword KwIn -alex_action_51 =  keyword KwWhere -alex_action_52 =  keyword KwDo -alex_action_53 =  keyword KwField -alex_action_54 =  keyword KwWith -alex_action_55 =  keyword KwRewrite -alex_action_56 =  keyword KwPostulate -alex_action_57 =  keyword KwPrimitive -alex_action_58 =  keyword KwOpen -alex_action_59 =  keyword KwImport -alex_action_60 =  keyword KwModule -alex_action_61 =  keyword KwData -alex_action_62 =  keyword KwCoData -alex_action_63 =  keyword KwRecord -alex_action_64 =  keyword KwConstructor -alex_action_65 =  keyword KwInductive -alex_action_66 =  keyword KwCoInductive -alex_action_67 =  keyword KwEta -alex_action_68 =  keyword KwNoEta -alex_action_69 =  keyword KwInfix -alex_action_70 =  keyword KwInfixL -alex_action_71 =  keyword KwInfixR -alex_action_72 =  keyword KwMutual -alex_action_73 =  keyword KwAbstract -alex_action_74 =  keyword KwPrivate -alex_action_75 =  keyword KwInstance -alex_action_76 =  keyword KwOverlap -alex_action_77 =  keyword KwMacro -alex_action_78 =  keyword KwSet -alex_action_79 =  keyword KwForall -alex_action_80 =  withInterval' (read . drop 3) TokSetN -alex_action_81 =  keyword KwQuoteGoal -alex_action_82 =  keyword KwQuoteContext -alex_action_83 =  keyword KwQuote -alex_action_84 =  keyword KwQuoteTerm -alex_action_85 =  keyword KwUnquote -alex_action_86 =  keyword KwUnquoteDecl -alex_action_87 =  keyword KwUnquoteDef  -alex_action_88 =  keyword KwTactic -alex_action_89 =  keyword KwSyntax -alex_action_90 =  keyword KwPatternSyn -alex_action_91 =  keyword KwUsing -alex_action_92 =  keyword KwHiding -alex_action_93 =  keyword KwRenaming -alex_action_94 =  endWith $ keyword KwTo -alex_action_95 =  keyword KwPublic -alex_action_96 =  hole -alex_action_97 =  symbol SymEllipsis -alex_action_98 =  symbol SymDotDot -alex_action_99 =  symbol SymDot -alex_action_100 =  symbol SymSemi -alex_action_101 =  symbol SymColon -alex_action_102 =  symbol SymEqual -alex_action_103 =  symbol SymUnderscore -alex_action_104 =  symbol SymQuestionMark -alex_action_105 =  symbol SymBar -alex_action_106 =  symbol SymOpenIdiomBracket -alex_action_107 =  symbol SymCloseIdiomBracket -alex_action_108 =  symbol SymOpenParen -alex_action_109 =  symbol SymCloseParen -alex_action_110 =  symbol SymArrow -alex_action_111 =  symbol SymLambda -alex_action_112 =  symbol SymAs -alex_action_113 =  symbol SymDoubleOpenBrace -alex_action_114 =  symbol SymOpenBrace -alex_action_115 =  symbol SymCloseBrace -alex_action_116 =  litChar -alex_action_117 =  litString -alex_action_118 =  literal LitNat -alex_action_119 =  literal LitFloat -alex_action_120 =  identifier +  "\xf7\xff\xff\xff\x6c\x00\x00\x00\xe1\x00\x00\x00\x55\x01\x00\x00\xcb\x01\x00\x00\xc1\x02\x00\x00\x36\x03\x00\x00\xac\x03\x00\x00\x73\x00\x00\x00\xd8\xff\xff\xff\x8b\x04\x00\x00\xe9\x04\x00\x00\x47\x05\x00\x00\xcc\x01\x00\x00\xa3\x05\x00\x00\xff\x05\x00\x00\x54\x06\x00\x00\x53\x06\x00\x00\xd3\x06\x00\x00\x53\x07\x00\x00\x32\x08\x00\x00\x31\x08\x00\x00\xb1\x08\x00\x00\x31\x09\x00\x00\xb1\x09\x00\x00\x90\x0a\x00\x00\xec\x0a\x00\x00\xeb\x0a\x00\x00\x00\x00\x00\x00\x5c\x0b\x00\x00\x00\x00\x00\x00\xcd\x0b\x00\x00\x00\x00\x00\x00\x3e\x0c\x00\x00\x00\x00\x00\x00\xaf\x0c\x00\x00\x00\x00\x00\x00\xf0\x0c\x00\x00\x00\x00\x00\x00\x31\x0d\x00\x00\x00\x00\x00\x00\x72\x0d\x00\x00\x00\x00\x00\x00\xb3\x0d\x00\x00\x92\x0e\x00\x00\x11\x0f\x00\x00\xd1\x0e\x00\x00\x00\x00\x00\x00\xd1\x0f\x00\x00\x91\x0f\x00\x00\x00\x00\x00\x00\x91\x10\x00\x00\x51\x10\x00\x00\x00\x00\x00\x00\x51\x11\x00\x00\xc7\x11\x00\x00\x29\x11\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x12\x00\x00\xb5\x13\x00\x00\xac\x14\x00\x00\xa3\x15\x00\x00\x9a\x16\x00\x00\x91\x17\x00\x00\x88\x18\x00\x00\x7f\x19\x00\x00\x76\x1a\x00\x00\x6d\x1b\x00\x00\x64\x1c\x00\x00\x5b\x1d\x00\x00\x52\x1e\x00\x00\x49\x1f\x00\x00\x40\x20\x00\x00\x37\x21\x00\x00\x2e\x22\x00\x00\x25\x23\x00\x00\x1c\x24\x00\x00\x13\x25\x00\x00\x0a\x26\x00\x00\x01\x27\x00\x00\xf8\x27\x00\x00\xef\x28\x00\x00\xe6\x29\x00\x00\xdd\x2a\x00\x00\xd4\x2b\x00\x00\xcb\x2c\x00\x00\xc2\x2d\x00\x00\xb9\x2e\x00\x00\xb0\x2f\x00\x00\xa7\x30\x00\x00\x9e\x31\x00\x00\x95\x32\x00\x00\x8c\x33\x00\x00\x83\x34\x00\x00\x7a\x35\x00\x00\x71\x36\x00\x00\x68\x37\x00\x00\x5f\x38\x00\x00\x56\x39\x00\x00\x4d\x3a\x00\x00\x44\x3b\x00\x00\x3b\x3c\x00\x00\x32\x3d\x00\x00\x29\x3e\x00\x00\x20\x3f\x00\x00\x17\x40\x00\x00\x0e\x41\x00\x00\x05\x42\x00\x00\xfc\x42\x00\x00\xf3\x43\x00\x00\xea\x44\x00\x00\xe1\x45\x00\x00\xd8\x46\x00\x00\xcf\x47\x00\x00\xc6\x48\x00\x00\xbd\x49\x00\x00\xb4\x4a\x00\x00\xab\x4b\x00\x00\xa2\x4c\x00\x00\x99\x4d\x00\x00\x90\x4e\x00\x00\x87\x4f\x00\x00\x7e\x50\x00\x00\x75\x51\x00\x00\x6c\x52\x00\x00\x63\x53\x00\x00\x5a\x54\x00\x00\x51\x55\x00\x00\x48\x56\x00\x00\x3f\x57\x00\x00\x36\x58\x00\x00\x2d\x59\x00\x00\x24\x5a\x00\x00\x1b\x5b\x00\x00\x12\x5c\x00\x00\x09\x5d\x00\x00\x00\x5e\x00\x00\xf7\x5e\x00\x00\xee\x5f\x00\x00\xe5\x60\x00\x00\xdc\x61\x00\x00\xd3\x62\x00\x00\xca\x63\x00\x00\xc1\x64\x00\x00\xb8\x65\x00\x00\xaf\x66\x00\x00\xa6\x67\x00\x00\x9d\x68\x00\x00\x94\x69\x00\x00\x8b\x6a\x00\x00\x82\x6b\x00\x00\x79\x6c\x00\x00\x70\x6d\x00\x00\x67\x6e\x00\x00\x5e\x6f\x00\x00\x55\x70\x00\x00\x4c\x71\x00\x00\x43\x72\x00\x00\x3a\x73\x00\x00\x31\x74\x00\x00\x28\x75\x00\x00\x1f\x76\x00\x00\x16\x77\x00\x00\x0d\x78\x00\x00\x04\x79\x00\x00\xfb\x79\x00\x00\xf2\x7a\x00\x00\xe9\x7b\x00\x00\xe0\x7c\x00\x00\xd7\x7d\x00\x00\xce\x7e\x00\x00\xc5\x7f\x00\x00\xbc\x80\x00\x00\xb3\x81\x00\x00\xaa\x82\x00\x00\xa1\x83\x00\x00\x98\x84\x00\x00\x8f\x85\x00\x00\x86\x86\x00\x00\x7d\x87\x00\x00\x74\x88\x00\x00\x6b\x89\x00\x00\x62\x8a\x00\x00\x59\x8b\x00\x00\x50\x8c\x00\x00\x47\x8d\x00\x00\x3e\x8e\x00\x00\x35\x8f\x00\x00\x2c\x90\x00\x00\x23\x91\x00\x00\x1a\x92\x00\x00\x11\x93\x00\x00\x08\x94\x00\x00\xff\x94\x00\x00\xf6\x95\x00\x00\xed\x96\x00\x00\xe4\x97\x00\x00\xdb\x98\x00\x00\xd2\x99\x00\x00\xc9\x9a\x00\x00\xc0\x9b\x00\x00\xb7\x9c\x00\x00\xae\x9d\x00\x00\xa5\x9e\x00\x00\x9c\x9f\x00\x00\x93\xa0\x00\x00\x8a\xa1\x00\x00\x81\xa2\x00\x00\x78\xa3\x00\x00\x6f\xa4\x00\x00\x66\xa5\x00\x00\x5d\xa6\x00\x00\x54\xa7\x00\x00\x4b\xa8\x00\x00\x42\xa9\x00\x00\x39\xaa\x00\x00\x30\xab\x00\x00\x27\xac\x00\x00\x1e\xad\x00\x00\x15\xae\x00\x00\x0c\xaf\x00\x00\x03\xb0\x00\x00\xfa\xb0\x00\x00\xf1\xb1\x00\x00\xe8\xb2\x00\x00\xdf\xb3\x00\x00\xd6\xb4\x00\x00\xcd\xb5\x00\x00\xc4\xb6\x00\x00\xbb\xb7\x00\x00\xb2\xb8\x00\x00\xa9\xb9\x00\x00\xa0\xba\x00\x00\x97\xbb\x00\x00\x8e\xbc\x00\x00\x85\xbd\x00\x00\x7c\xbe\x00\x00\x73\xbf\x00\x00\x6a\xc0\x00\x00\x61\xc1\x00\x00\x58\xc2\x00\x00\x4f\xc3\x00\x00\x46\xc4\x00\x00\x3d\xc5\x00\x00\x34\xc6\x00\x00\x2b\xc7\x00\x00\x22\xc8\x00\x00\x19\xc9\x00\x00\x10\xca\x00\x00\x07\xcb\x00\x00\xfe\xcb\x00\x00\xf5\xcc\x00\x00\xec\xcd\x00\x00\xe3\xce\x00\x00\xda\xcf\x00\x00\xd1\xd0\x00\x00\xc8\xd1\x00\x00\xbf\xd2\x00\x00\xb6\xd3\x00\x00\xad\xd4\x00\x00\xa4\xd5\x00\x00\x9b\xd6\x00\x00\x92\xd7\x00\x00\x89\xd8\x00\x00\x80\xd9\x00\x00\x77\xda\x00\x00\x6e\xdb\x00\x00\xe3\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xdc\x00\x00\x64\xdd\x00\x00\x64\xde\x00\x00\x5a\xdf\x00\x00\x5a\xe0\x00\x00\x50\xe1\x00\x00\x50\xe2\x00\x00\x50\xe3\x00\x00\x50\xe4\x00\x00\x50\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x13\x00\x00\xa3\x14\x00\x00\x93\xd7\x00\x00\x80\xd8\x00\x00\x65\xdb\x00\x00\x4e\xdc\x00\x00\x44\xdf\x00\x00\x2f\xe6\x00\x00\x8b\xe6\x00\x00\xe7\xe6\x00\x00\x43\xe7\x00\x00\x9f\xe7\x00\x00\xfb\xe7\x00\x00\x57\xe8\x00\x00\xb3\xe8\x00\x00\x0f\xe9\x00\x00\x6b\xe9\x00\x00\xc7\xe9\x00\x00\x23\xea\x00\x00\x7f\xea\x00\x00\xdb\xea\x00\x00\x37\xeb\x00\x00\x93\xeb\x00\x00\xef\xeb\x00\x00\x4b\xec\x00\x00\xa7\xec\x00\x00\x03\xed\x00\x00\x5f\xed\x00\x00\xbb\xed\x00\x00\x17\xee\x00\x00\x73\xee\x00\x00\xcf\xee\x00\x00\x2b\xef\x00\x00\x87\xef\x00\x00\xe3\xef\x00\x00\x3f\xf0\x00\x00\x9b\xf0\x00\x00\xf7\xf0\x00\x00\x53\xf1\x00\x00\xaf\xf1\x00\x00\x0b\xf2\x00\x00\x67\xf2\x00\x00\xc3\xf2\x00\x00\x1f\xf3\x00\x00\x7b\xf3\x00\x00\xd7\xf3\x00\x00\x33\xf4\x00\x00\x8f\xf4\x00\x00\xeb\xf4\x00\x00\x47\xf5\x00\x00\xa3\xf5\x00\x00\xff\xf5\x00\x00\x5b\xf6\x00\x00\xb7\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\xff\xff\xda\xff\xff\xff\x00\x00\x00\x00\x13\xf7\x00\x00\x6f\xf7\x00\x00\x72\xd9\x00\x00\xcb\xf7\x00\x00\x27\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\xff\xff\xff\x00\x00\x00\x00\x83\xf8\x00\x00\x69\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\xf8\x00\x00\x3b\xf9\x00\x00\x97\xf9\x00\x00\xf3\xf9\x00\x00\x4f\xfa\x00\x00\xab\xfa\x00\x00\x07\xfb\x00\x00\x63\xfb\x00\x00\xbf\xfb\x00\x00\x1b\xfc\x00\x00\x77\xfc\x00\x00\xd3\xfc\x00\x00\x2f\xfd\x00\x00\x8b\xfd\x00\x00\xe7\xfd\x00\x00\x43\xfe\x00\x00\x9f\xfe\x00\x00\xfb\xfe\x00\x00\x57\xff\x00\x00\xb3\xff\x00\x00\x11\x00\x01\x00\x6f\x00\x01\x00\xcd\x00\x01\x00\x2b\x01\x01\x00\x89\x01\x01\x00\xe7\x01\x01\x00\x45\x02\x01\x00\xa1\x02\x01\x00\xfd\x02\x01\x00\x59\x03\x01\x00\xb5\x03\x01\x00\x11\x04\x01\x00\x6d\x04\x01\x00\xc9\x04\x01\x00\x25\x05\x01\x00\x81\x05\x01\x00\xdd\x05\x01\x00\x39\x06\x01\x00\x95\x06\x01\x00\xf1\x06\x01\x00\x4d\x07\x01\x00\xa9\x07\x01\x00\x05\x08\x01\x00\x61\x08\x01\x00\xbd\x08\x01\x00\x19\x09\x01\x00\x75\x09\x01\x00\xd1\x09\x01\x00\x2d\x0a\x01\x00\x89\x0a\x01\x00\xe5\x0a\x01\x00\x41\x0b\x01\x00\x9d\x0b\x01\x00\xf9\x0b\x01\x00\x55\x0c\x01\x00\xb1\x0c\x01\x00\x0d\x0d\x01\x00\x69\x0d\x01\x00\xc5\x0d\x01\x00\x21\x0e\x01\x00\x7d\x0e\x01\x00\xd9\x0e\x01\x00\x35\x0f\x01\x00\x91\x0f\x01\x00\xed\x0f\x01\x00\x49\x10\x01\x00\xa5\x10\x01\x00\x01\x11\x01\x00\x5d\x11\x01\x00\xb9\x11\x01\x00\x15\x12\x01\x00\x71\x12\x01\x00\xcd\x12\x01\x00\x29\x13\x01\x00\x85\x13\x01\x00\xe1\x13\x01\x00\x3d\x14\x01\x00\x99\x14\x01\x00\xf5\x14\x01\x00\x51\x15\x01\x00\xad\x15\x01\x00\x09\x16\x01\x00\x65\x16\x01\x00\xc1\x16\x01\x00\x1d\x17\x01\x00\x79\x17\x01\x00\xd5\x17\x01\x00\x31\x18\x01\x00\x8d\x18\x01\x00\xe9\x18\x01\x00\x45\x19\x01\x00\xa1\x19\x01\x00\xfd\x19\x01\x00\x59\x1a\x01\x00\xb5\x1a\x01\x00\x11\x1b\x01\x00\x6d\x1b\x01\x00\xc9\x1b\x01\x00\x25\x1c\x01\x00\x81\x1c\x01\x00\xdd\x1c\x01\x00\x39\x1d\x01\x00\x95\x1d\x01\x00\xf1\x1d\x01\x00\x4d\x1e\x01\x00\xa9\x1e\x01\x00\x05\x1f\x01\x00\x61\x1f\x01\x00\xbd\x1f\x01\x00\x19\x20\x01\x00\x75\x20\x01\x00\xd1\x20\x01\x00\x2d\x21\x01\x00\x89\x21\x01\x00\xe5\x21\x01\x00\x41\x22\x01\x00\x9d\x22\x01\x00\xf9\x22\x01\x00\x55\x23\x01\x00\xb1\x23\x01\x00\x0d\x24\x01\x00\x69\x24\x01\x00\xc5\x24\x01\x00\x21\x25\x01\x00\x7d\x25\x01\x00\xd9\x25\x01\x00\x35\x26\x01\x00\x91\x26\x01\x00\xed\x26\x01\x00\x49\x27\x01\x00\xa5\x27\x01\x00\x01\x28\x01\x00\x5d\x28\x01\x00\xb9\x28\x01\x00\x15\x29\x01\x00\x71\x29\x01\x00\xcd\x29\x01\x00\x29\x2a\x01\x00\x85\x2a\x01\x00\xe1\x2a\x01\x00\x3d\x2b\x01\x00\x99\x2b\x01\x00\xf5\x2b\x01\x00\x51\x2c\x01\x00\xad\x2c\x01\x00\x09\x2d\x01\x00\x65\x2d\x01\x00\xc1\x2d\x01\x00\x1d\x2e\x01\x00\x79\x2e\x01\x00\xd5\x2e\x01\x00\x31\x2f\x01\x00\x8d\x2f\x01\x00\xe9\x2f\x01\x00\x45\x30\x01\x00\xa1\x30\x01\x00\xfd\x30\x01\x00\x59\x31\x01\x00\xb5\x31\x01\x00\x11\x32\x01\x00\x6d\x32\x01\x00\xc9\x32\x01\x00\x25\x33\x01\x00\x81\x33\x01\x00\xdd\x33\x01\x00\x39\x34\x01\x00\x95\x34\x01\x00\xf1\x34\x01\x00\x4d\x35\x01\x00\xa9\x35\x01\x00\x05\x36\x01\x00\x61\x36\x01\x00\xbd\x36\x01\x00\x19\x37\x01\x00\x75\x37\x01\x00\xd1\x37\x01\x00\x2d\x38\x01\x00\x89\x38\x01\x00\xe5\x38\x01\x00\x41\x39\x01\x00\x9d\x39\x01\x00\xf9\x39\x01\x00\x55\x3a\x01\x00\xb1\x3a\x01\x00\x0d\x3b\x01\x00\x69\x3b\x01\x00\xc5\x3b\x01\x00\x21\x3c\x01\x00\x7d\x3c\x01\x00\xd9\x3c\x01\x00\x35\x3d\x01\x00\x91\x3d\x01\x00\xed\x3d\x01\x00\x49\x3e\x01\x00\xa5\x3e\x01\x00\x01\x3f\x01\x00\x5d\x3f\x01\x00\xb9\x3f\x01\x00\x15\x40\x01\x00\x71\x40\x01\x00\xcd\x40\x01\x00\x29\x41\x01\x00\x85\x41\x01\x00\xe1\x41\x01\x00\x3d\x42\x01\x00\x99\x42\x01\x00\xf5\x42\x01\x00\x51\x43\x01\x00\xad\x43\x01\x00\x09\x44\x01\x00\x65\x44\x01\x00\xc1\x44\x01\x00\x1d\x45\x01\x00\x79\x45\x01\x00\xd5\x45\x01\x00\x31\x46\x01\x00\x8d\x46\x01\x00\xe9\x46\x01\x00\x45\x47\x01\x00\xa1\x47\x01\x00\xfd\x47\x01\x00\x59\x48\x01\x00\xb5\x48\x01\x00\x11\x49\x01\x00\x6d\x49\x01\x00\xc9\x49\x01\x00\x25\x4a\x01\x00\x81\x4a\x01\x00\xdd\x4a\x01\x00\x39\x4b\x01\x00\x95\x4b\x01\x00\xf1\x4b\x01\x00\x4d\x4c\x01\x00\xa9\x4c\x01\x00\x05\x4d\x01\x00\x61\x4d\x01\x00\xbd\x4d\x01\x00\x19\x4e\x01\x00\x75\x4e\x01\x00\xd1\x4e\x01\x00\x2d\x4f\x01\x00\x89\x4f\x01\x00\xe5\x4f\x01\x00"#++alex_table :: AlexAddr+alex_table = AlexA#+  "\x00\x00\x1d\x01\x3a\x00\x3a\x00\x3a\x00\x10\x01\x3d\x00\x57\x01\x58\x01\x60\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\x3a\x00\xf8\x01\x6b\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x6a\x01\x62\x01\x63\x01\xf8\x01\xf8\x01\xf8\x01\x80\x01\x59\x01\xf8\x01\x72\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x5b\x01\x5a\x01\xf8\x01\x5c\x01\xf8\x01\x5e\x01\x66\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x1e\x02\xf8\x01\xf8\x01\xa7\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x65\x01\xf8\x01\xf8\x01\x5d\x01\xf8\x01\xfc\x01\xf8\x01\xd7\x01\x87\x01\xfa\x01\xca\x01\xf8\x01\xe4\x01\x5d\x02\xf8\x01\xf8\x01\x9f\x01\xce\x01\xf7\x01\x22\x02\xe6\x01\xcf\x01\xd8\x01\xe2\x01\xe1\x01\xd3\x01\xf0\x01\xb0\x01\xf8\x01\xf8\x01\xf8\x01\x68\x01\x5f\x01\x69\x01\xf8\x01\x1e\x01\x3a\x00\x3a\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x3a\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x3b\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x0a\x00\x3a\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x1a\x00\x14\x00\x14\x00\x19\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x09\x00\x14\x00\x00\x00\x14\x00\x1d\x01\x3a\x00\x3a\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\xf8\x01\x6b\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x6a\x01\x62\x01\x63\x01\xf8\x01\xf8\x01\xf8\x01\x80\x01\x59\x01\xf8\x01\x72\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x5b\x01\x5a\x01\xf8\x01\x5c\x01\xf8\x01\x5e\x01\x66\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x1e\x02\xf8\x01\xf8\x01\xa7\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x65\x01\xf8\x01\xf8\x01\x5d\x01\xf8\x01\xfc\x01\xf8\x01\xd7\x01\x87\x01\xfa\x01\xca\x01\xf8\x01\xe4\x01\x5d\x02\xf8\x01\xf8\x01\x9f\x01\xce\x01\xf7\x01\x22\x02\xe6\x01\xcf\x01\xd8\x01\xe2\x01\xe1\x01\xd3\x01\xf0\x01\xb0\x01\xf8\x01\xf8\x01\xf8\x01\x68\x01\x5f\x01\x69\x01\xf8\x01\x3a\x00\x3a\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x0a\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x1a\x00\x14\x00\x14\x00\x19\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x09\x00\x14\x00\x00\x00\x14\x00\xff\xff\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x56\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\xf8\x01\x0d\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\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\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\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\x0c\x01\x00\x00\xf8\x01\x00\x00\xf8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\x1d\x01\x3a\x00\x3a\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x7f\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x0d\x00\xf8\x01\xf8\x01\x0c\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x9d\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x09\x00\xf8\x01\x00\x00\xf8\x01\x1f\x01\x3a\x00\x3a\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x0a\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x1a\x00\x14\x00\x14\x00\x19\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x09\x00\x14\x00\x00\x00\x14\x00\xff\xff\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x6b\x01\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x9e\x00\xa0\x00\x04\x01\x9f\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x7d\x00\xa4\x00\xab\x00\xdf\x00\xaf\x00\x00\x00\xa8\x00\xe2\x00\xbb\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x01\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x11\x01\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x0b\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x12\x01\x14\x00\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x3e\x02\xf8\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\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\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\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\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x0f\x00\x3e\x02\x3e\x02\x0e\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x00\x00\x3e\x02\x36\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x33\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\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x0b\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x00\x00\x14\x00\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x11\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x14\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x7d\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x0f\x00\x3e\x02\x3e\x02\x0e\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x00\x00\x3e\x02\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x38\x00\x11\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2b\x00\x16\x00\x22\x00\x22\x00\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xff\xff\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xff\xff\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xe7\x01\xf8\x01\xa2\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x04\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x00\x00\x00\x00\xc9\x00\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x00\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\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\x34\x00\x12\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x29\x00\x17\x00\x20\x00\x20\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xf8\x01\x3f\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x00\x00\xf8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xff\xff\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xff\xff\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x0a\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xff\xff\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x0b\x01\xf8\x01\xf8\x01\xf8\x01\xf8\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\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\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\xf8\x01\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xff\xff\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x31\x00\x13\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x27\x00\x18\x00\x1e\x00\x1e\x00\x1e\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\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\xff\xff\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\x16\x01\x00\x00\x00\x00\x00\x00\x14\x01\x16\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\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x16\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\x16\x01\x00\x00\x13\x01\x00\x00\x16\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\xff\xff\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\x16\x01\x00\x00\x00\x00\x00\x00\x14\x01\x16\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\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x16\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\x16\x01\x00\x00\x16\x01\x00\x00\x16\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\xff\xff\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\x16\x01\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x16\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\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x16\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\x18\x01\x00\x00\x00\x00\x19\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\x16\x01\x00\x00\x16\x01\x00\x00\x16\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x00\x00\x00\x00\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x00\x00\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x00\x00\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x00\x00\x1c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x1c\x01\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\xff\xff\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x16\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\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x16\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\x16\x01\x00\x00\x16\x01\x00\x00\x16\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\xff\xff\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\x16\x01\x00\x00\x00\x00\x00\x00\x1a\x01\x17\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x16\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\x16\x01\x00\x00\x13\x01\x00\x00\x16\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\xff\xff\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\x16\x01\x00\x00\x00\x00\x00\x00\x1a\x01\x17\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x16\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\x16\x01\x00\x00\x16\x01\x00\x00\x16\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\xff\xff\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x16\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\x16\x01\x00\x00\x16\x01\x00\x00\x16\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x15\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x35\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x36\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x42\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x45\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\x41\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x4f\x02\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x4e\x02\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xec\x01\xf8\x01\xf8\x01\xf8\x01\xc1\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xc4\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xaa\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x61\x01\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\x43\x02\xf8\x01\x85\x01\x2c\x00\xf8\x01\x6f\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6c\x01\x6d\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6c\x01\x6d\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x2c\x00\xf8\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6c\x01\x6d\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6c\x01\x6d\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x2c\x00\xf8\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x2c\x00\xf8\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6c\x01\x6d\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6c\x01\x6d\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x3f\x02\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x2c\x00\xf8\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x42\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x42\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x2c\x00\xf8\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x2c\x00\xf8\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\x70\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x42\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x42\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x46\x02\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x2c\x00\xf8\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x47\x02\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x3e\x02\xf8\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x3e\x02\x45\x02\x3e\x02\x45\x02\x10\x00\x3e\x02\x78\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x76\x01\x76\x01\x76\x01\x76\x01\x75\x01\x76\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x76\x01\x76\x01\x76\x01\x76\x01\x75\x01\x76\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x10\x00\x3e\x02\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x76\x01\x76\x01\x76\x01\x76\x01\x75\x01\x76\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x76\x01\x76\x01\x76\x01\x76\x01\x75\x01\x76\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x10\x00\x3e\x02\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x10\x00\x3e\x02\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x76\x01\x76\x01\x76\x01\x76\x01\x75\x01\x76\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x76\x01\x76\x01\x76\x01\x76\x01\x75\x01\x76\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x40\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\xf8\x01\x3e\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x3f\x02\xf8\x01\xf8\x01\x00\x00\xf8\x01\x3e\x02\xf8\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x10\x00\x3e\x02\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x44\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x44\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x10\x00\x3e\x02\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x10\x00\x3e\x02\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x7b\x01\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x44\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x44\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x41\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x10\x00\x3e\x02\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x40\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\xf8\x01\x3e\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x1a\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x11\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x1a\x01\x10\x00\xf8\x01\x73\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\x71\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\x64\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x11\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xee\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x12\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xef\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x12\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf9\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x12\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x12\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x7a\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x12\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x22\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x35\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x23\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x26\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x27\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x28\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x2b\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x2c\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x2d\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x30\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x31\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x32\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x33\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x39\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x3a\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x3c\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x48\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x49\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x4a\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x4d\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x50\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x51\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x52\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x53\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x54\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x55\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x5e\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x5a\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x57\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x56\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x55\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x54\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x93\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x53\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x52\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x51\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x4d\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x4a\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x98\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x49\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x9e\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x3d\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x3c\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xae\x01\x3b\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x3a\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x39\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x38\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x37\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x36\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x34\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x33\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x32\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x31\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x30\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x2f\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xa3\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xa4\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x2e\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x2d\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x2c\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xa9\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x2b\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x2a\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x29\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x28\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x27\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x25\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x24\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x23\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xaf\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x0b\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xb7\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xe5\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x19\x02\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x21\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x20\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xbf\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x15\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x0f\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xc3\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xc5\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x1d\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x1b\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xe0\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xc7\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xc9\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x18\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x17\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x14\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xcb\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xcc\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x13\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x12\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x11\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x10\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x0d\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x0c\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xd0\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xd1\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x09\x02\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xd2\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x07\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xd4\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x02\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xed\x01\xf8\x01\xf8\x01\xde\x01\xf8\x01\xf8\x01\x06\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xda\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xdb\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xdc\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xdd\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x05\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x03\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x01\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xe9\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xea\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xff\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xfe\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x81\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x82\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf2\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf3\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x83\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf6\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf5\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf4\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xfd\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xeb\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xe8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xe3\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xd9\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xd5\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x08\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x0a\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xcd\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x0e\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x1a\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xc8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xc6\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x1c\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xc2\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xc0\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x1f\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xd6\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xbe\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xbd\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xbc\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xbb\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xba\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xb9\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xb8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xb6\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xfb\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf1\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xb5\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xb4\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xb3\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xb2\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xb1\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xad\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x26\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xac\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xab\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xa8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xa6\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xa5\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xa1\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xa0\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xdf\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x9c\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x9b\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x9a\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x99\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x48\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x97\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x96\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x95\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x4c\x02\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x50\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x94\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x92\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x91\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x90\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x8f\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x8e\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x58\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x8d\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x8c\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x8b\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x59\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x8a\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x89\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x88\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x5b\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x5c\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x86\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x3e\x02\xf8\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x10\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\xf8\x01\x3e\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\x74\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x3e\x02\xf8\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x10\x00\x3e\x02\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x77\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x10\x00\x3e\x02\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\xf8\x01\x3e\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\x43\x02\xf8\x01\x85\x01\x10\x00\xf8\x01\x7a\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x7a\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x3e\x02\xf8\x01\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x3e\x02\x45\x02\x3e\x02\x45\x02\x10\x00\x3e\x02\x7e\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x10\x00\x3e\x02\x7e\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x3e\x02\x00\x00\x3e\x02\xf8\x01\x3e\x02\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\x6d\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\x6e\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x4f\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x4e\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x4b\x02\xf8\x01\xf8\x01\x4c\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x4b\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x47\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x46\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x3f\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x3e\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x3d\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x3b\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x38\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x37\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x34\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x2f\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x2e\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x2a\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x29\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x25\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x24\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x16\x02\x21\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\x00\x00\xf8\x01\xf8\x01\xf8\x01\x84\x01\x10\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x20\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\xf8\x01\x00\x00\xf8\x01\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#++alex_check :: AlexAddr+alex_check = AlexA#+  "\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2d\x00\x23\x00\x2e\x00\x2e\x00\x7c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x20\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x20\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\xff\xff\x7e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\xff\xff\x7e\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x21\x00\x23\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\xff\xff\x7e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\xff\xff\x7e\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\xff\xff\x52\x00\x53\x00\x54\x00\xff\xff\xff\xff\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\x7b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x7c\x00\xff\xff\x7e\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x59\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x59\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x59\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x50\x00\xff\xff\xff\xff\xff\xff\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x50\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x50\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4d\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x50\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x50\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x42\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\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\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x21\x00\x23\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x20\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x2d\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x20\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x2d\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#++alex_deflt :: AlexAddr+alex_deflt = AlexA#+  "\xff\xff\xff\xff\xff\xff\xff\xff\x0e\x01\xff\xff\xff\xff\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x24\x00\x26\x00\x26\x00\x28\x00\x28\x00\x2a\x00\x2a\x00\x2f\x00\x2f\x00\x32\x00\x32\x00\x35\x00\x35\x00\x39\x00\x39\x00\xff\xff\x16\x01\x16\x01\x16\x01\x0e\x01\x0e\x01\x0e\x01\xca\x00\xca\x00\xca\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xca\x00\x0e\x01\x0e\x01\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\xca\x00\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\xff\xff\xff\xff\xff\xff\xff\xff\x16\x01\x15\x01\x15\x01\x16\x01\x1c\x01\x16\x01\x1c\x01\x1b\x01\x1b\x01\x1c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#++alex_accept = listArray (0 :: Int, 606)+  [ AlexAccNone+  , AlexAccPred 549 ( not' eof )(AlexAccNone)+  , AlexAccNone+  , AlexAcc 548+  , AlexAccNone+  , AlexAccNone+  , AlexAcc 547+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccNone+  , AlexAccSkip+  , AlexAccSkip+  , AlexAccSkip+  , AlexAcc 546+  , AlexAcc 545+  , AlexAcc 544+  , AlexAcc 543+  , AlexAcc 542+  , AlexAcc 541+  , AlexAcc 540+  , AlexAcc 539+  , AlexAcc 538+  , AlexAcc 537+  , AlexAcc 536+  , AlexAcc 535+  , AlexAcc 534+  , AlexAcc 533+  , AlexAcc 532+  , AlexAcc 531+  , AlexAcc 530+  , AlexAcc 529+  , AlexAcc 528+  , AlexAcc 527+  , AlexAcc 526+  , AlexAcc 525+  , AlexAcc 524+  , AlexAcc 523+  , AlexAcc 522+  , AlexAcc 521+  , AlexAcc 520+  , AlexAcc 519+  , AlexAcc 518+  , AlexAcc 517+  , AlexAcc 516+  , AlexAcc 515+  , AlexAcc 514+  , AlexAcc 513+  , AlexAcc 512+  , AlexAcc 511+  , AlexAcc 510+  , AlexAcc 509+  , AlexAcc 508+  , AlexAcc 507+  , AlexAcc 506+  , AlexAcc 505+  , AlexAcc 504+  , AlexAcc 503+  , AlexAcc 502+  , AlexAcc 501+  , AlexAcc 500+  , AlexAcc 499+  , AlexAcc 498+  , AlexAcc 497+  , AlexAcc 496+  , AlexAcc 495+  , AlexAcc 494+  , AlexAcc 493+  , AlexAcc 492+  , AlexAcc 491+  , AlexAcc 490+  , AlexAcc 489+  , AlexAcc 488+  , AlexAcc 487+  , AlexAcc 486+  , AlexAcc 485+  , AlexAcc 484+  , AlexAcc 483+  , AlexAcc 482+  , AlexAcc 481+  , AlexAcc 480+  , AlexAcc 479+  , AlexAcc 478+  , AlexAcc 477+  , AlexAcc 476+  , AlexAcc 475+  , AlexAcc 474+  , AlexAcc 473+  , AlexAcc 472+  , AlexAcc 471+  , AlexAcc 470+  , AlexAcc 469+  , AlexAcc 468+  , AlexAcc 467+  , AlexAcc 466+  , AlexAcc 465+  , AlexAcc 464+  , AlexAcc 463+  , AlexAcc 462+  , AlexAcc 461+  , AlexAcc 460+  , AlexAcc 459+  , AlexAcc 458+  , AlexAcc 457+  , AlexAcc 456+  , AlexAcc 455+  , AlexAcc 454+  , AlexAcc 453+  , AlexAcc 452+  , AlexAcc 451+  , AlexAcc 450+  , AlexAcc 449+  , AlexAcc 448+  , AlexAcc 447+  , AlexAcc 446+  , AlexAcc 445+  , AlexAcc 444+  , AlexAcc 443+  , AlexAcc 442+  , AlexAcc 441+  , AlexAcc 440+  , AlexAcc 439+  , AlexAcc 438+  , AlexAcc 437+  , AlexAcc 436+  , AlexAcc 435+  , AlexAcc 434+  , AlexAcc 433+  , AlexAcc 432+  , AlexAcc 431+  , AlexAcc 430+  , AlexAcc 429+  , AlexAcc 428+  , AlexAcc 427+  , AlexAcc 426+  , AlexAcc 425+  , AlexAcc 424+  , AlexAcc 423+  , AlexAcc 422+  , AlexAcc 421+  , AlexAcc 420+  , AlexAcc 419+  , AlexAcc 418+  , AlexAcc 417+  , AlexAcc 416+  , AlexAcc 415+  , AlexAcc 414+  , AlexAcc 413+  , AlexAcc 412+  , AlexAcc 411+  , AlexAcc 410+  , AlexAcc 409+  , AlexAcc 408+  , AlexAcc 407+  , AlexAcc 406+  , AlexAcc 405+  , AlexAcc 404+  , AlexAcc 403+  , AlexAcc 402+  , AlexAcc 401+  , AlexAcc 400+  , AlexAcc 399+  , AlexAcc 398+  , AlexAcc 397+  , AlexAcc 396+  , AlexAcc 395+  , AlexAcc 394+  , AlexAcc 393+  , AlexAcc 392+  , AlexAcc 391+  , AlexAcc 390+  , AlexAcc 389+  , AlexAcc 388+  , AlexAcc 387+  , AlexAcc 386+  , AlexAcc 385+  , AlexAcc 384+  , AlexAcc 383+  , AlexAcc 382+  , AlexAcc 381+  , AlexAcc 380+  , AlexAcc 379+  , AlexAcc 378+  , AlexAcc 377+  , AlexAcc 376+  , AlexAcc 375+  , AlexAcc 374+  , AlexAcc 373+  , AlexAcc 372+  , AlexAcc 371+  , AlexAcc 370+  , AlexAcc 369+  , AlexAcc 368+  , AlexAcc 367+  , AlexAcc 366+  , AlexAcc 365+  , AlexAcc 364+  , AlexAcc 363+  , AlexAcc 362+  , AlexAcc 361+  , AlexAcc 360+  , AlexAcc 359+  , AlexAcc 358+  , AlexAcc 357+  , AlexAcc 356+  , AlexAcc 355+  , AlexAcc 354+  , AlexAcc 353+  , AlexAcc 352+  , AlexAcc 351+  , AlexAcc 350+  , AlexAcc 349+  , AlexAcc 348+  , AlexAcc 347+  , AlexAcc 346+  , AlexAcc 345+  , AlexAcc 344+  , AlexAcc 343+  , AlexAcc 342+  , AlexAcc 341+  , AlexAcc 340+  , AlexAcc 339+  , AlexAcc 338+  , AlexAcc 337+  , AlexAccPred 336 ( not' (followedBy '#') )(AlexAccNone)+  , AlexAccPred 335 ( not' (followedBy '#') )(AlexAccNone)+  , AlexAcc 334+  , AlexAcc 333+  , AlexAcc 332+  , AlexAccPred 331 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone))+  , AlexAccPred 330 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone))+  , AlexAccPred 329 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone))+  , AlexAccPred 328 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone))+  , AlexAccPred 327 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone))+  , AlexAccPred 326 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone))+  , AlexAccPred 325 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAcc 324))+  , AlexAccPred 323 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAcc 322))+  , AlexAccPred 321 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAcc 320))+  , AlexAcc 319+  , AlexAccSkip+  , AlexAccSkip+  , AlexAcc 318+  , AlexAcc 317+  , AlexAcc 316+  , AlexAcc 315+  , AlexAcc 314+  , AlexAcc 313+  , AlexAcc 312+  , AlexAcc 311+  , AlexAcc 310+  , AlexAcc 309+  , AlexAcc 308+  , AlexAcc 307+  , AlexAcc 306+  , AlexAcc 305+  , AlexAcc 304+  , AlexAcc 303+  , AlexAcc 302+  , AlexAcc 301+  , AlexAcc 300+  , AlexAcc 299+  , AlexAcc 298+  , AlexAcc 297+  , AlexAcc 296+  , AlexAcc 295+  , AlexAcc 294+  , AlexAcc 293+  , AlexAcc 292+  , AlexAcc 291+  , AlexAcc 290+  , AlexAcc 289+  , AlexAcc 288+  , AlexAcc 287+  , AlexAcc 286+  , AlexAcc 285+  , AlexAcc 284+  , AlexAcc 283+  , AlexAcc 282+  , AlexAcc 281+  , AlexAcc 280+  , AlexAcc 279+  , AlexAcc 278+  , AlexAcc 277+  , AlexAcc 276+  , AlexAcc 275+  , AlexAcc 274+  , AlexAcc 273+  , AlexAcc 272+  , AlexAcc 271+  , AlexAcc 270+  , AlexAcc 269+  , AlexAcc 268+  , AlexAcc 267+  , AlexAcc 266+  , AlexAcc 265+  , AlexAcc 264+  , AlexAcc 263+  , AlexAcc 262+  , AlexAcc 261+  , AlexAcc 260+  , AlexAcc 259+  , AlexAcc 258+  , AlexAcc 257+  , AlexAcc 256+  , AlexAcc 255+  , AlexAccPred 254 (alexRightContext 8)(AlexAccNone)+  , AlexAcc 253+  , AlexAcc 252+  , AlexAcc 251+  , AlexAcc 250+  , AlexAcc 249+  , AlexAcc 248+  , AlexAccPred 247 (alexRightContext 55)(AlexAccNone)+  , AlexAcc 246+  , AlexAcc 245+  , AlexAcc 244+  , AlexAcc 243+  , AlexAcc 242+  , AlexAcc 241+  , AlexAcc 240+  , AlexAcc 239+  , AlexAcc 238+  , AlexAcc 237+  , AlexAcc 236+  , AlexAcc 235+  , AlexAcc 234+  , AlexAcc 233+  , AlexAcc 232+  , AlexAcc 231+  , AlexAcc 230+  , AlexAcc 229+  , AlexAcc 228+  , AlexAcc 227+  , AlexAcc 226+  , AlexAcc 225+  , AlexAcc 224+  , AlexAcc 223+  , AlexAcc 222+  , AlexAcc 221+  , AlexAcc 220+  , AlexAcc 219+  , AlexAcc 218+  , AlexAcc 217+  , AlexAcc 216+  , AlexAcc 215+  , AlexAcc 214+  , AlexAcc 213+  , AlexAcc 212+  , AlexAcc 211+  , AlexAcc 210+  , AlexAcc 209+  , AlexAcc 208+  , AlexAcc 207+  , AlexAcc 206+  , AlexAcc 205+  , AlexAcc 204+  , AlexAcc 203+  , AlexAcc 202+  , AlexAcc 201+  , AlexAcc 200+  , AlexAcc 199+  , AlexAcc 198+  , AlexAcc 197+  , AlexAcc 196+  , AlexAcc 195+  , AlexAcc 194+  , AlexAcc 193+  , AlexAcc 192+  , AlexAcc 191+  , AlexAcc 190+  , AlexAcc 189+  , AlexAcc 188+  , AlexAcc 187+  , AlexAcc 186+  , AlexAcc 185+  , AlexAcc 184+  , AlexAcc 183+  , AlexAcc 182+  , AlexAcc 181+  , AlexAcc 180+  , AlexAcc 179+  , AlexAcc 178+  , AlexAcc 177+  , AlexAcc 176+  , AlexAcc 175+  , AlexAcc 174+  , AlexAcc 173+  , AlexAcc 172+  , AlexAcc 171+  , AlexAcc 170+  , AlexAcc 169+  , AlexAcc 168+  , AlexAcc 167+  , AlexAcc 166+  , AlexAcc 165+  , AlexAcc 164+  , AlexAcc 163+  , AlexAcc 162+  , AlexAcc 161+  , AlexAcc 160+  , AlexAcc 159+  , AlexAcc 158+  , AlexAcc 157+  , AlexAcc 156+  , AlexAcc 155+  , AlexAcc 154+  , AlexAcc 153+  , AlexAcc 152+  , AlexAcc 151+  , AlexAcc 150+  , AlexAcc 149+  , AlexAcc 148+  , AlexAcc 147+  , AlexAcc 146+  , AlexAcc 145+  , AlexAcc 144+  , AlexAcc 143+  , AlexAcc 142+  , AlexAcc 141+  , AlexAcc 140+  , AlexAcc 139+  , AlexAcc 138+  , AlexAcc 137+  , AlexAcc 136+  , AlexAcc 135+  , AlexAcc 134+  , AlexAcc 133+  , AlexAcc 132+  , AlexAcc 131+  , AlexAcc 130+  , AlexAcc 129+  , AlexAcc 128+  , AlexAcc 127+  , AlexAcc 126+  , AlexAcc 125+  , AlexAcc 124+  , AlexAcc 123+  , AlexAcc 122+  , AlexAcc 121+  , AlexAcc 120+  , AlexAcc 119+  , AlexAcc 118+  , AlexAcc 117+  , AlexAcc 116+  , AlexAcc 115+  , AlexAcc 114+  , AlexAcc 113+  , AlexAcc 112+  , AlexAcc 111+  , AlexAcc 110+  , AlexAcc 109+  , AlexAcc 108+  , AlexAcc 107+  , AlexAcc 106+  , AlexAcc 105+  , AlexAcc 104+  , AlexAcc 103+  , AlexAcc 102+  , AlexAcc 101+  , AlexAcc 100+  , AlexAcc 99+  , AlexAcc 98+  , AlexAcc 97+  , AlexAcc 96+  , AlexAcc 95+  , AlexAcc 94+  , AlexAcc 93+  , AlexAcc 92+  , AlexAcc 91+  , AlexAcc 90+  , AlexAcc 89+  , AlexAcc 88+  , AlexAcc 87+  , AlexAcc 86+  , AlexAcc 85+  , AlexAcc 84+  , AlexAcc 83+  , AlexAcc 82+  , AlexAcc 81+  , AlexAcc 80+  , AlexAcc 79+  , AlexAcc 78+  , AlexAcc 77+  , AlexAcc 76+  , AlexAcc 75+  , AlexAcc 74+  , AlexAcc 73+  , AlexAcc 72+  , AlexAcc 71+  , AlexAcc 70+  , AlexAcc 69+  , AlexAcc 68+  , AlexAcc 67+  , AlexAcc 66+  , AlexAcc 65+  , AlexAcc 64+  , AlexAcc 63+  , AlexAcc 62+  , AlexAcc 61+  , AlexAcc 60+  , AlexAcc 59+  , AlexAcc 58+  , AlexAcc 57+  , AlexAcc 56+  , AlexAcc 55+  , AlexAcc 54+  , AlexAcc 53+  , AlexAcc 52+  , AlexAcc 51+  , AlexAcc 50+  , AlexAcc 49+  , AlexAcc 48+  , AlexAcc 47+  , AlexAcc 46+  , AlexAcc 45+  , AlexAcc 44+  , AlexAcc 43+  , AlexAcc 42+  , AlexAcc 41+  , AlexAcc 40+  , AlexAcc 39+  , AlexAcc 38+  , AlexAcc 37+  , AlexAcc 36+  , AlexAcc 35+  , AlexAcc 34+  , AlexAcc 33+  , AlexAcc 32+  , AlexAcc 31+  , AlexAcc 30+  , AlexAcc 29+  , AlexAcc 28+  , AlexAcc 27+  , AlexAcc 26+  , AlexAcc 25+  , AlexAcc 24+  , AlexAcc 23+  , AlexAcc 22+  , AlexAcc 21+  , AlexAcc 20+  , AlexAcc 19+  , AlexAcc 18+  , AlexAcc 17+  , AlexAcc 16+  , AlexAcc 15+  , AlexAcc 14+  , AlexAcc 13+  , AlexAcc 12+  , AlexAcc 11+  , AlexAcc 10+  , AlexAcc 9+  , AlexAcc 8+  , AlexAcc 7+  , AlexAcc 6+  , AlexAcc 5+  , AlexAcc 4+  , AlexAcc 3+  , AlexAcc 2+  , AlexAcc 1+  , AlexAcc 0+  ]++alex_actions = array (0 :: Int, 550)+  [ (549,alex_action_36)+  , (548,alex_action_39)+  , (547,alex_action_38)+  , (546,alex_action_2)+  , (545,alex_action_2)+  , (544,alex_action_3)+  , (543,alex_action_4)+  , (542,alex_action_4)+  , (541,alex_action_5)+  , (540,alex_action_6)+  , (539,alex_action_7)+  , (538,alex_action_8)+  , (537,alex_action_9)+  , (536,alex_action_10)+  , (535,alex_action_11)+  , (534,alex_action_12)+  , (533,alex_action_13)+  , (532,alex_action_14)+  , (531,alex_action_15)+  , (530,alex_action_16)+  , (529,alex_action_17)+  , (528,alex_action_18)+  , (527,alex_action_19)+  , (526,alex_action_20)+  , (525,alex_action_21)+  , (524,alex_action_22)+  , (523,alex_action_23)+  , (522,alex_action_24)+  , (521,alex_action_25)+  , (520,alex_action_26)+  , (519,alex_action_27)+  , (518,alex_action_27)+  , (517,alex_action_27)+  , (516,alex_action_27)+  , (515,alex_action_27)+  , (514,alex_action_27)+  , (513,alex_action_27)+  , (512,alex_action_27)+  , (511,alex_action_27)+  , (510,alex_action_27)+  , (509,alex_action_27)+  , (508,alex_action_27)+  , (507,alex_action_27)+  , (506,alex_action_27)+  , (505,alex_action_27)+  , (504,alex_action_27)+  , (503,alex_action_27)+  , (502,alex_action_27)+  , (501,alex_action_27)+  , (500,alex_action_27)+  , (499,alex_action_27)+  , (498,alex_action_27)+  , (497,alex_action_27)+  , (496,alex_action_27)+  , (495,alex_action_27)+  , (494,alex_action_27)+  , (493,alex_action_27)+  , (492,alex_action_27)+  , (491,alex_action_27)+  , (490,alex_action_27)+  , (489,alex_action_27)+  , (488,alex_action_27)+  , (487,alex_action_27)+  , (486,alex_action_27)+  , (485,alex_action_27)+  , (484,alex_action_27)+  , (483,alex_action_27)+  , (482,alex_action_27)+  , (481,alex_action_27)+  , (480,alex_action_27)+  , (479,alex_action_27)+  , (478,alex_action_27)+  , (477,alex_action_27)+  , (476,alex_action_27)+  , (475,alex_action_27)+  , (474,alex_action_27)+  , (473,alex_action_27)+  , (472,alex_action_27)+  , (471,alex_action_27)+  , (470,alex_action_27)+  , (469,alex_action_27)+  , (468,alex_action_27)+  , (467,alex_action_27)+  , (466,alex_action_27)+  , (465,alex_action_27)+  , (464,alex_action_27)+  , (463,alex_action_27)+  , (462,alex_action_27)+  , (461,alex_action_27)+  , (460,alex_action_27)+  , (459,alex_action_27)+  , (458,alex_action_27)+  , (457,alex_action_27)+  , (456,alex_action_27)+  , (455,alex_action_27)+  , (454,alex_action_27)+  , (453,alex_action_27)+  , (452,alex_action_27)+  , (451,alex_action_27)+  , (450,alex_action_27)+  , (449,alex_action_27)+  , (448,alex_action_27)+  , (447,alex_action_27)+  , (446,alex_action_27)+  , (445,alex_action_27)+  , (444,alex_action_27)+  , (443,alex_action_27)+  , (442,alex_action_27)+  , (441,alex_action_27)+  , (440,alex_action_27)+  , (439,alex_action_27)+  , (438,alex_action_27)+  , (437,alex_action_27)+  , (436,alex_action_27)+  , (435,alex_action_27)+  , (434,alex_action_27)+  , (433,alex_action_27)+  , (432,alex_action_27)+  , (431,alex_action_27)+  , (430,alex_action_27)+  , (429,alex_action_27)+  , (428,alex_action_27)+  , (427,alex_action_27)+  , (426,alex_action_27)+  , (425,alex_action_27)+  , (424,alex_action_27)+  , (423,alex_action_27)+  , (422,alex_action_27)+  , (421,alex_action_27)+  , (420,alex_action_27)+  , (419,alex_action_27)+  , (418,alex_action_27)+  , (417,alex_action_27)+  , (416,alex_action_27)+  , (415,alex_action_27)+  , (414,alex_action_27)+  , (413,alex_action_27)+  , (412,alex_action_27)+  , (411,alex_action_27)+  , (410,alex_action_27)+  , (409,alex_action_27)+  , (408,alex_action_27)+  , (407,alex_action_27)+  , (406,alex_action_27)+  , (405,alex_action_27)+  , (404,alex_action_27)+  , (403,alex_action_27)+  , (402,alex_action_27)+  , (401,alex_action_27)+  , (400,alex_action_27)+  , (399,alex_action_27)+  , (398,alex_action_27)+  , (397,alex_action_27)+  , (396,alex_action_27)+  , (395,alex_action_27)+  , (394,alex_action_27)+  , (393,alex_action_27)+  , (392,alex_action_27)+  , (391,alex_action_27)+  , (390,alex_action_27)+  , (389,alex_action_27)+  , (388,alex_action_27)+  , (387,alex_action_27)+  , (386,alex_action_27)+  , (385,alex_action_27)+  , (384,alex_action_27)+  , (383,alex_action_27)+  , (382,alex_action_27)+  , (381,alex_action_27)+  , (380,alex_action_27)+  , (379,alex_action_27)+  , (378,alex_action_27)+  , (377,alex_action_27)+  , (376,alex_action_27)+  , (375,alex_action_27)+  , (374,alex_action_27)+  , (373,alex_action_27)+  , (372,alex_action_27)+  , (371,alex_action_27)+  , (370,alex_action_27)+  , (369,alex_action_27)+  , (368,alex_action_27)+  , (367,alex_action_27)+  , (366,alex_action_27)+  , (365,alex_action_27)+  , (364,alex_action_27)+  , (363,alex_action_27)+  , (362,alex_action_27)+  , (361,alex_action_27)+  , (360,alex_action_27)+  , (359,alex_action_27)+  , (358,alex_action_27)+  , (357,alex_action_27)+  , (356,alex_action_27)+  , (355,alex_action_27)+  , (354,alex_action_27)+  , (353,alex_action_27)+  , (352,alex_action_27)+  , (351,alex_action_27)+  , (350,alex_action_27)+  , (349,alex_action_27)+  , (348,alex_action_27)+  , (347,alex_action_27)+  , (346,alex_action_27)+  , (345,alex_action_27)+  , (344,alex_action_27)+  , (343,alex_action_27)+  , (342,alex_action_27)+  , (341,alex_action_28)+  , (340,alex_action_28)+  , (339,alex_action_28)+  , (338,alex_action_28)+  , (337,alex_action_28)+  , (336,alex_action_29)+  , (335,alex_action_29)+  , (334,alex_action_30)+  , (333,alex_action_31)+  , (332,alex_action_31)+  , (331,alex_action_32)+  , (330,alex_action_32)+  , (329,alex_action_32)+  , (328,alex_action_32)+  , (327,alex_action_32)+  , (326,alex_action_32)+  , (325,alex_action_32)+  , (324,alex_action_114)+  , (323,alex_action_32)+  , (322,alex_action_114)+  , (321,alex_action_32)+  , (320,alex_action_114)+  , (319,alex_action_34)+  , (318,alex_action_40)+  , (317,alex_action_41)+  , (316,alex_action_42)+  , (315,alex_action_43)+  , (314,alex_action_44)+  , (313,alex_action_45)+  , (312,alex_action_46)+  , (311,alex_action_47)+  , (310,alex_action_48)+  , (309,alex_action_49)+  , (308,alex_action_50)+  , (307,alex_action_51)+  , (306,alex_action_52)+  , (305,alex_action_53)+  , (304,alex_action_54)+  , (303,alex_action_55)+  , (302,alex_action_56)+  , (301,alex_action_57)+  , (300,alex_action_58)+  , (299,alex_action_59)+  , (298,alex_action_60)+  , (297,alex_action_61)+  , (296,alex_action_62)+  , (295,alex_action_63)+  , (294,alex_action_64)+  , (293,alex_action_65)+  , (292,alex_action_66)+  , (291,alex_action_67)+  , (290,alex_action_68)+  , (289,alex_action_69)+  , (288,alex_action_70)+  , (287,alex_action_71)+  , (286,alex_action_72)+  , (285,alex_action_72)+  , (284,alex_action_72)+  , (283,alex_action_73)+  , (282,alex_action_73)+  , (281,alex_action_73)+  , (280,alex_action_74)+  , (279,alex_action_75)+  , (278,alex_action_76)+  , (277,alex_action_77)+  , (276,alex_action_78)+  , (275,alex_action_79)+  , (274,alex_action_80)+  , (273,alex_action_81)+  , (272,alex_action_82)+  , (271,alex_action_83)+  , (270,alex_action_84)+  , (269,alex_action_85)+  , (268,alex_action_86)+  , (267,alex_action_87)+  , (266,alex_action_88)+  , (265,alex_action_89)+  , (264,alex_action_90)+  , (263,alex_action_91)+  , (262,alex_action_92)+  , (261,alex_action_93)+  , (260,alex_action_94)+  , (259,alex_action_95)+  , (258,alex_action_96)+  , (257,alex_action_97)+  , (256,alex_action_98)+  , (255,alex_action_99)+  , (254,alex_action_100)+  , (253,alex_action_101)+  , (252,alex_action_102)+  , (251,alex_action_103)+  , (250,alex_action_104)+  , (249,alex_action_105)+  , (248,alex_action_106)+  , (247,alex_action_107)+  , (246,alex_action_108)+  , (245,alex_action_109)+  , (244,alex_action_110)+  , (243,alex_action_111)+  , (242,alex_action_112)+  , (241,alex_action_112)+  , (240,alex_action_112)+  , (239,alex_action_112)+  , (238,alex_action_112)+  , (237,alex_action_112)+  , (236,alex_action_112)+  , (235,alex_action_112)+  , (234,alex_action_113)+  , (233,alex_action_113)+  , (232,alex_action_113)+  , (231,alex_action_113)+  , (230,alex_action_113)+  , (229,alex_action_113)+  , (228,alex_action_113)+  , (227,alex_action_113)+  , (226,alex_action_113)+  , (225,alex_action_113)+  , (224,alex_action_113)+  , (223,alex_action_114)+  , (222,alex_action_114)+  , (221,alex_action_114)+  , (220,alex_action_114)+  , (219,alex_action_114)+  , (218,alex_action_114)+  , (217,alex_action_114)+  , (216,alex_action_114)+  , (215,alex_action_114)+  , (214,alex_action_114)+  , (213,alex_action_114)+  , (212,alex_action_114)+  , (211,alex_action_114)+  , (210,alex_action_114)+  , (209,alex_action_114)+  , (208,alex_action_114)+  , (207,alex_action_114)+  , (206,alex_action_114)+  , (205,alex_action_114)+  , (204,alex_action_114)+  , (203,alex_action_114)+  , (202,alex_action_114)+  , (201,alex_action_114)+  , (200,alex_action_114)+  , (199,alex_action_114)+  , (198,alex_action_114)+  , (197,alex_action_114)+  , (196,alex_action_114)+  , (195,alex_action_114)+  , (194,alex_action_114)+  , (193,alex_action_114)+  , (192,alex_action_114)+  , (191,alex_action_114)+  , (190,alex_action_114)+  , (189,alex_action_114)+  , (188,alex_action_114)+  , (187,alex_action_114)+  , (186,alex_action_114)+  , (185,alex_action_114)+  , (184,alex_action_114)+  , (183,alex_action_114)+  , (182,alex_action_114)+  , (181,alex_action_114)+  , (180,alex_action_114)+  , (179,alex_action_114)+  , (178,alex_action_114)+  , (177,alex_action_114)+  , (176,alex_action_114)+  , (175,alex_action_114)+  , (174,alex_action_114)+  , (173,alex_action_114)+  , (172,alex_action_114)+  , (171,alex_action_114)+  , (170,alex_action_114)+  , (169,alex_action_114)+  , (168,alex_action_114)+  , (167,alex_action_114)+  , (166,alex_action_114)+  , (165,alex_action_114)+  , (164,alex_action_114)+  , (163,alex_action_114)+  , (162,alex_action_114)+  , (161,alex_action_114)+  , (160,alex_action_114)+  , (159,alex_action_114)+  , (158,alex_action_114)+  , (157,alex_action_114)+  , (156,alex_action_114)+  , (155,alex_action_114)+  , (154,alex_action_114)+  , (153,alex_action_114)+  , (152,alex_action_114)+  , (151,alex_action_114)+  , (150,alex_action_114)+  , (149,alex_action_114)+  , (148,alex_action_114)+  , (147,alex_action_114)+  , (146,alex_action_114)+  , (145,alex_action_114)+  , (144,alex_action_114)+  , (143,alex_action_114)+  , (142,alex_action_114)+  , (141,alex_action_114)+  , (140,alex_action_114)+  , (139,alex_action_114)+  , (138,alex_action_114)+  , (137,alex_action_114)+  , (136,alex_action_114)+  , (135,alex_action_114)+  , (134,alex_action_114)+  , (133,alex_action_114)+  , (132,alex_action_114)+  , (131,alex_action_114)+  , (130,alex_action_114)+  , (129,alex_action_114)+  , (128,alex_action_114)+  , (127,alex_action_114)+  , (126,alex_action_114)+  , (125,alex_action_114)+  , (124,alex_action_114)+  , (123,alex_action_114)+  , (122,alex_action_114)+  , (121,alex_action_114)+  , (120,alex_action_114)+  , (119,alex_action_114)+  , (118,alex_action_114)+  , (117,alex_action_114)+  , (116,alex_action_114)+  , (115,alex_action_114)+  , (114,alex_action_114)+  , (113,alex_action_114)+  , (112,alex_action_114)+  , (111,alex_action_114)+  , (110,alex_action_114)+  , (109,alex_action_114)+  , (108,alex_action_114)+  , (107,alex_action_114)+  , (106,alex_action_114)+  , (105,alex_action_114)+  , (104,alex_action_114)+  , (103,alex_action_114)+  , (102,alex_action_114)+  , (101,alex_action_114)+  , (100,alex_action_114)+  , (99,alex_action_114)+  , (98,alex_action_114)+  , (97,alex_action_114)+  , (96,alex_action_114)+  , (95,alex_action_114)+  , (94,alex_action_114)+  , (93,alex_action_114)+  , (92,alex_action_114)+  , (91,alex_action_114)+  , (90,alex_action_114)+  , (89,alex_action_114)+  , (88,alex_action_114)+  , (87,alex_action_114)+  , (86,alex_action_114)+  , (85,alex_action_114)+  , (84,alex_action_114)+  , (83,alex_action_114)+  , (82,alex_action_114)+  , (81,alex_action_114)+  , (80,alex_action_114)+  , (79,alex_action_114)+  , (78,alex_action_114)+  , (77,alex_action_114)+  , (76,alex_action_114)+  , (75,alex_action_114)+  , (74,alex_action_114)+  , (73,alex_action_114)+  , (72,alex_action_114)+  , (71,alex_action_114)+  , (70,alex_action_114)+  , (69,alex_action_114)+  , (68,alex_action_114)+  , (67,alex_action_114)+  , (66,alex_action_114)+  , (65,alex_action_114)+  , (64,alex_action_114)+  , (63,alex_action_114)+  , (62,alex_action_114)+  , (61,alex_action_114)+  , (60,alex_action_114)+  , (59,alex_action_114)+  , (58,alex_action_114)+  , (57,alex_action_114)+  , (56,alex_action_114)+  , (55,alex_action_114)+  , (54,alex_action_114)+  , (53,alex_action_114)+  , (52,alex_action_114)+  , (51,alex_action_114)+  , (50,alex_action_114)+  , (49,alex_action_114)+  , (48,alex_action_114)+  , (47,alex_action_114)+  , (46,alex_action_114)+  , (45,alex_action_114)+  , (44,alex_action_114)+  , (43,alex_action_114)+  , (42,alex_action_114)+  , (41,alex_action_114)+  , (40,alex_action_114)+  , (39,alex_action_114)+  , (38,alex_action_114)+  , (37,alex_action_114)+  , (36,alex_action_114)+  , (35,alex_action_114)+  , (34,alex_action_114)+  , (33,alex_action_114)+  , (32,alex_action_114)+  , (31,alex_action_114)+  , (30,alex_action_114)+  , (29,alex_action_114)+  , (28,alex_action_114)+  , (27,alex_action_114)+  , (26,alex_action_114)+  , (25,alex_action_114)+  , (24,alex_action_114)+  , (23,alex_action_114)+  , (22,alex_action_114)+  , (21,alex_action_114)+  , (20,alex_action_114)+  , (19,alex_action_114)+  , (18,alex_action_114)+  , (17,alex_action_114)+  , (16,alex_action_114)+  , (15,alex_action_114)+  , (14,alex_action_114)+  , (13,alex_action_114)+  , (12,alex_action_114)+  , (11,alex_action_114)+  , (10,alex_action_114)+  , (9,alex_action_114)+  , (8,alex_action_114)+  , (7,alex_action_114)+  , (6,alex_action_114)+  , (5,alex_action_114)+  , (4,alex_action_114)+  , (3,alex_action_114)+  , (2,alex_action_114)+  , (1,alex_action_114)+  , (0,alex_action_114)+  ]++{-# LINE 239 "src/full/Agda/Syntax/Parser/Lexer.x" #-}+++-- | This is the initial state for parsing a regular, non-literate file.+normal :: LexState+normal = 0+++{-| The layout state. Entered when we see a layout keyword ('withLayout') and+    exited either when seeing an open brace ('openBrace') or at the next token+    ('newLayoutContext').++    Update: we don't use braces for layout anymore.+-}+layout :: LexState+layout = layout_+++{-| The state inside a pragma.+-}+pragma :: LexState+pragma = pragma_++-- | The state inside a FOREIGN pragma. This needs to be different so that we don't+--   lex further strings as pragma keywords.+fpragma :: LexState+fpragma = fpragma_++{-| We enter this state from 'newLayoutContext' when the token following a+    layout keyword is to the left of (or at the same column as) the current+    layout context. Example:++    > data Empty : Set where+    > foo : Empty -> Nat++    Here the second line is not part of the @where@ clause since it is has the+    same indentation as the @data@ definition. What we have to do is insert an+    empty layout block @{}@ after the @where@. The only thing that can happen+    in this state is that 'emptyLayout' is executed, generating the closing+    brace. The open brace is generated when entering by 'newLayoutContext'.+-}+empty_layout :: LexState+empty_layout = empty_layout_+++-- | This state is entered at the beginning of each line. You can't lex+--   anything in this state, and to exit you have to check the layout rule.+--   Done with 'offsideRule'.+bol :: LexState+bol = bol_+++-- | This state can only be entered by the parser. In this state you can only+--   lex the keywords @using@, @hiding@, @renaming@ and @to@. Moreover they are+--   only keywords in this particular state. The lexer will never enter this+--   state by itself, that has to be done in the parser.+imp_dir :: LexState+imp_dir = imp_dir_+++-- | Return the next token. This is the function used by Happy in the parser.+--+--   @lexer k = 'lexToken' >>= k@+lexer :: (Token -> Parser a) -> Parser a+lexer k = lexToken >>= k++-- | Do not use this function; it sets the 'ParseFlags' to+-- 'undefined'.+alexScan :: AlexInput -> Int -> AlexReturn (LexAction Token)++-- | This is the main lexing function generated by Alex.+alexScanUser :: ([LexState], ParseFlags) -> AlexInput -> Int -> AlexReturn (LexAction Token)++++bol_,code,empty_layout_,fpragma_,imp_dir_,layout_,pragma_ :: Int+bol_ = 1+code = 2+empty_layout_ = 3+fpragma_ = 4+imp_dir_ = 5+layout_ = 6+pragma_ = 7+alex_action_2 =  beginWith pragma  $ symbol SymOpenPragma +alex_action_3 =  beginWith fpragma $ symbol SymOpenPragma +alex_action_4 =  endWith $ symbol SymClosePragma +alex_action_5 =  keyword KwBUILTIN +alex_action_6 =  keyword KwCATCHALL +alex_action_7 =  endWith $ beginWith fpragma $ keyword KwCOMPILE +alex_action_8 =  endWith $ beginWith fpragma $ keyword KwFOREIGN +alex_action_9 =  keyword KwDISPLAY +alex_action_10 =  keyword KwETA +alex_action_11 =  keyword KwIMPOSSIBLE +alex_action_12 =  keyword KwINJECTIVE +alex_action_13 =  keyword KwINLINE +alex_action_14 =  keyword KwNOINLINE +alex_action_15 =  keyword KwLINE +alex_action_16 =  keyword KwMEASURE +alex_action_17 =  keyword KwNO_POSITIVITY_CHECK +alex_action_18 =  keyword KwNO_TERMINATION_CHECK +alex_action_19 =  keyword KwNO_UNIVERSE_CHECK +alex_action_20 =  keyword KwNON_TERMINATING +alex_action_21 =  keyword KwOPTIONS +alex_action_22 =  keyword KwPOLARITY +alex_action_23 =  keyword KwREWRITE +alex_action_24 =  keyword KwSTATIC +alex_action_25 =  keyword KwTERMINATING +alex_action_26 =  keyword KwWARNING_ON_USAGE +alex_action_27 =  withInterval $ TokString +alex_action_28 =  withInterval $ TokString +alex_action_29 =  nestedComment +alex_action_30 =  symbol SymEndComment +alex_action_31 =  symbol SymEndComment +alex_action_32 =  withInterval TokComment +alex_action_34 =  begin bol_ +alex_action_36 =  offsideRule +alex_action_38 =  endWith newLayoutContext +alex_action_39 =  emptyLayout +alex_action_40 =  keyword KwLet +alex_action_41 =  keyword KwIn +alex_action_42 =  keyword KwWhere +alex_action_43 =  keyword KwDo +alex_action_44 =  keyword KwField +alex_action_45 =  keyword KwWith +alex_action_46 =  keyword KwRewrite +alex_action_47 =  keyword KwPostulate +alex_action_48 =  keyword KwPrimitive +alex_action_49 =  keyword KwOpen +alex_action_50 =  keyword KwImport +alex_action_51 =  keyword KwModule +alex_action_52 =  keyword KwData +alex_action_53 =  keyword KwCoData +alex_action_54 =  keyword KwRecord +alex_action_55 =  keyword KwConstructor +alex_action_56 =  keyword KwInductive +alex_action_57 =  keyword KwCoInductive +alex_action_58 =  keyword KwEta +alex_action_59 =  keyword KwNoEta +alex_action_60 =  keyword KwInfix +alex_action_61 =  keyword KwInfixL +alex_action_62 =  keyword KwInfixR +alex_action_63 =  keyword KwMutual +alex_action_64 =  keyword KwAbstract +alex_action_65 =  keyword KwPrivate +alex_action_66 =  keyword KwInstance +alex_action_67 =  keyword KwOverlap +alex_action_68 =  keyword KwMacro +alex_action_69 =  keyword KwSet +alex_action_70 =  keyword KwProp +alex_action_71 =  keyword KwForall +alex_action_72 =  withInterval' (read . drop 3) TokSetN +alex_action_73 =  withInterval' (read . drop 4) TokPropN +alex_action_74 =  keyword KwQuoteGoal +alex_action_75 =  keyword KwQuoteContext +alex_action_76 =  keyword KwQuote +alex_action_77 =  keyword KwQuoteTerm +alex_action_78 =  keyword KwUnquote +alex_action_79 =  keyword KwUnquoteDecl +alex_action_80 =  keyword KwUnquoteDef  +alex_action_81 =  keyword KwTactic +alex_action_82 =  keyword KwSyntax +alex_action_83 =  keyword KwPatternSyn +alex_action_84 =  keyword KwVariable +alex_action_85 =  keyword KwUsing +alex_action_86 =  keyword KwHiding +alex_action_87 =  keyword KwRenaming +alex_action_88 =  endWith $ keyword KwTo +alex_action_89 =  keyword KwPublic +alex_action_90 =  hole +alex_action_91 =  symbol SymEllipsis +alex_action_92 =  symbol SymDotDot +alex_action_93 =  symbol SymDot +alex_action_94 =  symbol SymSemi +alex_action_95 =  symbol SymColon +alex_action_96 =  symbol SymEqual +alex_action_97 =  symbol SymUnderscore +alex_action_98 =  symbol SymQuestionMark +alex_action_99 =  symbol SymBar +alex_action_100 =  symbol SymOpenIdiomBracket +alex_action_101 =  symbol SymCloseIdiomBracket +alex_action_102 =  symbol SymOpenParen +alex_action_103 =  symbol SymCloseParen +alex_action_104 =  symbol SymArrow +alex_action_105 =  symbol SymLambda +alex_action_106 =  symbol SymAs +alex_action_107 =  symbol SymDoubleOpenBrace +alex_action_108 =  symbol SymOpenBrace +alex_action_109 =  symbol SymCloseBrace +alex_action_110 =  litChar +alex_action_111 =  litString +alex_action_112 =  literal LitNat +alex_action_113 =  literal LitFloat +alex_action_114 =  identifier  {-# LINE 1 "templates/GenericTemplate.hs" #-} -- ----------------------------------------------------------------------------- -- ALEX TEMPLATE
dist/build/Agda/Syntax/Parser/Parser.hs view
@@ -3,7533 +3,8203 @@ #if __GLASGOW_HASKELL__ >= 710 {-# OPTIONS_GHC -XPartialTypeSignatures #-} #endif-{-# LANGUAGE TupleSections #-}--{-| The parser is generated by Happy (<http://www.haskell.org/happy>).- -- - Ideally, ranges should be as precise as possible, to get messages that- - emphasize precisely the faulting term(s) upon error.- -- - However, interactive highlighting is only applied at the end of each- - mutual block, keywords are only highlighted once (see- - `TypeChecking.Rules.Decl'). So if the ranges of two declarations- - interleave, one must ensure that keyword ranges are not included in- - the intersection. (Otherwise they are uncolored by the interactive- - highlighting.)- -- -}-module Agda.Syntax.Parser.Parser (-      moduleParser-    , moduleNameParser-    , exprParser-    , exprWhereParser-    , tokensParser-    , holeContentParser-    , splitOnDots  -- only used by the internal test-suite-    ) where--import Control.Monad--import Data.Char-import Data.Functor-import Data.List-import Data.Maybe-import Data.Monoid-import qualified Data.Traversable as T--import Debug.Trace--import Agda.Syntax.Position hiding (tests)-import Agda.Syntax.Parser.Monad-import Agda.Syntax.Parser.Lexer-import Agda.Syntax.Parser.Tokens-import Agda.Syntax.Concrete as C-import Agda.Syntax.Concrete.Pattern-import Agda.Syntax.Concrete.Pretty ()-import Agda.Syntax.Common-import Agda.Syntax.Fixity-import Agda.Syntax.Notation-import Agda.Syntax.Literal--import Agda.TypeChecking.Positivity.Occurrence hiding (tests)--import Agda.Utils.Either hiding (tests)-import Agda.Utils.Functor-import Agda.Utils.Hash-import Agda.Utils.List ( spanJust, chopWhen )-import Agda.Utils.Monad-import Agda.Utils.Pretty-import Agda.Utils.Singleton-import Agda.Utils.Tuple--import Agda.Utils.Impossible-#include "undefined.h"-import qualified Data.Array as Happy_Data_Array-import qualified 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.19.9--newtype HappyAbsSyn  = HappyAbsSyn HappyAny-#if __GLASGOW_HASKELL__ >= 607-type HappyAny = Happy_GHC_Exts.Any-#else-type HappyAny = forall a . a-#endif-happyIn10 :: ([Token]) -> (HappyAbsSyn )-happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn10 #-}-happyOut10 :: (HappyAbsSyn ) -> ([Token])-happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut10 #-}-happyIn11 :: ([Token]) -> (HappyAbsSyn )-happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn11 #-}-happyOut11 :: (HappyAbsSyn ) -> ([Token])-happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut11 #-}-happyIn12 :: (Token) -> (HappyAbsSyn )-happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn12 #-}-happyOut12 :: (HappyAbsSyn ) -> (Token)-happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut12 #-}-happyIn13 :: (([Pragma], [Declaration])) -> (HappyAbsSyn )-happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn13 #-}-happyOut13 :: (HappyAbsSyn ) -> (([Pragma], [Declaration]))-happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut13 #-}-happyIn14 :: (()) -> (HappyAbsSyn )-happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn14 #-}-happyOut14 :: (HappyAbsSyn ) -> (())-happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut14 #-}-happyIn15 :: (()) -> (HappyAbsSyn )-happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn15 #-}-happyOut15 :: (HappyAbsSyn ) -> (())-happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut15 #-}-happyIn16 :: (Interval) -> (HappyAbsSyn )-happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn16 #-}-happyOut16 :: (HappyAbsSyn ) -> (Interval)-happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut16 #-}-happyIn17 :: (()) -> (HappyAbsSyn )-happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn17 #-}-happyOut17 :: (HappyAbsSyn ) -> (())-happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut17 #-}-happyIn18 :: (Integer) -> (HappyAbsSyn )-happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn18 #-}-happyOut18 :: (HappyAbsSyn ) -> (Integer)-happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut18 #-}-happyIn19 :: (Name) -> (HappyAbsSyn )-happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn19 #-}-happyOut19 :: (HappyAbsSyn ) -> (Name)-happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut19 #-}-happyIn20 :: ([Name]) -> (HappyAbsSyn )-happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn20 #-}-happyOut20 :: (HappyAbsSyn ) -> ([Name])-happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut20 #-}-happyIn21 :: (Range) -> (HappyAbsSyn )-happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn21 #-}-happyOut21 :: (HappyAbsSyn ) -> (Range)-happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut21 #-}-happyIn22 :: (Arg Name) -> (HappyAbsSyn )-happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn22 #-}-happyOut22 :: (HappyAbsSyn ) -> (Arg Name)-happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut22 #-}-happyIn23 :: ([Arg Name]) -> (HappyAbsSyn )-happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn23 #-}-happyOut23 :: (HappyAbsSyn ) -> ([Arg Name])-happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut23 #-}-happyIn24 :: ([Arg Name]) -> (HappyAbsSyn )-happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn24 #-}-happyOut24 :: (HappyAbsSyn ) -> ([Arg Name])-happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut24 #-}-happyIn25 :: (QName) -> (HappyAbsSyn )-happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn25 #-}-happyOut25 :: (HappyAbsSyn ) -> (QName)-happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut25 #-}-happyIn26 :: (QName) -> (HappyAbsSyn )-happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn26 #-}-happyOut26 :: (HappyAbsSyn ) -> (QName)-happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut26 #-}-happyIn27 :: (Name) -> (HappyAbsSyn )-happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn27 #-}-happyOut27 :: (HappyAbsSyn ) -> (Name)-happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut27 #-}-happyIn28 :: ([Name]) -> (HappyAbsSyn )-happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn28 #-}-happyOut28 :: (HappyAbsSyn ) -> ([Name])-happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut28 #-}-happyIn29 :: ([Name]) -> (HappyAbsSyn )-happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn29 #-}-happyOut29 :: (HappyAbsSyn ) -> ([Name])-happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut29 #-}-happyIn30 :: (Either [Name] [Expr]) -> (HappyAbsSyn )-happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn30 #-}-happyOut30 :: (HappyAbsSyn ) -> (Either [Name] [Expr])-happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut30 #-}-happyIn31 :: ([WithHiding Name]) -> (HappyAbsSyn )-happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn31 #-}-happyOut31 :: (HappyAbsSyn ) -> ([WithHiding Name])-happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut31 #-}-happyIn32 :: ([String]) -> (HappyAbsSyn )-happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn32 #-}-happyOut32 :: (HappyAbsSyn ) -> ([String])-happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut32 #-}-happyIn33 :: (String) -> (HappyAbsSyn )-happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn33 #-}-happyOut33 :: (HappyAbsSyn ) -> (String)-happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut33 #-}-happyIn34 :: ([(Interval, String)]) -> (HappyAbsSyn )-happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn34 #-}-happyOut34 :: (HappyAbsSyn ) -> ([(Interval, String)])-happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut34 #-}-happyIn35 :: ([(Interval, String)]) -> (HappyAbsSyn )-happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn35 #-}-happyOut35 :: (HappyAbsSyn ) -> ([(Interval, String)])-happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut35 #-}-happyIn36 :: (Name) -> (HappyAbsSyn )-happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn36 #-}-happyOut36 :: (HappyAbsSyn ) -> (Name)-happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut36 #-}-happyIn37 :: (QName) -> (HappyAbsSyn )-happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn37 #-}-happyOut37 :: (HappyAbsSyn ) -> (QName)-happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut37 #-}-happyIn38 :: ([QName]) -> (HappyAbsSyn )-happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn38 #-}-happyOut38 :: (HappyAbsSyn ) -> ([QName])-happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut38 #-}-happyIn39 :: (Expr) -> (HappyAbsSyn )-happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn39 #-}-happyOut39 :: (HappyAbsSyn ) -> (Expr)-happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut39 #-}-happyIn40 :: (Expr) -> (HappyAbsSyn )-happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn40 #-}-happyOut40 :: (HappyAbsSyn ) -> (Expr)-happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut40 #-}-happyIn41 :: ([Expr]) -> (HappyAbsSyn )-happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn41 #-}-happyOut41 :: (HappyAbsSyn ) -> ([Expr])-happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut41 #-}-happyIn42 :: ([Expr]) -> (HappyAbsSyn )-happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn42 #-}-happyOut42 :: (HappyAbsSyn ) -> ([Expr])-happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut42 #-}-happyIn43 :: (Expr) -> (HappyAbsSyn )-happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn43 #-}-happyOut43 :: (HappyAbsSyn ) -> (Expr)-happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut43 #-}-happyIn44 :: (Maybe Expr) -> (HappyAbsSyn )-happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn44 #-}-happyOut44 :: (HappyAbsSyn ) -> (Maybe Expr)-happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut44 #-}-happyIn45 :: (Expr) -> (HappyAbsSyn )-happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn45 #-}-happyOut45 :: (HappyAbsSyn ) -> (Expr)-happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut45 #-}-happyIn46 :: ([Expr]) -> (HappyAbsSyn )-happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn46 #-}-happyOut46 :: (HappyAbsSyn ) -> ([Expr])-happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut46 #-}-happyIn47 :: ([Expr]) -> (HappyAbsSyn )-happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn47 #-}-happyOut47 :: (HappyAbsSyn ) -> ([Expr])-happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut47 #-}-happyIn48 :: (Expr) -> (HappyAbsSyn )-happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn48 #-}-happyOut48 :: (HappyAbsSyn ) -> (Expr)-happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut48 #-}-happyIn49 :: (Expr) -> (HappyAbsSyn )-happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn49 #-}-happyOut49 :: (HappyAbsSyn ) -> (Expr)-happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut49 #-}-happyIn50 :: (Expr) -> (HappyAbsSyn )-happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn50 #-}-happyOut50 :: (HappyAbsSyn ) -> (Expr)-happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut50 #-}-happyIn51 :: (RecordAssignments) -> (HappyAbsSyn )-happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn51 #-}-happyOut51 :: (HappyAbsSyn ) -> (RecordAssignments)-happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut51 #-}-happyIn52 :: (RecordAssignments) -> (HappyAbsSyn )-happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn52 #-}-happyOut52 :: (HappyAbsSyn ) -> (RecordAssignments)-happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut52 #-}-happyIn53 :: (RecordAssignment) -> (HappyAbsSyn )-happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn53 #-}-happyOut53 :: (HappyAbsSyn ) -> (RecordAssignment)-happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut53 #-}-happyIn54 :: (ModuleAssignment) -> (HappyAbsSyn )-happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn54 #-}-happyOut54 :: (HappyAbsSyn ) -> (ModuleAssignment)-happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut54 #-}-happyIn55 :: ([FieldAssignment]) -> (HappyAbsSyn )-happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn55 #-}-happyOut55 :: (HappyAbsSyn ) -> ([FieldAssignment])-happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut55 #-}-happyIn56 :: ([FieldAssignment]) -> (HappyAbsSyn )-happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn56 #-}-happyOut56 :: (HappyAbsSyn ) -> ([FieldAssignment])-happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut56 #-}-happyIn57 :: (FieldAssignment) -> (HappyAbsSyn )-happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn57 #-}-happyOut57 :: (HappyAbsSyn ) -> (FieldAssignment)-happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut57 #-}-happyIn58 :: (Telescope) -> (HappyAbsSyn )-happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn58 #-}-happyOut58 :: (HappyAbsSyn ) -> (Telescope)-happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut58 #-}-happyIn59 :: (Telescope) -> (HappyAbsSyn )-happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn59 #-}-happyOut59 :: (HappyAbsSyn ) -> (Telescope)-happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut59 #-}-happyIn60 :: ([TypedBindings]) -> (HappyAbsSyn )-happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn60 #-}-happyOut60 :: (HappyAbsSyn ) -> ([TypedBindings])-happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut60 #-}-happyIn61 :: (TypedBindings) -> (HappyAbsSyn )-happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn61 #-}-happyOut61 :: (HappyAbsSyn ) -> (TypedBindings)-happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut61 #-}-happyIn62 :: (TypedBindings) -> (HappyAbsSyn )-happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn62 #-}-happyOut62 :: (HappyAbsSyn ) -> (TypedBindings)-happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut62 #-}-happyIn63 :: (TypedBindings) -> (HappyAbsSyn )-happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn63 #-}-happyOut63 :: (HappyAbsSyn ) -> (TypedBindings)-happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut63 #-}-happyIn64 :: ([LamBinding]) -> (HappyAbsSyn )-happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn64 #-}-happyOut64 :: (HappyAbsSyn ) -> ([LamBinding])-happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut64 #-}-happyIn65 :: (Either ([LamBinding], Hiding) [Expr]) -> (HappyAbsSyn )-happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn65 #-}-happyOut65 :: (HappyAbsSyn ) -> (Either ([LamBinding], Hiding) [Expr])-happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut65 #-}-happyIn66 :: ([Either Hiding LamBinding]) -> (HappyAbsSyn )-happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn66 #-}-happyOut66 :: (HappyAbsSyn ) -> ([Either Hiding LamBinding])-happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut66 #-}-happyIn67 :: (Either [Either Hiding LamBinding] [Expr]) -> (HappyAbsSyn )-happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn67 #-}-happyOut67 :: (HappyAbsSyn ) -> (Either [Either Hiding LamBinding] [Expr])-happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut67 #-}-happyIn68 :: (LamClause) -> (HappyAbsSyn )-happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn68 #-}-happyOut68 :: (HappyAbsSyn ) -> (LamClause)-happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut68 #-}-happyIn69 :: (LamClause) -> (HappyAbsSyn )-happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn69 #-}-happyOut69 :: (HappyAbsSyn ) -> (LamClause)-happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut69 #-}-happyIn70 :: (LamClause) -> (HappyAbsSyn )-happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn70 #-}-happyOut70 :: (HappyAbsSyn ) -> (LamClause)-happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut70 #-}-happyIn71 :: ([LamClause]) -> (HappyAbsSyn )-happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn71 #-}-happyOut71 :: (HappyAbsSyn ) -> ([LamClause])-happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut71 #-}-happyIn72 :: ([LamClause]) -> (HappyAbsSyn )-happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn72 #-}-happyOut72 :: (HappyAbsSyn ) -> ([LamClause])-happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut72 #-}-happyIn73 :: ([LamBinding]) -> (HappyAbsSyn )-happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn73 #-}-happyOut73 :: (HappyAbsSyn ) -> ([LamBinding])-happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut73 #-}-happyIn74 :: ([LamBinding]) -> (HappyAbsSyn )-happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn74 #-}-happyOut74 :: (HappyAbsSyn ) -> ([LamBinding])-happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut74 #-}-happyIn75 :: ([LamBinding]) -> (HappyAbsSyn )-happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn75 #-}-happyOut75 :: (HappyAbsSyn ) -> ([LamBinding])-happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut75 #-}-happyIn76 :: ([LamBinding]) -> (HappyAbsSyn )-happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn76 #-}-happyOut76 :: (HappyAbsSyn ) -> ([LamBinding])-happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut76 #-}-happyIn77 :: (Either [LamBinding] [Expr]) -> (HappyAbsSyn )-happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn77 #-}-happyOut77 :: (HappyAbsSyn ) -> (Either [LamBinding] [Expr])-happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut77 #-}-happyIn78 :: ([DoStmt]) -> (HappyAbsSyn )-happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn78 #-}-happyOut78 :: (HappyAbsSyn ) -> ([DoStmt])-happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut78 #-}-happyIn79 :: (DoStmt) -> (HappyAbsSyn )-happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn79 #-}-happyOut79 :: (HappyAbsSyn ) -> (DoStmt)-happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut79 #-}-happyIn80 :: ([LamClause]) -> (HappyAbsSyn )-happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn80 #-}-happyOut80 :: (HappyAbsSyn ) -> ([LamClause])-happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut80 #-}-happyIn81 :: (ImportDirective) -> (HappyAbsSyn )-happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn81 #-}-happyOut81 :: (HappyAbsSyn ) -> (ImportDirective)-happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut81 #-}-happyIn82 :: ([ImportDirective]) -> (HappyAbsSyn )-happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn82 #-}-happyOut82 :: (HappyAbsSyn ) -> ([ImportDirective])-happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut82 #-}-happyIn83 :: (ImportDirective) -> (HappyAbsSyn )-happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn83 #-}-happyOut83 :: (HappyAbsSyn ) -> (ImportDirective)-happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut83 #-}-happyIn84 :: ((Using, Range)) -> (HappyAbsSyn )-happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn84 #-}-happyOut84 :: (HappyAbsSyn ) -> ((Using, Range))-happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut84 #-}-happyIn85 :: (([ImportedName], Range)) -> (HappyAbsSyn )-happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn85 #-}-happyOut85 :: (HappyAbsSyn ) -> (([ImportedName], Range))-happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut85 #-}-happyIn86 :: (([Renaming] , Range)) -> (HappyAbsSyn )-happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn86 #-}-happyOut86 :: (HappyAbsSyn ) -> (([Renaming] , Range))-happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut86 #-}-happyIn87 :: ([Renaming]) -> (HappyAbsSyn )-happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn87 #-}-happyOut87 :: (HappyAbsSyn ) -> ([Renaming])-happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut87 #-}-happyIn88 :: (Renaming) -> (HappyAbsSyn )-happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn88 #-}-happyOut88 :: (HappyAbsSyn ) -> (Renaming)-happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut88 #-}-happyIn89 :: (ImportedName) -> (HappyAbsSyn )-happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn89 #-}-happyOut89 :: (HappyAbsSyn ) -> (ImportedName)-happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut89 #-}-happyIn90 :: (ImportedName) -> (HappyAbsSyn )-happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn90 #-}-happyOut90 :: (HappyAbsSyn ) -> (ImportedName)-happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut90 #-}-happyIn91 :: ([ImportedName]) -> (HappyAbsSyn )-happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn91 #-}-happyOut91 :: (HappyAbsSyn ) -> ([ImportedName])-happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut91 #-}-happyIn92 :: ([ImportedName]) -> (HappyAbsSyn )-happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn92 #-}-happyOut92 :: (HappyAbsSyn ) -> ([ImportedName])-happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut92 #-}-happyIn93 :: (LHS) -> (HappyAbsSyn )-happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn93 #-}-happyOut93 :: (HappyAbsSyn ) -> (LHS)-happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut93 #-}-happyIn94 :: ([Expr]) -> (HappyAbsSyn )-happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn94 #-}-happyOut94 :: (HappyAbsSyn ) -> ([Expr])-happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut94 #-}-happyIn95 :: ([Expr]) -> (HappyAbsSyn )-happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn95 #-}-happyOut95 :: (HappyAbsSyn ) -> ([Expr])-happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut95 #-}-happyIn96 :: (HoleContent) -> (HappyAbsSyn )-happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn96 #-}-happyOut96 :: (HappyAbsSyn ) -> (HoleContent)-happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut96 #-}-happyIn97 :: (WhereClause) -> (HappyAbsSyn )-happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn97 #-}-happyOut97 :: (HappyAbsSyn ) -> (WhereClause)-happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut97 #-}-happyIn98 :: (ExprWhere) -> (HappyAbsSyn )-happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn98 #-}-happyOut98 :: (HappyAbsSyn ) -> (ExprWhere)-happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut98 #-}-happyIn99 :: ([Declaration]) -> (HappyAbsSyn )-happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn99 #-}-happyOut99 :: (HappyAbsSyn ) -> ([Declaration])-happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut99 #-}-happyIn100 :: ([Declaration]) -> (HappyAbsSyn )-happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn100 #-}-happyOut100 :: (HappyAbsSyn ) -> ([Declaration])-happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut100 #-}-happyIn101 :: ([Arg Declaration]) -> (HappyAbsSyn )-happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn101 #-}-happyOut101 :: (HappyAbsSyn ) -> ([Arg Declaration])-happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut101 #-}-happyIn102 :: ([Declaration]) -> (HappyAbsSyn )-happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn102 #-}-happyOut102 :: (HappyAbsSyn ) -> ([Declaration])-happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut102 #-}-happyIn103 :: (RHSOrTypeSigs) -> (HappyAbsSyn )-happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn103 #-}-happyOut103 :: (HappyAbsSyn ) -> (RHSOrTypeSigs)-happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut103 #-}-happyIn104 :: (Declaration) -> (HappyAbsSyn )-happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn104 #-}-happyOut104 :: (HappyAbsSyn ) -> (Declaration)-happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut104 #-}-happyIn105 :: (Declaration) -> (HappyAbsSyn )-happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn105 #-}-happyOut105 :: (HappyAbsSyn ) -> (Declaration)-happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut105 #-}-happyIn106 :: (Declaration) -> (HappyAbsSyn )-happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn106 #-}-happyOut106 :: (HappyAbsSyn ) -> (Declaration)-happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut106 #-}-happyIn107 :: (Declaration) -> (HappyAbsSyn )-happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn107 #-}-happyOut107 :: (HappyAbsSyn ) -> (Declaration)-happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut107 #-}-happyIn108 :: ((Name, IsInstance)) -> (HappyAbsSyn )-happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn108 #-}-happyOut108 :: (HappyAbsSyn ) -> ((Name, IsInstance))-happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut108 #-}-happyIn109 :: (Declaration) -> (HappyAbsSyn )-happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn109 #-}-happyOut109 :: (HappyAbsSyn ) -> (Declaration)-happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut109 #-}-happyIn110 :: ([Declaration]) -> (HappyAbsSyn )-happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn110 #-}-happyOut110 :: (HappyAbsSyn ) -> ([Declaration])-happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut110 #-}-happyIn111 :: (Declaration) -> (HappyAbsSyn )-happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn111 #-}-happyOut111 :: (HappyAbsSyn ) -> (Declaration)-happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut111 #-}-happyIn112 :: (Declaration) -> (HappyAbsSyn )-happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn112 #-}-happyOut112 :: (HappyAbsSyn ) -> (Declaration)-happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut112 #-}-happyIn113 :: (Declaration) -> (HappyAbsSyn )-happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn113 #-}-happyOut113 :: (HappyAbsSyn ) -> (Declaration)-happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut113 #-}-happyIn114 :: (Declaration) -> (HappyAbsSyn )-happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn114 #-}-happyOut114 :: (HappyAbsSyn ) -> (Declaration)-happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut114 #-}-happyIn115 :: (Declaration) -> (HappyAbsSyn )-happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn115 #-}-happyOut115 :: (HappyAbsSyn ) -> (Declaration)-happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut115 #-}-happyIn116 :: (Declaration) -> (HappyAbsSyn )-happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn116 #-}-happyOut116 :: (HappyAbsSyn ) -> (Declaration)-happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut116 #-}-happyIn117 :: (Declaration) -> (HappyAbsSyn )-happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn117 #-}-happyOut117 :: (HappyAbsSyn ) -> (Declaration)-happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut117 #-}-happyIn118 :: (Declaration) -> (HappyAbsSyn )-happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn118 #-}-happyOut118 :: (HappyAbsSyn ) -> (Declaration)-happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut118 #-}-happyIn119 :: (Declaration) -> (HappyAbsSyn )-happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn119 #-}-happyOut119 :: (HappyAbsSyn ) -> (Declaration)-happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut119 #-}-happyIn120 :: (Declaration) -> (HappyAbsSyn )-happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn120 #-}-happyOut120 :: (HappyAbsSyn ) -> (Declaration)-happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut120 #-}-happyIn121 :: ([Arg Name]) -> (HappyAbsSyn )-happyIn121 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn121 #-}-happyOut121 :: (HappyAbsSyn ) -> ([Arg Name])-happyOut121 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut121 #-}-happyIn122 :: ([RString]) -> (HappyAbsSyn )-happyIn122 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn122 #-}-happyOut122 :: (HappyAbsSyn ) -> ([RString])-happyOut122 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut122 #-}-happyIn123 :: ([NamedArg HoleName]) -> (HappyAbsSyn )-happyIn123 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn123 #-}-happyOut123 :: (HappyAbsSyn ) -> ([NamedArg HoleName])-happyOut123 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut123 #-}-happyIn124 :: (NamedArg HoleName) -> (HappyAbsSyn )-happyIn124 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn124 #-}-happyOut124 :: (HappyAbsSyn ) -> (NamedArg HoleName)-happyOut124 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut124 #-}-happyIn125 :: (HoleName) -> (HappyAbsSyn )-happyIn125 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn125 #-}-happyOut125 :: (HappyAbsSyn ) -> (HoleName)-happyOut125 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut125 #-}-happyIn126 :: (HoleName) -> (HappyAbsSyn )-happyIn126 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn126 #-}-happyOut126 :: (HappyAbsSyn ) -> (HoleName)-happyOut126 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut126 #-}-happyIn127 :: (RString) -> (HappyAbsSyn )-happyIn127 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn127 #-}-happyOut127 :: (HappyAbsSyn ) -> (RString)-happyOut127 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut127 #-}-happyIn128 :: (Maybe Range) -> (HappyAbsSyn )-happyIn128 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn128 #-}-happyOut128 :: (HappyAbsSyn ) -> (Maybe Range)-happyOut128 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut128 #-}-happyIn129 :: ([Declaration]) -> (HappyAbsSyn )-happyIn129 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn129 #-}-happyOut129 :: (HappyAbsSyn ) -> ([Declaration])-happyOut129 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut129 #-}-happyIn130 :: ([Expr]) -> (HappyAbsSyn )-happyIn130 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn130 #-}-happyOut130 :: (HappyAbsSyn ) -> ([Expr])-happyOut130 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut130 #-}-happyIn131 :: ([TypedBindings] -> Parser ModuleApplication) -> (HappyAbsSyn )-happyIn131 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn131 #-}-happyOut131 :: (HappyAbsSyn ) -> ([TypedBindings] -> Parser ModuleApplication)-happyOut131 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut131 #-}-happyIn132 :: (Declaration) -> (HappyAbsSyn )-happyIn132 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn132 #-}-happyOut132 :: (HappyAbsSyn ) -> (Declaration)-happyOut132 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut132 #-}-happyIn133 :: (Declaration) -> (HappyAbsSyn )-happyIn133 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn133 #-}-happyOut133 :: (HappyAbsSyn ) -> (Declaration)-happyOut133 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut133 #-}-happyIn134 :: (Name) -> (HappyAbsSyn )-happyIn134 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn134 #-}-happyOut134 :: (HappyAbsSyn ) -> (Name)-happyOut134 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut134 #-}-happyIn135 :: ([Declaration]) -> (HappyAbsSyn )-happyIn135 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn135 #-}-happyOut135 :: (HappyAbsSyn ) -> ([Declaration])-happyOut135 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut135 #-}-happyIn136 :: (Declaration) -> (HappyAbsSyn )-happyIn136 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn136 #-}-happyOut136 :: (HappyAbsSyn ) -> (Declaration)-happyOut136 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut136 #-}-happyIn137 :: (Pragma) -> (HappyAbsSyn )-happyIn137 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn137 #-}-happyOut137 :: (HappyAbsSyn ) -> (Pragma)-happyOut137 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut137 #-}-happyIn138 :: (Pragma) -> (HappyAbsSyn )-happyIn138 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn138 #-}-happyOut138 :: (HappyAbsSyn ) -> (Pragma)-happyOut138 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut138 #-}-happyIn139 :: (Pragma) -> (HappyAbsSyn )-happyIn139 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn139 #-}-happyOut139 :: (HappyAbsSyn ) -> (Pragma)-happyOut139 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut139 #-}-happyIn140 :: (Pragma) -> (HappyAbsSyn )-happyIn140 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn140 #-}-happyOut140 :: (HappyAbsSyn ) -> (Pragma)-happyOut140 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut140 #-}-happyIn141 :: (Pragma) -> (HappyAbsSyn )-happyIn141 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn141 #-}-happyOut141 :: (HappyAbsSyn ) -> (Pragma)-happyOut141 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut141 #-}-happyIn142 :: (Pragma) -> (HappyAbsSyn )-happyIn142 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn142 #-}-happyOut142 :: (HappyAbsSyn ) -> (Pragma)-happyOut142 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut142 #-}-happyIn143 :: (Pragma) -> (HappyAbsSyn )-happyIn143 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn143 #-}-happyOut143 :: (HappyAbsSyn ) -> (Pragma)-happyOut143 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut143 #-}-happyIn144 :: (Pragma) -> (HappyAbsSyn )-happyIn144 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn144 #-}-happyOut144 :: (HappyAbsSyn ) -> (Pragma)-happyOut144 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut144 #-}-happyIn145 :: (Pragma) -> (HappyAbsSyn )-happyIn145 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn145 #-}-happyOut145 :: (HappyAbsSyn ) -> (Pragma)-happyOut145 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut145 #-}-happyIn146 :: (Pragma) -> (HappyAbsSyn )-happyIn146 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn146 #-}-happyOut146 :: (HappyAbsSyn ) -> (Pragma)-happyOut146 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut146 #-}-happyIn147 :: (Pragma) -> (HappyAbsSyn )-happyIn147 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn147 #-}-happyOut147 :: (HappyAbsSyn ) -> (Pragma)-happyOut147 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut147 #-}-happyIn148 :: (Pragma) -> (HappyAbsSyn )-happyIn148 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn148 #-}-happyOut148 :: (HappyAbsSyn ) -> (Pragma)-happyOut148 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut148 #-}-happyIn149 :: (Pragma) -> (HappyAbsSyn )-happyIn149 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn149 #-}-happyOut149 :: (HappyAbsSyn ) -> (Pragma)-happyOut149 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut149 #-}-happyIn150 :: (Pragma) -> (HappyAbsSyn )-happyIn150 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn150 #-}-happyOut150 :: (HappyAbsSyn ) -> (Pragma)-happyOut150 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut150 #-}-happyIn151 :: (Pragma) -> (HappyAbsSyn )-happyIn151 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn151 #-}-happyOut151 :: (HappyAbsSyn ) -> (Pragma)-happyOut151 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut151 #-}-happyIn152 :: (Pragma) -> (HappyAbsSyn )-happyIn152 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn152 #-}-happyOut152 :: (HappyAbsSyn ) -> (Pragma)-happyOut152 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut152 #-}-happyIn153 :: (Pragma) -> (HappyAbsSyn )-happyIn153 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn153 #-}-happyOut153 :: (HappyAbsSyn ) -> (Pragma)-happyOut153 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut153 #-}-happyIn154 :: (Pragma) -> (HappyAbsSyn )-happyIn154 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn154 #-}-happyOut154 :: (HappyAbsSyn ) -> (Pragma)-happyOut154 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut154 #-}-happyIn155 :: (Pragma) -> (HappyAbsSyn )-happyIn155 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn155 #-}-happyOut155 :: (HappyAbsSyn ) -> (Pragma)-happyOut155 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut155 #-}-happyIn156 :: (Pragma) -> (HappyAbsSyn )-happyIn156 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn156 #-}-happyOut156 :: (HappyAbsSyn ) -> (Pragma)-happyOut156 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut156 #-}-happyIn157 :: (Pragma) -> (HappyAbsSyn )-happyIn157 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn157 #-}-happyOut157 :: (HappyAbsSyn ) -> (Pragma)-happyOut157 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut157 #-}-happyIn158 :: (Pragma) -> (HappyAbsSyn )-happyIn158 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn158 #-}-happyOut158 :: (HappyAbsSyn ) -> (Pragma)-happyOut158 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut158 #-}-happyIn159 :: (Pragma) -> (HappyAbsSyn )-happyIn159 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn159 #-}-happyOut159 :: (HappyAbsSyn ) -> (Pragma)-happyOut159 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut159 #-}-happyIn160 :: (Pragma) -> (HappyAbsSyn )-happyIn160 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn160 #-}-happyOut160 :: (HappyAbsSyn ) -> (Pragma)-happyOut160 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut160 #-}-happyIn161 :: (Pragma) -> (HappyAbsSyn )-happyIn161 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn161 #-}-happyOut161 :: (HappyAbsSyn ) -> (Pragma)-happyOut161 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut161 #-}-happyIn162 :: (Pragma) -> (HappyAbsSyn )-happyIn162 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn162 #-}-happyOut162 :: (HappyAbsSyn ) -> (Pragma)-happyOut162 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut162 #-}-happyIn163 :: (Pragma) -> (HappyAbsSyn )-happyIn163 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn163 #-}-happyOut163 :: (HappyAbsSyn ) -> (Pragma)-happyOut163 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut163 #-}-happyIn164 :: (Pragma) -> (HappyAbsSyn )-happyIn164 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn164 #-}-happyOut164 :: (HappyAbsSyn ) -> (Pragma)-happyOut164 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut164 #-}-happyIn165 :: (Pragma) -> (HappyAbsSyn )-happyIn165 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn165 #-}-happyOut165 :: (HappyAbsSyn ) -> (Pragma)-happyOut165 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut165 #-}-happyIn166 :: (Pragma) -> (HappyAbsSyn )-happyIn166 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn166 #-}-happyOut166 :: (HappyAbsSyn ) -> (Pragma)-happyOut166 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut166 #-}-happyIn167 :: (Pragma) -> (HappyAbsSyn )-happyIn167 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn167 #-}-happyOut167 :: (HappyAbsSyn ) -> (Pragma)-happyOut167 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut167 #-}-happyIn168 :: ([(Range, Occurrence)]) -> (HappyAbsSyn )-happyIn168 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn168 #-}-happyOut168 :: (HappyAbsSyn ) -> ([(Range, Occurrence)])-happyOut168 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut168 #-}-happyIn169 :: ((Range, Occurrence)) -> (HappyAbsSyn )-happyIn169 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn169 #-}-happyOut169 :: (HappyAbsSyn ) -> ((Range, Occurrence))-happyOut169 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut169 #-}-happyIn170 :: ([TypeSignature]) -> (HappyAbsSyn )-happyIn170 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn170 #-}-happyOut170 :: (HappyAbsSyn ) -> ([TypeSignature])-happyOut170 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut170 #-}-happyIn171 :: ([TypeSignature]) -> (HappyAbsSyn )-happyIn171 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn171 #-}-happyOut171 :: (HappyAbsSyn ) -> ([TypeSignature])-happyOut171 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut171 #-}-happyIn172 :: ([Arg TypeSignature]) -> (HappyAbsSyn )-happyIn172 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn172 #-}-happyOut172 :: (HappyAbsSyn ) -> ([Arg TypeSignature])-happyOut172 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut172 #-}-happyIn173 :: ([Arg TypeSignature]) -> (HappyAbsSyn )-happyIn173 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn173 #-}-happyOut173 :: (HappyAbsSyn ) -> ([Arg TypeSignature])-happyOut173 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut173 #-}-happyIn174 :: (((Maybe (Ranged Induction), Maybe HasEta, Maybe (Name, IsInstance)), [Declaration])) -> (HappyAbsSyn )-happyIn174 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn174 #-}-happyOut174 :: (HappyAbsSyn ) -> (((Maybe (Ranged Induction), Maybe HasEta, Maybe (Name, IsInstance)), [Declaration]))-happyOut174 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut174 #-}-happyIn175 :: ([RecordDirective]) -> (HappyAbsSyn )-happyIn175 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn175 #-}-happyOut175 :: (HappyAbsSyn ) -> ([RecordDirective])-happyOut175 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut175 #-}-happyIn176 :: (RecordDirective) -> (HappyAbsSyn )-happyIn176 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn176 #-}-happyOut176 :: (HappyAbsSyn ) -> (RecordDirective)-happyOut176 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut176 #-}-happyIn177 :: (Ranged HasEta) -> (HappyAbsSyn )-happyIn177 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn177 #-}-happyOut177 :: (HappyAbsSyn ) -> (Ranged HasEta)-happyOut177 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut177 #-}-happyIn178 :: (Ranged Induction) -> (HappyAbsSyn )-happyIn178 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn178 #-}-happyOut178 :: (HappyAbsSyn ) -> (Ranged Induction)-happyOut178 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut178 #-}-happyIn179 :: ([Declaration]) -> (HappyAbsSyn )-happyIn179 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn179 #-}-happyOut179 :: (HappyAbsSyn ) -> ([Declaration])-happyOut179 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut179 #-}-happyIn180 :: ([Declaration]) -> (HappyAbsSyn )-happyIn180 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn180 #-}-happyOut180 :: (HappyAbsSyn ) -> ([Declaration])-happyOut180 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut180 #-}-happyIn181 :: ([Declaration]) -> (HappyAbsSyn )-happyIn181 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn181 #-}-happyOut181 :: (HappyAbsSyn ) -> ([Declaration])-happyOut181 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut181 #-}-happyIn182 :: ([Declaration]) -> (HappyAbsSyn )-happyIn182 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn182 #-}-happyOut182 :: (HappyAbsSyn ) -> ([Declaration])-happyOut182 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut182 #-}-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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x56\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\xfa\x54\x08\x00\x00\x00\x48\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x44\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\x18\x41\x14\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x44\x00\x00\x00\x00\x48\x31\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x4d\x04\x00\x00\x00\x80\x14\x43\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\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\xa0\x4d\x04\x00\x00\x00\x80\x14\x43\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x80\x11\x44\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa1\x4f\x85\x00\x00\x00\x80\x1c\xcb\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x3d\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x83\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x44\x00\x00\x00\x00\x48\x31\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\xcb\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\xd4\x83\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x35\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x34\xbc\xf7\xfb\xdc\x09\x00\x00\x00\x48\xb1\x54\xa1\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\x20\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x02\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\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\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\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\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\x10\x00\x80\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\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\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\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\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\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\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\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\xa0\x4d\x04\x00\x00\x00\x80\x14\x43\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\xfe\xff\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\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\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\x48\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x80\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x11\x44\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x18\x41\x14\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\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\x10\x44\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x14\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\x02\x08\xa1\x4f\x85\x00\x00\x00\x80\x14\xcb\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\x48\xb1\xd4\x83\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x35\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x5c\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x3d\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x83\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\x48\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xda\x44\x00\x00\x00\x00\x48\x31\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\xc0\x34\xbc\xf7\xfb\xdc\x09\x00\x00\x00\x48\xb1\x54\xa1\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x41\x14\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x11\x44\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x10\xfa\x54\x08\x00\x00\x00\x48\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\x48\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\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\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\x48\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\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\xa0\x4d\x04\x00\x00\x00\x80\x14\x43\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\xfa\x54\x08\x00\x00\x00\x48\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\x48\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x40\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xda\x44\x00\x00\x00\x00\x48\x31\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\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\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\x02\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\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\x80\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\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\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\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\x02\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\x48\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\x48\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\x48\xb1\x54\xa1\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x41\x14\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\x18\x41\x14\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x10\xfa\x54\x08\x00\x00\x00\x48\xb1\x5c\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x3d\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\x48\xb1\x54\x83\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x44\x00\x00\x00\x00\x48\x31\x54\x81\x05\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\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\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\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\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\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\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\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\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\x20\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x14\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\x80\x11\x44\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xc3\x7b\xbf\xcf\x9d\x00\x00\x00\x80\x14\x4b\x95\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x18\x41\x14\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\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\x80\x11\x44\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x41\x14\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x01\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\x10\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\x60\x00\x00\x00\x00\x00\x00\x00\x80\x01\x40\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x41\x14\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\x80\x11\x44\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xc3\x7b\xbf\xcf\x9d\x00\x00\x00\x80\x14\x4b\x15\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\xda\x44\x00\x00\x00\x00\x48\x31\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x41\x14\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\x04\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\x18\x41\x14\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\x04\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\x80\x01\x40\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x20\x00\x80\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\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\x18\x00\x14\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\x40\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\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\x80\x01\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\x18\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\x10\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\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\x80\x11\x44\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x20\x00\x80\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\x40\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\x20\x80\x00\xfa\x54\x08\x00\x00\x00\x48\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x40\x14\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x08\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\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\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\x20\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\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\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\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\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\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\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\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\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\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\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\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x4d\x04\x00\x00\x00\x80\x14\x43\x15\x58\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\x04\x01\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\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x3d\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x20\x00\x80\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\x04\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\x40\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\x04\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\x40\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\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\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\x48\xb1\x54\xa1\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x15\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\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\x80\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\x40\x00\x00\x04\x01\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\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x04\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x14\x4b\x15\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\xfa\x54\x08\x00\x00\x00\x48\xb1\x54\xa1\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\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\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\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\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x10\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\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\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\x01\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\x80\x01\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\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\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\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\x80\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x80\x01\x40\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x20\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x40\x10\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x08\xa0\x4f\x85\x00\x00\x00\x80\x1c\x4b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\x80\x01\x40\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x14\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x44\x00\x00\x00\x00\x48\x31\x54\x81\x05\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\x40\x10\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xe3\xfb\xbf\xcf\x9d\x00\x00\x00\x80\x14\x4b\x15\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x80\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\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\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\x80\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x40\x10\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\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\x02\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\x00\x00\x00\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\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\x20\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\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\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\x20\x00\x80\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\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\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x04\x00\x40\x10\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\x00\x00\x00\x00\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\x80\x00\xfa\x54\x08\x00\x00\x00\xc8\xb1\xd4\x83\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x14\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\x80\x01\x40\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x14\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\x80\x01\x40\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x6c\xc3\x7b\xbf\xcf\x9d\x00\x00\x00\x80\x14\x4b\x95\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xe3\xfb\xbf\xcf\x9d\x00\x00\x00\x80\x14\x4b\x15\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--{-# NOINLINE happyExpListPerState #-}-happyExpListPerState st =-    token_strs_expected-  where token_strs = ["error","%dummy","%start_tokensParser","%start_exprParser","%start_exprWhereParser","%start_moduleParser","%start_moduleNameParser","%start_funclauseParser","%start_holeContentParser","Tokens","TokensR","Token","File","maybe_vclose","close","semi","beginImpDir","Int","Id","SpaceIds","DoubleCloseBrace","MaybeDottedId","MaybeDottedIds","ArgIds","QId","ModuleName","BId","SpaceBIds","CommaBIds","CommaBIdAndAbsurds","BIdsWithHiding","PragmaStrings","PragmaString","Strings","ForeignCode","PragmaName","PragmaQName","PragmaQNames","Expr","Expr1","WithExprs","Application","Expr2","LetBody","ExtendedOrAbsurdLam","Application3","Application3PossiblyEmpty","Expr3Curly","Expr3NoCurly","Expr3","RecordAssignments","RecordAssignments1","RecordAssignment","ModuleAssignment","FieldAssignments","FieldAssignments1","FieldAssignment","TeleArrow","Telescope1","TypedBindingss","TypedBindings","TBind","TBindWithHiding","LamBindings","AbsurdLamBindings","LamBinds","LamBindsAbsurd","NonAbsurdLamClause","AbsurdLamClause","LamClause","LamClauses","LamWhereClauses","ForallBindings","TypedUntypedBindings1","TypedUntypedBindings","DomainFreeBinding","DomainFreeBindingAbsurd","DoStmts","DoStmt","DoWhere","ImportDirective","ImportDirectives","ImportDirective1","Using","Hiding","RenamingDir","Renamings","Renaming","ImportName_","ImportName","CommaImportNames","CommaImportNames1","LHS","WithExpressions","RewriteEquations","HoleContent","WhereClause","ExprWhere","Declaration","TypeSigs","ArgTypeSigs","FunClause","RHS","Data","DataSig","Record","RecordSig","RecordConstructorName","Infix","Fields","Mutual","Abstract","Private","Instance","Macro","Postulate","Primitive","UnquoteDecl","Syntax","PatternSyn","PatternSynArgs","SimpleIds","HoleNames","HoleName","SimpleTopHole","SimpleHole","SimpleId","MaybeOpen","Open","OpenArgs","ModuleApplication","ModuleMacro","Module","Underscore","TopLevel","Pragma","DeclarationPragma","OptionsPragma","BuiltinPragma","RewritePragma","CompiledPragma","CompiledExportPragma","CompiledTypePragma","CompiledDataPragma","CompiledJSPragma","CompiledUHCPragma","CompiledDataUHCPragma","HaskellPragma","ForeignPragma","CompilePragma","StaticPragma","InlinePragma","NoInlinePragma","InjectivePragma","DisplayPragma","EtaPragma","NoTerminationCheckPragma","NonTerminatingPragma","TerminatingPragma","MeasurePragma","CatchallPragma","ImportPragma","ImportUHCPragma","ImpossiblePragma","NoPositivityCheckPragma","PolarityPragma","WarningOnUsagePragma","Polarities","Polarity","TypeSignatures","TypeSignatures1","ArgTypeSignatures","ArgTypeSignatures1","RecordDeclarations","RecordDirectives","RecordDirective","RecordEta","RecordInduction","Declarations","Declarations0","Declarations1","TopDeclarations","'abstract'","'codata'","'coinductive'","'constructor'","'data'","'eta-equality'","'field'","'forall'","'hiding'","'import'","'in'","'inductive'","'infix'","'infixl'","'infixr'","'instance'","'overlap'","'let'","'macro'","'module'","'mutual'","'no-eta-equality'","'open'","'pattern'","'postulate'","'primitive'","'private'","'Prop'","'public'","'quote'","'quoteContext'","'quoteGoal'","'quoteTerm'","'record'","'renaming'","'rewrite'","'Set'","'syntax'","'tactic'","'to'","'unquote'","'unquoteDecl'","'unquoteDef'","'using'","'where'","'do'","'with'","'BUILTIN'","'CATCHALL'","'COMPILED'","'COMPILED_DATA'","'COMPILED_DATA_UHC'","'COMPILED_EXPORT'","'COMPILED_JS'","'COMPILED_TYPE'","'COMPILED_UHC'","'DISPLAY'","'ETA'","'HASKELL'","'IMPORT'","'IMPORT_UHC'","'FOREIGN'","'COMPILE'","'IMPOSSIBLE'","'INJECTIVE'","'INLINE'","'NOINLINE'","'MEASURE'","'NO_TERMINATION_CHECK'","'NO_POSITIVITY_CHECK'","'NON_TERMINATING'","'OPTIONS'","'POLARITY'","'WARNING_ON_USAGE'","'REWRITE'","'STATIC'","'TERMINATING'","setN","tex","comment","'...'","'..'","'.'","';'","':'","'='","'_'","'?'","'->'","'\\\\'","'@'","'|'","'('","')'","'(|'","'|)'","'{{'","'}}'","'{'","'}'","vopen","vclose","vsemi","'{-#'","'#-}'","id","q_id","string","literal","%eof"]-        bit_start = st * 292-        bit_end = (st + 1) * 292-        read_bit = readArrayBit happyExpList-        bits = map read_bit [bit_start..bit_end - 1]-        bits_indexed = zip bits [0..291]-        token_strs_expected = concatMap f bits_indexed-        f (False, _) = []-        f (True, nr) = [token_strs !! nr]--happyActOffsets :: HappyAddr-happyActOffsets = HappyA# "\x00\x00\x8f\x0a\x8f\x0a\xb4\xff\x62\x02\xfd\x0d\xe8\x07\x00\x00\x2e\x05\xed\xff\x00\x00\x00\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x00\xf5\xff\x00\x00\x00\x00\x3b\x08\x8f\x0a\x20\x00\x00\x00\xca\x02\x00\x00\x48\x00\xd1\x03\x82\x00\x00\x00\x00\x00\x00\x00\xca\x00\x00\x00\x18\x0e\xfd\x0d\x00\x00\x68\x0e\x00\x00\xee\x00\x00\x00\x00\x00\x95\x01\x83\x0e\x00\x00\x00\x00\xa7\x01\x06\x07\x8f\x0a\x59\x07\x59\x08\x00\x00\x00\x00\x00\x00\x41\x01\x12\x01\xde\x01\x15\x01\xd3\x0e\xac\x08\x59\x07\xca\x08\x00\x00\x00\x00\x15\x01\x15\x01\xc0\x04\x16\x00\x15\x01\x15\x01\x15\x01\x00\x00\x6f\x00\x60\x01\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x01\x00\x00\x00\x00\x00\x00\x7a\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\x78\x01\x99\x01\x99\x01\xa1\x01\x9f\x01\x9f\x01\x9f\x01\xaa\x01\xaa\x01\x7b\x00\xaa\x01\x02\x00\xae\x01\xd2\x01\x0d\x02\x15\x02\xee\x0e\x13\x02\x01\x00\x13\x02\x6c\x15\x1d\x02\x00\x00\x00\x00\x46\x00\x00\x00\x24\x02\x30\x02\x00\x00\x00\x00\x16\x00\x8f\x0a\x8f\x0a\xfd\x0d\x68\x02\x5d\x02\x00\x00\x23\x02\x61\x02\x46\x00\x69\x02\x9e\x02\xb6\xff\x63\x02\x9b\x02\x9a\x02\xbb\x02\x00\x00\x00\x00\x7e\x03\x8f\x0a\x00\x00\xa8\x02\x00\x00\x3f\x04\xaf\x04\xa2\x02\xa8\x01\x59\x03\x00\x00\x24\x09\x3f\x09\x92\x09\xb0\x09\x59\x07\x03\x0a\xfd\x0d\xfd\x0d\xfd\x0d\x8f\x0a\xb7\x02\x3e\x0f\x00\x00\xb3\x02\xbb\x02\x1d\x03\x28\x03\xe2\x06\x80\x05\x8f\x0a\xd5\x02\x80\x05\x00\x00\xe9\x0a\xfd\x0d\xfd\x0d\x00\x00\x21\x02\xfd\x0d\xfd\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x07\x0b\x07\x0b\x3e\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x0d\xfd\x0d\xfd\x0d\xfd\x0d\xd9\x02\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x07\x0b\x07\x0b\xe9\x02\x3e\x0f\xe3\x02\x00\x00\xee\x02\x00\x00\x00\x00\xea\x02\xfd\x0d\x2d\x03\x08\x00\xfd\x00\x2a\x03\x46\x00\x33\x03\x43\x03\x46\x00\x55\x03\x88\x00\x60\x03\x5a\x0b\x00\x00\x09\x01\x13\x01\xfd\x0d\x68\x03\x93\x03\x73\x03\x76\x03\x00\x00\xfd\x0d\xfd\x0d\x00\x00\xfd\x0d\xfd\x0d\x75\x0b\x58\x06\x79\x03\x58\x06\x1e\x0a\x71\x0a\xc8\x0b\x00\x00\x00\x00\x84\x03\x59\x0f\x1a\x00\x00\x00\x00\x00\xe6\x0b\x00\x00\x00\x00\x00\x00\xe6\x0b\x00\x00\xe6\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\xff\x6d\x03\x6e\x03\x6e\x03\x6e\x03\x6e\x03\x6e\x03\x6e\x03\x6e\x03\x74\x03\x78\x03\xa1\x00\x7f\x03\x82\x03\x8a\x03\x8f\x03\xa4\x03\x9d\x03\x9d\x03\x9d\x03\xa5\x03\xab\x03\xae\x03\xb2\x03\xb6\x03\xbf\x03\xc1\x03\xc9\x03\xcb\x03\xe8\x03\xe4\x03\x03\x04\x06\x04\xe6\x0b\x94\x02\x6d\x06\x00\x00\x00\x00\x53\x04\x00\x00\xfa\x03\x00\x00\xa4\x08\xfa\x03\x00\x00\x1c\x09\x1c\x09\x00\x00\x00\x00\x00\x00\x0c\x01\x00\x00\x0c\x01\x0c\x01\x00\x00\x92\x01\x1c\x09\x1c\x09\x00\x00\x00\x00\x00\x00\xbb\x02\xe2\x06\x00\x00\x75\x06\x00\x00\x3c\x04\x4a\x04\x16\x04\x16\x04\x00\x00\xa9\x0f\x1c\x09\xe4\xff\x1c\x09\xe5\xff\x00\x00\x43\x02\x34\x04\x00\x00\x74\x00\x27\x04\x43\x02\xa0\x00\x23\x03\x72\x00\x72\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x63\x04\xdd\xff\x1c\x09\x00\x00\x45\x04\x40\x04\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\xe6\xff\xfd\x0d\x05\x01\x00\x00\x00\x00\x00\x00\x49\x04\x7e\x00\x7e\x00\x00\x00\x00\x00\xe6\x0b\xe6\x0b\x00\x00\x00\x00\x36\x04\x00\x00\x00\x00\x43\x04\x39\x04\x44\x04\x00\x00\x00\x00\x4c\x04\x47\x04\x00\x00\x00\x00\x00\x00\x51\x04\x5b\x04\x5d\x04\x68\x04\x00\x00\x50\x04\xa1\x00\x6d\x04\x7f\x04\x83\x04\xa1\x00\xa1\x00\x92\x04\x60\x04\x60\x04\x60\x04\x60\x04\x9b\x04\xa3\x04\xaa\x04\xb4\x04\x00\x00\xb6\x04\xb6\x04\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x0f\xaa\x00\x77\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\xdd\x00\x9e\x00\x09\x02\x9e\x00\x00\x00\xc5\x04\x39\x0c\x00\x00\x00\x00\x39\x0c\x00\x00\x57\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x0c\xaa\x0c\x00\x00\x00\x00\xc2\x04\x00\x00\xd3\x04\xc8\x04\x00\x00\x50\x05\xbb\x02\x00\x00\xaa\x00\xc8\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x49\x05\x00\x00\x4f\x05\x66\x05\x00\x00\x72\x05\x00\x00\x1b\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x39\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x0d\x46\x00\x00\x00\x00\x00\x7b\x05\x7f\x05\x82\x05\x81\x05\x81\x05\x8e\x05\x00\x00\x90\x05\x92\x05\x94\x05\x96\x05\x00\x00\x00\x00\x99\x05\x00\x00\x00\x00\x00\x00\x9e\x05\x98\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\xaa\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x05\xcf\x05\x91\x01\xce\x05\xe1\x05\x9d\x01\x00\x00\xd0\x05\x16\x01\xe4\x05\xaa\x0d\x00\x00\xe7\x05\xaa\x0d\xaa\x0d\xf8\x05\xf0\x05\xbb\x02\xf0\x05\x00\x00\x72\x00\xfd\x05\xfe\x05\xfe\x05\x46\x00\x00\x00\xfe\x05\xfe\x05\x00\x00\xfe\x05\xfe\x05\x05\x06\x00\x00\x00\x00\x92\x01\xaa\x0d\x00\x00\x01\x06\xaa\x0d\x00\x00\x01\x06\xaa\x0d\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x3d\x06\x00\x00\x42\x06\x00\x00\x00\x00\x00\x00\xaa\x0d\x0d\x06\x46\x00\x10\x06\x46\x00\x43\x02\x43\x02\x00\x00\x00\x00\xc4\x0f\xaa\x00\x00\x00\xbb\x02\x00\x00\x00\x00\x00\x00\x4c\x06\x00\x00\x9b\x05\x11\x06\x00\x00\x25\x06\x28\x06\x7e\x00\x00\x00\x2d\x06\x32\x06\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x06\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x06\x3e\x06\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x74\x00\x00\x00\xef\xff\xf2\xff\xef\xff\x00\x00\x00\x00\x54\x06\x48\x06\x00\x00\x43\x06\x43\x06\x4e\x06\x5a\x06\x8b\x06\x00\x00\x00\x00\x59\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x06\x00\x00\x53\x06\x53\x06\x5c\x06\x5b\x06\x5b\x06\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x5d\x06\x00\x00\x00\x00\x51\x06\x00\x00\x64\x06\xaa\x00\x00\x00\x00\x00\xca\x07\x00\x00\x00\x00\x43\x02\x43\x02\x43\x02\x43\x02\x00\x00\x6c\x06\x6c\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\xe5\x03\x00\x00\x00\x00\x00\x00\x08\x06\x63\x06\x77\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x06\x69\x06\xa4\x06\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x72\x06\x00\x00\x7b\x06\x00\x00\x00\x00\x00\x00"#--happyGotoOffsets :: HappyAddr-happyGotoOffsets = HappyA# "\x5d\x03\x3e\x12\x67\x04\xe3\x06\xed\x02\x6c\x02\x15\x10\xe4\x06\xe6\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x15\x5a\x12\x00\x00\x00\x00\x2f\x03\x00\x00\x00\x00\x8b\x03\x4a\x06\x00\x00\x00\x00\x00\x00\xef\x06\x00\x00\x31\x01\x2c\x06\x00\x00\x9c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x01\x00\x00\x00\x00\xf9\x02\x7a\x03\x76\x12\x88\x10\xda\x10\x00\x00\x00\x00\x00\x00\x96\x06\x00\x00\xa2\x06\x00\x00\x6f\x01\x92\x12\x22\x12\xae\x12\x00\x00\x00\x00\x00\x00\x00\x00\x91\x00\xae\x06\x00\x00\x00\x00\x00\x00\x00\x00\xf9\xff\xde\x02\x00\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\x0b\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x02\x01\x07\x0e\x07\x78\x06\x11\x07\x13\x07\x14\x07\xfa\x02\x1f\x03\x2f\x00\x7d\x03\x7c\x03\x15\x07\x90\x03\x7f\x06\xb5\x03\xee\x01\x17\x07\x76\x04\x79\x04\x00\x00\x00\x00\x00\x00\x00\x00\x16\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x06\xca\x12\xe6\x12\x1c\x11\xd5\x06\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x06\x7c\x03\x00\x00\x00\x00\x3a\x01\x02\x13\x00\x00\x00\x00\x00\x00\xa0\x03\x00\x00\x00\x00\x9b\x00\x2e\x01\x00\x00\x9f\x03\x1f\x0e\x9a\x00\x5d\x10\xb4\x10\x00\x11\x09\x04\xf5\x0e\x60\x0f\xf1\x02\x00\x00\x31\x03\x00\x00\x00\x00\xaf\x05\x00\x00\x0c\x07\x50\x02\x27\x02\x1e\x13\x00\x00\xba\x04\x00\x00\x9f\x03\xcb\x0f\x3c\x11\x00\x00\x00\x00\x52\x11\x68\x11\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x13\x56\x13\xc9\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\xf9\x03\xbf\x05\x7e\x11\x94\x11\x00\x00\x26\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x07\x00\x00\x72\x13\x8e\x13\x00\x00\x72\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x6a\x15\xf0\x06\x32\x07\x35\x07\x00\x00\x33\x07\x00\x00\x00\x00\x37\x07\x00\x00\x00\x00\x00\x00\x47\x08\x00\x00\x3a\x07\x3e\x07\xb8\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x11\xc0\x11\x00\x00\xd6\x11\xec\x11\x06\x00\x14\x04\x00\x00\xbe\x05\x9f\x03\x8a\x0e\x02\x12\x00\x00\x00\x00\x00\x00\x04\x02\x1b\x07\x00\x00\x00\x00\xaa\x13\x00\x00\x00\x00\x00\x00\xc6\x13\x00\x00\xe2\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x07\x2b\x07\x2c\x07\x2e\x07\x30\x07\x36\x07\x38\x07\x00\x00\x3b\x07\x2f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x07\x41\x07\x44\x07\x34\x07\x00\x00\x00\x00\x00\x00\x3f\x07\x48\x07\x4b\x07\x83\x01\x4d\x07\x00\x00\x8a\x04\x00\x00\x00\x00\xfe\x13\x98\x04\x2b\x06\x00\x00\x00\x00\xfc\xff\x00\x00\x04\x00\x00\x00\xe7\x02\x47\x07\x00\x00\x6f\x06\x98\x06\x00\x00\x00\x00\x00\x00\x53\x02\x00\x00\x88\x02\x81\x03\x00\x00\xfb\xff\xab\x06\x49\x07\x00\x00\x00\x00\x00\x00\x96\x03\xe5\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x03\xfe\x03\x00\x00\x07\x02\x61\x07\x00\x00\x7f\x07\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\xa9\x04\xcb\x06\x2d\x01\x63\x07\x65\x07\xca\x01\x5f\x02\x38\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x07\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x26\x11\x35\x02\x00\x00\x00\x00\x00\x00\x00\x00\x55\x04\x90\x04\x00\x00\x00\x00\x1a\x14\x36\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x07\x00\x00\xd6\x06\x00\x00\x00\x00\x60\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x07\x68\x07\x00\x00\x00\x00\x00\x00\x6a\x07\x6b\x07\x00\x00\x6f\x07\x70\x07\x78\x07\x79\x07\x76\x07\x00\x00\x00\x00\x7b\x07\x00\x00\x80\x07\x82\x07\x00\x00\x00\x00\x00\x00\x00\x00\x77\x02\xa8\x04\x22\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x05\x00\x00\x87\x07\x00\x00\x8f\x07\x00\x00\x00\x00\x2f\x01\x00\x00\x00\x00\x39\x01\x00\x00\x52\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x04\x00\x00\xf6\x05\x6e\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x01\x94\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x07\x92\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\x93\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x07\x00\x00\x00\x00\x4a\x07\x00\x00\xeb\x01\x00\x00\x09\x07\xa6\x14\x00\x00\xd6\x00\xc2\x14\xde\x14\x00\x00\x72\x04\x43\x00\x7b\x04\x00\x00\x8f\x02\x00\x00\xab\x07\xac\x07\xae\x07\x00\x00\xc1\x05\xc3\x05\x00\x00\xc7\x05\xcc\x05\x00\x00\x00\x00\x00\x00\x93\x00\xfa\x14\x00\x00\x46\x05\x16\x15\x00\x00\x68\x05\x32\x15\x00\x00\xfc\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x15\x00\x00\xb3\x07\x00\x00\xbc\x07\x12\x03\x2b\x03\x00\x00\x00\x00\x7a\x02\xca\x06\x00\x00\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x01\x56\x07\x00\x00\x00\x00\x00\x00\xb7\x05\x00\x00\x00\x00\x00\x00\xc4\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x07\x00\x00\x00\x00\x52\x06\x00\x00\x1f\x00\x94\x00\x77\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x07\xc4\x07\x00\x00\x00\x00\x00\x00\xce\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x07\x72\x07\x00\x00\x7d\x07\x81\x07\x00\x00\x00\x00\x57\x06\x00\x00\x00\x00\x00\x00\xd2\x07\x00\x00\xd4\x07\x00\x00\x00\x00\xba\x05\x00\x00\x50\x07\x58\x08\x00\x00\x00\x00\x22\x12\x00\x00\x00\x00\xa9\x03\xaf\x03\xd0\x03\x37\x04\x00\x00\xef\x05\xfb\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x07\x00\x00\x00\x00\xfc\xff\x00\x00\x00\x00\x00\x00\xbb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x07\xe5\x07\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x07\xee\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyAdjustOffset :: Happy_GHC_Exts.Int# -> Happy_GHC_Exts.Int#-happyAdjustOffset off = off--happyDefActions :: HappyAddr-happyDefActions = HappyA# "\xf6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xfe\x00\x00\xf8\xff\x66\xff\x35\xff\xb3\xfe\x4f\xff\x4e\xff\x4c\xff\x4b\xff\x48\xff\x00\x00\x20\xff\x1f\xff\x44\xff\x00\x00\x00\x00\x11\xff\x0f\xff\xb2\xfe\x00\x00\x00\x00\x00\x00\x31\xff\x2f\xff\x2d\xff\x00\x00\x2e\xff\x00\x00\x00\x00\x30\xff\x00\x00\x2c\xff\x00\x00\x2b\xff\x21\xff\x00\x00\x00\x00\x32\xff\x33\xff\x00\x00\x62\xfe\x00\x00\x00\x00\x00\x00\x7f\xff\x67\xff\x34\xff\xb5\xfe\x00\x00\x90\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xff\x65\xff\x00\x00\x00\x00\x62\xfe\xb1\xfe\x00\x00\x00\x00\x00\x00\xad\xfe\x00\x00\x00\x00\xfb\xfd\xab\xfe\xaa\xfe\xa9\xfe\xa8\xfe\xa7\xfe\xa6\xfe\xac\xfe\xa5\xfe\xa4\xfe\xa3\xfe\xa2\xfe\xa1\xfe\xa0\xfe\x9f\xfe\x98\xfe\x9a\xfe\x99\xfe\x00\x00\x9e\xfe\x9d\xfe\x9c\xfe\x87\xff\x9b\xfe\x54\xfe\x36\xfe\x53\xfe\x52\xfe\x51\xfe\x50\xfe\x4e\xfe\x4f\xfe\x4d\xfe\x4c\xfe\x4b\xfe\x4a\xfe\x48\xfe\x49\xfe\x47\xfe\x45\xfe\x44\xfe\x46\xfe\x3a\xfe\x39\xfe\x3e\xfe\x3f\xfe\x40\xfe\x3c\xfe\x3b\xfe\x43\xfe\x42\xfe\x41\xfe\x38\xfe\x37\xfe\x3d\xfe\xf9\xfd\x55\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\xff\x26\xff\x00\x00\x7c\xff\x00\x00\x00\x00\x27\xff\x24\xff\xb1\xfe\x00\x00\x00\x00\x00\x00\xb7\xfe\x00\x00\x60\xff\x5f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x5e\xff\x00\x00\x00\x00\x00\x00\x63\xfe\x64\xff\xdd\xfe\xf5\xfe\x00\x00\x3c\xff\x00\x00\x00\xff\xfd\xfe\xf6\xfe\x00\x00\x00\x00\x00\x00\x63\xff\x62\xfe\x00\x00\x39\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\xff\x3b\xff\xb4\xfe\x00\x00\x1e\xff\x00\x00\x3f\xff\x62\xfe\xe2\xfe\x00\x00\x00\x00\xe3\xfe\xde\xfe\x62\xfe\x00\x00\x00\x00\x10\xff\x00\x00\x00\x00\x00\x00\x12\xff\x52\xff\x4a\xff\x3a\xff\x00\x00\x00\x00\x00\x00\xf7\xff\xf5\xff\xf4\xff\xf3\xff\xf2\xff\xf1\xff\xf0\xff\xef\xff\xee\xff\xed\xff\xec\xff\xeb\xff\xea\xff\xe9\xff\xe8\xff\xe7\xff\xe6\xff\xe5\xff\xe4\xff\xe3\xff\xe2\xff\xe1\xff\xe0\xff\xdf\xff\xde\xff\xdd\xff\xdc\xff\xdb\xff\xda\xff\xd9\xff\xd8\xff\xd7\xff\xd6\xff\xd5\xff\xd4\xff\xd3\xff\xd2\xff\xd1\xff\xd0\xff\xcf\xff\xce\xff\xcd\xff\xcc\xff\xcb\xff\xca\xff\xc9\xff\xc8\xff\xc7\xff\xc6\xff\xc5\xff\xc4\xff\xc3\xff\xc2\xff\xc1\xff\xc0\xff\xbf\xff\xbe\xff\xbd\xff\xbc\xff\xbb\xff\xba\xff\xb9\xff\xb8\xff\xb7\xff\xb6\xff\xb5\xff\xb4\xff\xb3\xff\xb2\xff\xb1\xff\xb0\xff\xaf\xff\xae\xff\xad\xff\xa9\xff\xac\xff\xab\xff\xaa\xff\xa8\xff\xa7\xff\xa6\xff\xa5\xff\xa4\xff\xa3\xff\xa2\xff\xa1\xff\xa0\xff\x9f\xff\x9e\xff\x9d\xff\x9c\xff\x9b\xff\x9a\xff\x99\xff\x98\xff\x97\xff\x96\xff\x95\xff\x94\xff\x93\xff\x92\xff\x91\xff\x90\xff\x8f\xff\x8e\xff\x8d\xff\x8c\xff\x8b\xff\x8a\xff\x89\xff\x25\xff\x50\xff\x51\xff\x5f\xff\x44\xff\x00\x00\x00\x00\x00\x00\x60\xff\x00\x00\x5e\xff\xe5\xfe\xe6\xfe\x47\xff\xe4\xfe\x00\x00\x46\xff\x00\x00\x00\x00\x66\xff\x5e\xfe\x00\x00\x1d\xff\x1c\xff\x19\xff\x1a\xff\x17\xff\x00\x00\xd0\xfe\x00\x00\xd4\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xfe\x00\x00\x44\xff\xe9\xfe\x00\x00\x00\x00\x39\xff\xf3\xfe\x00\x00\xf2\xfe\xf4\xfe\xdc\xfe\x00\x00\x00\x00\xdb\xfe\x00\x00\x00\x00\x39\xff\xfc\xfe\xf8\xfe\xfd\xfe\x62\xfe\x00\x00\x00\x00\x01\xff\x49\xff\xf7\xfe\x5e\xfe\x3f\xff\x05\xff\x08\xff\x00\x00\x28\xff\x07\xff\x06\xff\x00\x00\xb8\xfe\x00\x00\x4d\xff\x92\xfe\x91\xfe\x93\xfe\x29\xff\x7b\xff\x2a\xff\x37\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xff\x00\x00\x00\x00\x5a\xff\x00\x00\x00\x00\x7d\xff\x00\x00\x00\x00\x00\x00\x00\x00\xdf\xfe\xfe\xfd\x7f\xfe\x00\x00\x7b\xfe\x00\x00\x7c\xfe\x75\xfe\x00\x00\x81\xfe\xdf\xfe\xdf\xfe\x56\xfe\x7d\xfe\x7e\xfe\x00\x00\x80\xff\x00\x00\x00\x00\x82\xfe\x00\x00\xdf\xfe\xdf\xfe\x80\xfe\x88\xff\x86\xff\x00\x00\x62\xfe\x83\xff\xfc\xfd\xb0\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xfd\x5e\xfe\xdf\xfe\x00\x00\xdf\xfe\x00\x00\x78\xff\x74\xff\x00\x00\x0e\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xff\x85\xfe\x84\xfe\x83\xfe\x00\x00\x00\x00\xdf\xfe\x74\xfe\x00\x00\x00\x00\x11\xfe\x00\x00\xff\xfd\x84\xff\x85\xff\x00\x00\x17\xff\x00\x00\x71\xfe\x6f\xfe\x6a\xfe\x00\x00\x00\x00\x00\x00\x64\xfe\x7a\xfe\x00\x00\x00\x00\x7e\xff\x1f\xfe\x00\x00\x54\xff\x53\xff\x00\x00\x5a\xff\x00\x00\x16\xfe\x55\xff\x00\x00\x5d\xff\x20\xfe\x19\xfe\x21\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x1a\xfe\x00\x00\x58\xff\x00\x00\x00\x00\x00\x00\x58\xff\x58\xff\x00\x00\x5d\xff\x5d\xff\x5d\xff\x5d\xff\x00\x00\x00\x00\x00\x00\x5d\xff\x1d\xfe\x00\x00\x00\x00\xb6\xfe\x03\xff\x02\xff\x04\xff\x5e\xfe\xcc\xfe\x00\x00\xfa\xfe\xf9\xfe\xfb\xfe\xff\xfe\xfe\xfe\xef\xfe\xed\xfe\xec\xfe\xe7\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\xfe\x00\x00\x39\xff\x3e\xff\x82\xff\x39\xff\x38\xff\x00\x00\x0e\xff\x0c\xff\x0d\xff\x0b\xff\x09\xff\x0a\xff\x00\x00\xd3\xfe\x45\xff\xd1\xfe\x00\x00\x41\xff\x00\x00\x00\x00\x16\xff\x15\xff\x00\x00\x23\xff\xcc\xfe\x00\x00\x43\xff\x40\xff\x00\xfe\xd9\xfe\xda\xfe\x13\xff\x18\xff\xce\xfe\xcc\xfe\xca\xfe\xc9\xfe\xc8\xfe\x00\x00\xcb\xfe\x00\x00\x00\x00\x1b\xff\x00\x00\x22\xff\x39\xff\xd2\xfe\xf1\xfe\xea\xfe\xeb\xfe\x00\x00\xd7\xfe\xd8\xfe\xd5\xfe\xd6\xfe\x3d\xff\x39\xff\x21\xff\x60\xfe\x5d\xfe\x00\x00\x00\x00\x00\x00\x5d\xff\x5d\xff\x00\x00\x5b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x22\xfe\x57\xff\x00\x00\x2a\xfe\x1c\xfe\x1b\xfe\x00\x00\x5d\xff\x24\xfe\x26\xfe\x25\xfe\x1e\xfe\x5c\xff\x35\xfe\x00\x00\x00\x00\x59\xff\x32\xfe\x27\xfe\x78\xfe\x79\xfe\x00\x00\x67\xfe\x00\x00\x00\x00\x67\xfe\x00\x00\x70\xfe\x00\x00\x66\xff\x00\x00\x00\x00\x13\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xff\x76\xff\x00\x00\x00\x00\x00\x00\x00\x00\x79\xff\x00\x00\x00\x00\x7a\xff\x00\x00\x00\x00\x00\x00\x94\xfe\x10\xfe\x00\x00\x00\x00\x75\xff\x00\x00\x00\x00\xe1\xfe\x00\x00\x00\x00\xe0\xfe\xcc\xfe\xaf\xfe\xae\xfe\x61\xfe\x00\x00\x8c\xfe\x8b\xfe\x8d\xfe\x96\xfe\x0f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\xff\x70\xff\x77\xff\x57\xfe\x5e\xfe\xcc\xfe\x58\xfe\x00\x00\x76\xfe\x97\xfe\x12\xfe\x88\xfe\x89\xfe\x0a\xfe\x77\xfe\x73\xfe\x00\x00\x00\x00\x00\x00\x6d\xfe\x00\x00\x00\x00\x00\x00\x6e\xfe\x17\xfe\x15\xfe\x18\xfe\x14\xfe\x00\x00\x29\xfe\x58\xff\x23\xfe\x2c\xfe\x2f\xfe\x2d\xfe\x30\xfe\x00\x00\x00\x00\x31\xfe\x33\xfe\x34\xfe\xcc\xfe\xe8\xfe\xf0\xfe\x00\x00\x14\xff\xbc\xfe\x81\xff\xbc\xfe\xcd\xfe\xbe\xfe\xba\xfe\x00\x00\xbb\xfe\x00\x00\x00\x00\x00\x00\xc2\xfe\x00\x00\x81\xff\xc4\xfe\x00\x00\xcf\xfe\x5f\xfe\x2e\xfe\x2b\xfe\x56\xff\x28\xfe\x00\x00\x67\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\xfe\x07\xfe\x00\x00\x08\xfe\x05\xfe\x06\xfe\x00\x00\x01\xfe\x00\x00\x04\xfe\x02\xfe\x00\x00\x03\xfe\x00\x00\xcc\xfe\x5a\xfe\x5b\xfe\x00\x00\x71\xff\x73\xff\x6c\xff\x6e\xff\x68\xff\x6a\xff\x95\xfe\x00\x00\x00\x00\x8e\xfe\x8f\xfe\x6b\xff\x69\xff\x6f\xff\x6d\xff\x21\xff\x59\xfe\x8a\xfe\x00\x00\x87\xfe\x0b\xfe\x0d\xfe\x62\xfe\x00\x00\x00\x00\x6b\xfe\x66\xfe\x65\xfe\x6c\xfe\xc7\xfe\x00\x00\x00\x00\x81\xff\xc5\xfe\xc0\xfe\xbd\xfe\xc6\xfe\x00\x00\xb9\xfe\xc3\xfe\xc1\xfe\xbf\xfe\x68\xfe\x69\xfe\x09\xfe\x00\x00\x00\x00\x5c\xfe\x00\x00\x0c\xfe\x86\xfe"#--happyCheck :: HappyAddr-happyCheck = HappyA# "\xff\xff\x05\x00\x09\x00\x14\x00\x09\x00\x09\x00\x14\x00\x0c\x00\x00\x00\x0e\x00\x2d\x00\x0f\x00\x56\x00\x09\x00\x0a\x00\x09\x00\x4b\x00\x2d\x00\x2d\x00\x2d\x00\x5e\x00\x0f\x00\x14\x00\x09\x00\x09\x00\x65\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x0f\x00\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\x0b\x00\x20\x00\x21\x00\x09\x00\x23\x00\x14\x00\x25\x00\x26\x00\x27\x00\x28\x00\x20\x00\x21\x00\x6c\x00\x23\x00\x56\x00\x25\x00\x26\x00\x27\x00\x28\x00\x09\x00\x55\x00\x55\x00\x55\x00\x2e\x00\x2f\x00\x0f\x00\x10\x00\x3a\x00\x3b\x00\x3c\x00\x2d\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x5b\x00\x3a\x00\x3b\x00\x3c\x00\x09\x00\x3e\x00\x59\x00\x53\x00\x5e\x00\x5c\x00\x0f\x00\x10\x00\x56\x00\x59\x00\x5b\x00\x56\x00\x5c\x00\x6a\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x5a\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6a\x00\x6a\x00\x6b\x00\x66\x00\x50\x00\x51\x00\x52\x00\x76\x00\x77\x00\x00\x00\x7c\x00\x7a\x00\x7b\x00\x5e\x00\x59\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x09\x00\x07\x00\x09\x00\x97\x00\xa3\x00\x0c\x00\x0f\x00\x0e\x00\x09\x00\x09\x00\x09\x00\xa1\x00\x97\x00\xab\x00\x62\x00\x0f\x00\x64\x00\x7c\x00\x11\x00\x13\x00\x14\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x09\x00\x23\x00\x24\x00\x6e\x00\x26\x00\x27\x00\x28\x00\x20\x00\x21\x00\x79\x00\x23\x00\x07\x00\x25\x00\x26\x00\x27\x00\x28\x00\x09\x00\x52\x00\x53\x00\x57\x00\x1d\x00\x54\x00\x0f\x00\x10\x00\x54\x00\x09\x00\x23\x00\x34\x00\x0c\x00\x69\x00\x0e\x00\x57\x00\x6c\x00\x3a\x00\x3b\x00\x2c\x00\x3d\x00\x5a\x00\x6a\x00\x66\x00\x67\x00\x6a\x00\x55\x00\x67\x00\x09\x00\x0a\x00\x4d\x00\x4e\x00\x4f\x00\x53\x00\x6a\x00\x6b\x00\x65\x00\x6a\x00\x50\x00\x59\x00\x52\x00\x64\x00\x5c\x00\x5b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x55\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x62\x00\x61\x00\x64\x00\x63\x00\x4d\x00\x4e\x00\x4f\x00\x76\x00\x77\x00\x68\x00\x6a\x00\x7a\x00\x7b\x00\x6c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x09\x00\x5a\x00\x97\x00\x55\x00\x79\x00\x6a\x00\x0f\x00\x09\x00\x09\x00\x09\x00\x0c\x00\x09\x00\x0e\x00\xab\x00\xac\x00\x0f\x00\x11\x00\x0f\x00\x64\x00\x09\x00\x09\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x0f\x00\x23\x00\x24\x00\x11\x00\x26\x00\x27\x00\x28\x00\x20\x00\x21\x00\x54\x00\x23\x00\x65\x00\x25\x00\x26\x00\x27\x00\x28\x00\x27\x00\x20\x00\x21\x00\x56\x00\x23\x00\x54\x00\x25\x00\x26\x00\x27\x00\x28\x00\x5d\x00\x57\x00\x67\x00\x24\x00\x61\x00\x54\x00\x63\x00\x3a\x00\x3b\x00\x3c\x00\x56\x00\x33\x00\x5c\x00\x6a\x00\x67\x00\x5b\x00\x38\x00\x3a\x00\x3b\x00\x3c\x00\x6a\x00\x64\x00\x09\x00\x53\x00\x67\x00\x09\x00\x42\x00\x43\x00\x0f\x00\x59\x00\x09\x00\x0f\x00\x5c\x00\x6e\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x26\x00\x27\x00\x28\x00\x26\x00\x27\x00\x28\x00\x18\x00\x76\x00\x77\x00\x0a\x00\x1c\x00\x7a\x00\x7b\x00\x10\x00\x11\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x09\x00\x65\x00\x97\x00\x50\x00\x51\x00\x52\x00\x0f\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\x09\x00\x97\x00\xab\x00\x09\x00\x09\x00\x2d\x00\x0f\x00\x0c\x00\x0d\x00\x0f\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x65\x00\x23\x00\x24\x00\x66\x00\x26\x00\x27\x00\x28\x00\x52\x00\x53\x00\x20\x00\x21\x00\x57\x00\x23\x00\x78\x00\x25\x00\x26\x00\x27\x00\x28\x00\x26\x00\x27\x00\x28\x00\x5d\x00\x61\x00\x57\x00\x63\x00\x61\x00\x09\x00\x63\x00\x52\x00\x53\x00\x6a\x00\x6a\x00\x0f\x00\x57\x00\x57\x00\x3a\x00\x3b\x00\x3c\x00\x6a\x00\x5d\x00\x5d\x00\x65\x00\x6a\x00\x61\x00\x61\x00\x63\x00\x63\x00\x6d\x00\x09\x00\x53\x00\x65\x00\x09\x00\x6a\x00\x6a\x00\x0f\x00\x59\x00\x27\x00\x0f\x00\x5c\x00\x6a\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x26\x00\x27\x00\x28\x00\x26\x00\x27\x00\x28\x00\x09\x00\x76\x00\x77\x00\x55\x00\x56\x00\x7a\x00\x7b\x00\x65\x00\x11\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x09\x00\x33\x00\x70\x00\x09\x00\x97\x00\x55\x00\x0f\x00\x75\x00\xa6\x00\xa7\x00\xa8\x00\x11\x00\x12\x00\xab\x00\x40\x00\x09\x00\x42\x00\x43\x00\x0c\x00\x0d\x00\x64\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x65\x00\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\x56\x00\x65\x00\x0f\x00\x78\x00\x6a\x00\x5d\x00\x78\x00\x09\x00\x64\x00\x61\x00\x09\x00\x63\x00\x62\x00\x0f\x00\x64\x00\x64\x00\x0f\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x5e\x00\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\x52\x00\x53\x00\x2f\x00\x09\x00\x11\x00\x12\x00\x0c\x00\x0d\x00\x26\x00\x27\x00\x28\x00\x26\x00\x27\x00\x28\x00\x53\x00\x61\x00\x09\x00\x63\x00\x72\x00\x73\x00\x59\x00\x75\x00\x0f\x00\x5c\x00\x6a\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x55\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x53\x00\x24\x00\x5e\x00\x26\x00\x27\x00\x28\x00\x64\x00\x76\x00\x77\x00\x5c\x00\x60\x00\x7a\x00\x7b\x00\x6a\x00\x6b\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x09\x00\x78\x00\x09\x00\x5d\x00\x78\x00\x55\x00\x0f\x00\x61\x00\x09\x00\x63\x00\x11\x00\x5e\x00\x09\x00\xab\x00\x0f\x00\x10\x00\x6a\x00\x65\x00\x0f\x00\x59\x00\x09\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x65\x00\x23\x00\x24\x00\x11\x00\x26\x00\x27\x00\x28\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x5c\x00\x23\x00\x24\x00\x63\x00\x26\x00\x27\x00\x28\x00\x33\x00\x09\x00\x52\x00\x53\x00\x0c\x00\x38\x00\x0e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x6a\x00\x6b\x00\x5d\x00\x0b\x00\x42\x00\x43\x00\x61\x00\x33\x00\x63\x00\x59\x00\x36\x00\x37\x00\x38\x00\x39\x00\x0b\x00\x09\x00\x44\x00\x45\x00\x0c\x00\x53\x00\x0e\x00\x09\x00\x42\x00\x43\x00\x64\x00\x59\x00\x56\x00\x0f\x00\x5c\x00\x54\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x64\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6a\x00\x24\x00\x6f\x00\x26\x00\x27\x00\x28\x00\x2d\x00\x76\x00\x77\x00\x00\x00\x01\x00\x7a\x00\x7b\x00\x32\x00\x33\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x09\x00\x61\x00\x09\x00\x63\x00\xa9\x00\xaa\x00\x0f\x00\x09\x00\x0f\x00\x10\x00\x6a\x00\x64\x00\x15\x00\xab\x00\x5e\x00\x11\x00\x12\x00\x09\x00\xa9\x00\xaa\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x11\x00\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xa9\x00\xaa\x00\x0f\x00\x10\x00\x64\x00\x09\x00\x09\x00\x30\x00\x31\x00\x32\x00\x33\x00\x0f\x00\x35\x00\x57\x00\x11\x00\x09\x00\x5e\x00\x15\x00\x0c\x00\x5d\x00\x0e\x00\x09\x00\x59\x00\x61\x00\x0c\x00\x63\x00\x0e\x00\x33\x00\x20\x00\x21\x00\x59\x00\x23\x00\x6a\x00\x31\x00\x26\x00\x27\x00\x28\x00\xa9\x00\xaa\x00\x3f\x00\x40\x00\x59\x00\x42\x00\x43\x00\x59\x00\x52\x00\x53\x00\x59\x00\x33\x00\x35\x00\x57\x00\x69\x00\x59\x00\x38\x00\x09\x00\x6c\x00\x5d\x00\x0c\x00\x59\x00\x0e\x00\x61\x00\x6c\x00\x63\x00\x42\x00\x43\x00\x6c\x00\x00\x00\x01\x00\x02\x00\x6a\x00\x04\x00\x05\x00\x6c\x00\x07\x00\x08\x00\x6c\x00\x0a\x00\x76\x00\x77\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x6c\x00\x12\x00\x13\x00\x14\x00\x15\x00\x6c\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x09\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0f\x00\x6c\x00\x25\x00\x26\x00\x27\x00\x69\x00\x29\x00\x2a\x00\x2b\x00\x6c\x00\x09\x00\x2e\x00\x69\x00\x76\x00\x77\x00\x69\x00\x0f\x00\x20\x00\x21\x00\x69\x00\x23\x00\x09\x00\x15\x00\x26\x00\x27\x00\x28\x00\x6c\x00\x52\x00\x53\x00\x11\x00\xa9\x00\xaa\x00\x57\x00\x20\x00\x21\x00\x6c\x00\x23\x00\x6c\x00\x5d\x00\x26\x00\x27\x00\x28\x00\x61\x00\x4e\x00\x63\x00\x6c\x00\x51\x00\x6c\x00\x53\x00\xa9\x00\xaa\x00\x6a\x00\x57\x00\x58\x00\x35\x00\x5a\x00\x09\x00\x09\x00\x5d\x00\x0c\x00\x5f\x00\x0e\x00\x61\x00\x33\x00\x63\x00\x11\x00\x12\x00\x66\x00\x38\x00\x68\x00\x6a\x00\x6a\x00\x6b\x00\x69\x00\x6d\x00\x00\x00\x01\x00\x02\x00\x42\x00\x43\x00\x05\x00\x56\x00\x07\x00\x08\x00\x56\x00\x0a\x00\xa9\x00\xaa\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x6a\x00\x12\x00\x13\x00\x14\x00\x15\x00\x2d\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x09\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0f\x00\x2d\x00\x25\x00\x26\x00\x27\x00\x65\x00\x29\x00\x2a\x00\x2b\x00\x09\x00\x0a\x00\x2e\x00\x09\x00\x0a\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x55\x00\x23\x00\x24\x00\x65\x00\x26\x00\x27\x00\x28\x00\x2d\x00\x52\x00\x53\x00\x09\x00\x0a\x00\x55\x00\x57\x00\x30\x00\x31\x00\x32\x00\x33\x00\x56\x00\x5d\x00\xa9\x00\xaa\x00\x69\x00\x61\x00\x4e\x00\x63\x00\x5a\x00\x51\x00\x6c\x00\x53\x00\xa9\x00\xaa\x00\x6a\x00\x57\x00\x58\x00\x69\x00\x5a\x00\x05\x00\x06\x00\x5d\x00\x6d\x00\x5f\x00\x6c\x00\x61\x00\x69\x00\x63\x00\x05\x00\x06\x00\x66\x00\x69\x00\x68\x00\x6c\x00\x6a\x00\x6b\x00\x58\x00\x6d\x00\x01\x00\x02\x00\x09\x00\x69\x00\x05\x00\x69\x00\x07\x00\x08\x00\x74\x00\x75\x00\x11\x00\x6c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x69\x00\x12\x00\x13\x00\x14\x00\x15\x00\x69\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x09\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0f\x00\x10\x00\x25\x00\x26\x00\x27\x00\x69\x00\x29\x00\x2a\x00\x2b\x00\x69\x00\x33\x00\x2e\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x40\x00\x69\x00\x42\x00\x43\x00\x2a\x00\x2b\x00\x2c\x00\x52\x00\x53\x00\x2f\x00\x74\x00\x75\x00\x57\x00\x6c\x00\x59\x00\x71\x00\x72\x00\x73\x00\x5d\x00\x75\x00\x4e\x00\x6c\x00\x61\x00\x51\x00\x63\x00\x53\x00\x05\x00\x06\x00\x6c\x00\x57\x00\x58\x00\x6a\x00\x5a\x00\xa9\x00\xaa\x00\x5d\x00\x59\x00\x5f\x00\x6c\x00\x61\x00\x6c\x00\x63\x00\xa9\x00\xaa\x00\x66\x00\x65\x00\x68\x00\x56\x00\x6a\x00\x6b\x00\x64\x00\x6d\x00\x6e\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x54\x00\x0a\x00\x5d\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x5d\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x09\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0f\x00\x10\x00\x25\x00\x26\x00\x27\x00\x5d\x00\x29\x00\x2a\x00\x2b\x00\x09\x00\x09\x00\x2e\x00\x09\x00\x0a\x00\x09\x00\x0a\x00\x0f\x00\x11\x00\x09\x00\x0a\x00\x52\x00\x53\x00\x15\x00\x09\x00\x0a\x00\x57\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x6a\x00\x5d\x00\x2f\x00\x20\x00\x21\x00\x61\x00\x23\x00\x63\x00\x69\x00\x26\x00\x27\x00\x28\x00\x69\x00\x4e\x00\x6a\x00\x69\x00\x51\x00\x6c\x00\x53\x00\xa9\x00\xaa\x00\x33\x00\x57\x00\x58\x00\x35\x00\x5a\x00\x38\x00\x69\x00\x5d\x00\x69\x00\x5f\x00\x69\x00\x61\x00\x69\x00\x63\x00\x69\x00\x42\x00\x43\x00\x69\x00\x68\x00\x6c\x00\x6a\x00\x6b\x00\x69\x00\x6d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xa9\x00\xaa\x00\x69\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x64\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x56\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x74\x00\x75\x00\x25\x00\x26\x00\x27\x00\x62\x00\x29\x00\x2a\x00\x2b\x00\x09\x00\x09\x00\x2e\x00\x56\x00\x74\x00\x75\x00\x6a\x00\x0f\x00\x11\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x65\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x56\x00\x23\x00\x24\x00\x6a\x00\x26\x00\x27\x00\x28\x00\x65\x00\x4e\x00\x05\x00\x06\x00\x51\x00\x55\x00\x53\x00\x05\x00\x06\x00\x33\x00\x57\x00\x58\x00\x64\x00\x5a\x00\xa9\x00\xaa\x00\x5d\x00\x65\x00\x5f\x00\x6a\x00\x61\x00\x2d\x00\x63\x00\x41\x00\x42\x00\x43\x00\x2d\x00\x68\x00\x64\x00\x6a\x00\x6b\x00\x64\x00\x6d\x00\x01\x00\x02\x00\x09\x00\x2d\x00\x05\x00\x6a\x00\x07\x00\x08\x00\x59\x00\x0a\x00\x11\x00\x59\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x59\x00\x12\x00\x13\x00\x14\x00\x15\x00\x59\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x69\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xa9\x00\xaa\x00\x25\x00\x26\x00\x27\x00\x69\x00\x29\x00\x2a\x00\x2b\x00\x09\x00\x33\x00\x2e\x00\xa9\x00\xaa\x00\x5e\x00\x69\x00\x54\x00\x11\x00\x52\x00\x53\x00\x5e\x00\x6a\x00\x54\x00\x57\x00\x41\x00\x42\x00\x43\x00\x28\x00\x09\x00\x5d\x00\x65\x00\x5e\x00\x14\x00\x61\x00\x64\x00\x63\x00\x11\x00\x6a\x00\x62\x00\x52\x00\x53\x00\x5e\x00\x6a\x00\x4e\x00\x57\x00\x6a\x00\x51\x00\x6a\x00\x53\x00\x65\x00\x5d\x00\x33\x00\x57\x00\x58\x00\x61\x00\x5a\x00\x63\x00\x65\x00\x5d\x00\x6a\x00\x5f\x00\x5e\x00\x61\x00\x6a\x00\x63\x00\x41\x00\x42\x00\x43\x00\x6a\x00\x68\x00\x33\x00\x6a\x00\x6b\x00\x66\x00\x6d\x00\x01\x00\x02\x00\x01\x00\x03\x00\x05\x00\x02\x00\x07\x00\x08\x00\x55\x00\x41\x00\x42\x00\x43\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\xa9\x00\x12\x00\x13\x00\x14\x00\x15\x00\x09\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x5d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x57\x00\x06\x00\x25\x00\x26\x00\x27\x00\x09\x00\x29\x00\x2a\x00\x2b\x00\x08\x00\x04\x00\x2e\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x09\x00\x12\x00\x08\x00\xa2\x00\x08\x00\x08\x00\x17\x00\x09\x00\xa0\x00\x09\x00\x0b\x00\x1c\x00\x57\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x54\x00\x0b\x00\x25\x00\xa9\x00\x27\x00\x22\x00\x29\x00\x4e\x00\x0b\x00\x05\x00\x51\x00\x2e\x00\x53\x00\x46\x00\x05\x00\x1b\x00\x57\x00\x58\x00\x06\x00\x5a\x00\x22\x00\x0b\x00\x5d\x00\x06\x00\x5f\x00\x0b\x00\x61\x00\x06\x00\x63\x00\x1b\x00\x1b\x00\x19\x00\x1b\x00\x68\x00\x1b\x00\x6a\x00\x6b\x00\x1a\x00\x6d\x00\x09\x00\x1b\x00\x09\x00\x1b\x00\x4e\x00\x16\x00\x1b\x00\x51\x00\x52\x00\x53\x00\x11\x00\x1b\x00\x1b\x00\x57\x00\x58\x00\x1b\x00\x5a\x00\x08\x00\x1a\x00\x5d\x00\x5e\x00\x5f\x00\x1b\x00\x61\x00\x1b\x00\x63\x00\x09\x00\x12\x00\x09\x00\xa2\x00\x09\x00\x18\x00\x6a\x00\x6b\x00\x11\x00\x6d\x00\x9e\x00\x1c\x00\x16\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x33\x00\x1b\x00\x25\x00\x08\x00\x27\x00\x19\x00\x29\x00\x19\x00\x19\x00\x16\x00\x16\x00\x2e\x00\x09\x00\x12\x00\x41\x00\x42\x00\x43\x00\x17\x00\x16\x00\x16\x00\x11\x00\x16\x00\x0b\x00\x1c\x00\x33\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0b\x00\x1b\x00\x25\x00\x1b\x00\x27\x00\x0b\x00\x29\x00\x16\x00\x41\x00\x42\x00\x43\x00\x2e\x00\x09\x00\x4e\x00\x16\x00\x16\x00\x51\x00\x52\x00\x53\x00\xa4\x00\x11\x00\x9f\x00\x57\x00\x58\x00\x33\x00\x5a\x00\x09\x00\x09\x00\x5d\x00\x75\x00\x5f\x00\x0b\x00\x61\x00\x62\x00\x63\x00\x64\x00\x0b\x00\x75\x00\x41\x00\x42\x00\x43\x00\x6a\x00\x6b\x00\x4e\x00\x6d\x00\x0b\x00\x51\x00\x52\x00\x53\x00\x75\x00\x09\x00\x09\x00\x57\x00\x58\x00\x33\x00\x5a\x00\x08\x00\x19\x00\x5d\x00\x07\x00\x5f\x00\x05\x00\x61\x00\x62\x00\x63\x00\x64\x00\x12\x00\x09\x00\x41\x00\x42\x00\x43\x00\x6a\x00\x6b\x00\x75\x00\x6d\x00\x0b\x00\x1c\x00\x75\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x09\x00\x09\x00\x25\x00\x08\x00\x27\x00\x75\x00\x29\x00\xa4\x00\x05\x00\x75\x00\x09\x00\x2e\x00\xff\xff\x12\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\x4e\x00\x6d\x00\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\x08\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x12\x00\xff\xff\xff\xff\x09\x00\xff\xff\x6a\x00\x6b\x00\xff\xff\x6d\x00\x0f\x00\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\x20\x00\x21\x00\x2e\x00\x23\x00\x12\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\x5c\x00\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x6a\x00\x6b\x00\x4e\x00\x6d\x00\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\x08\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x64\x00\x12\x00\xff\xff\xff\xff\x09\x00\xff\xff\x6a\x00\x6b\x00\xff\xff\x6d\x00\x0f\x00\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\x20\x00\x21\x00\x2e\x00\x23\x00\x12\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\x52\x00\x53\x00\x2e\x00\xff\xff\x4e\x00\x57\x00\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\x5d\x00\xff\xff\x57\x00\x58\x00\x61\x00\x5a\x00\x63\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x6a\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\x4e\x00\x6d\x00\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\x08\x00\x63\x00\x64\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\x12\x00\x6d\x00\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x08\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\x12\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\x52\x00\x53\x00\xff\xff\xff\xff\x4e\x00\x57\x00\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\x5d\x00\xff\xff\x57\x00\x58\x00\x61\x00\x5a\x00\x63\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x6a\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x6a\x00\x6b\x00\x51\x00\x6d\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\x08\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\x6d\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x64\x00\xff\xff\xff\xff\xff\xff\x68\x00\xff\xff\x6a\x00\x6b\x00\x4e\x00\x6d\x00\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\x08\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\x6d\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x08\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\x12\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x64\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x6a\x00\x6b\x00\x51\x00\x6d\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\x08\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\x6d\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\x4e\x00\x6d\x00\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\x08\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\x12\x00\x6d\x00\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\x4e\x00\x6d\x00\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\x08\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\x6d\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x08\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\x12\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x6a\x00\x6b\x00\x51\x00\x6d\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\x08\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x12\x00\xff\xff\xff\xff\x68\x00\xff\xff\x6a\x00\x6b\x00\xff\xff\x6d\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x64\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\x4e\x00\x6d\x00\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\x08\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\x6d\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\xff\xff\x6a\x00\x6b\x00\x4e\x00\x6d\x00\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\x08\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\x6d\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\x4e\x00\x6d\x00\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\x08\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\x6d\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\xff\xff\x6a\x00\x6b\x00\x4e\x00\x6d\x00\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\x08\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\x6d\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\xff\xff\x6a\x00\x6b\x00\x4e\x00\x6d\x00\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x5a\x00\x08\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\x6d\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x09\x00\xff\xff\x0b\x00\x2e\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x1c\x00\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x20\x00\x21\x00\x29\x00\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\x34\x00\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x6a\x00\x6b\x00\x51\x00\x6d\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\x1c\x00\x6d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\xff\xff\xff\xff\x29\x00\xff\xff\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x1c\x00\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x20\x00\x21\x00\x29\x00\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\x34\x00\x57\x00\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x6a\x00\x6b\x00\x51\x00\x6d\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\x1c\x00\x6d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\xff\xff\xff\xff\x29\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x1c\x00\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x20\x00\x21\x00\x29\x00\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\x34\x00\x57\x00\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x6a\x00\x6b\x00\x51\x00\x6d\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\x1c\x00\x6d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\xff\xff\xff\xff\x29\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x1c\x00\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x20\x00\x21\x00\x29\x00\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\x34\x00\x57\x00\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x6a\x00\x6b\x00\x51\x00\x6d\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\x1c\x00\x6d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\xff\xff\xff\xff\x29\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x1c\x00\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x20\x00\x21\x00\x29\x00\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\x34\x00\x57\x00\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x6a\x00\x6b\x00\x51\x00\x6d\x00\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\x58\x00\xff\xff\x09\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x5f\x00\x0f\x00\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\x6d\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x15\x00\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x09\x00\x35\x00\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x09\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\x09\x00\x20\x00\x21\x00\xff\xff\x23\x00\xff\xff\x0f\x00\x26\x00\x27\x00\x28\x00\x13\x00\x14\x00\xff\xff\xff\xff\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x09\x00\x20\x00\x21\x00\xff\xff\x23\x00\xff\xff\x0f\x00\x26\x00\x27\x00\x28\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x09\x00\x20\x00\x21\x00\xff\xff\x23\x00\xff\xff\x0f\x00\x26\x00\x27\x00\x28\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x09\x00\x20\x00\x21\x00\xff\xff\x23\x00\xff\xff\x0f\x00\x26\x00\x27\x00\x28\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x09\x00\x20\x00\x21\x00\xff\xff\x23\x00\xff\xff\x0f\x00\x26\x00\x27\x00\x28\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x09\x00\x20\x00\x21\x00\xff\xff\x23\x00\xff\xff\x0f\x00\x26\x00\x27\x00\x28\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x09\x00\x20\x00\x21\x00\xff\xff\x23\x00\xff\xff\x0f\x00\x26\x00\x27\x00\x28\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x09\x00\x20\x00\x21\x00\xff\xff\x23\x00\xff\xff\x0f\x00\x26\x00\x27\x00\x28\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x09\x00\x20\x00\x21\x00\xff\xff\x23\x00\xff\xff\x0f\x00\x26\x00\x27\x00\x28\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x09\x00\x20\x00\x21\x00\xff\xff\x23\x00\xff\xff\x0f\x00\x26\x00\x27\x00\x28\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\x28\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x09\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\x09\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\xff\xff\x26\x00\x27\x00\x28\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x08\x02\xe7\x01\x23\x03\xf1\x01\x09\x00\x28\x03\xf2\x01\x0a\x02\xf3\x01\xc3\x02\x0a\x00\x4c\xff\xc3\x01\x05\x02\x09\x00\x3e\x02\xdb\x02\xd8\x02\xbc\x02\x4c\xff\x0a\x00\xd1\x01\x68\x02\x09\x00\x43\x00\x36\x00\x0d\x00\x0e\x00\x0f\x00\x0a\x00\x10\x00\x37\x00\x68\x02\x12\x00\x13\x00\x14\x00\x64\x01\x4b\x02\x0f\x00\x1e\x03\x10\x00\x49\x00\x78\x01\x12\x00\x13\x00\x79\x01\x4b\x02\x0f\x00\x3f\x02\x10\x00\xc4\x02\x78\x01\x12\x00\x13\x00\x79\x01\x3e\x00\xdc\x02\xd9\x02\xbd\x02\x19\x03\x6b\x02\x3f\x00\xd2\x01\x4c\x02\x4d\x02\x4e\x02\x4a\x00\x4f\x02\x69\x02\x6a\x02\x6b\x02\xe4\x00\x4c\x02\x4d\x02\x4e\x02\x3e\x00\x18\x03\xe2\x00\x38\x00\x29\x03\xa5\x00\x3f\x00\xf0\x02\xe3\x00\x4a\x00\xf4\x01\xc7\x01\x4b\x00\x34\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x06\x02\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x34\x00\x34\x00\x35\x00\x0b\x02\x1f\x03\x29\x03\x21\x03\x5c\x00\x5d\x00\x0a\x02\xe8\x01\x5e\x00\x5f\x00\x43\x02\xde\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x09\x00\x23\x03\xf1\x01\x7d\x01\xf5\x01\xf2\x01\x0a\x00\xf3\x01\x1e\x03\x09\x00\xb2\x00\x07\x02\x7d\x01\x61\x01\x9d\x00\x0a\x00\x9e\x00\xd3\x01\x85\x01\xa6\x00\x5a\x01\x36\x00\x0d\x00\x0e\x00\x0f\x00\x7d\x02\x10\x00\x37\x00\xff\xff\x12\x00\x13\x00\x14\x00\x77\x01\x0f\x00\xf1\x02\x10\x00\x23\x03\x78\x01\x12\x00\x13\x00\x79\x01\x3e\x00\xc9\x02\xca\x02\xd5\x01\x7e\x02\xe5\x01\x3f\x00\xf0\x02\xe5\x01\xf1\x01\x7f\x02\xa9\x00\xf2\x01\x07\x03\xd6\x02\xd5\x01\x08\x03\x7a\x01\x7b\x01\x80\x02\x7c\x01\xb5\x02\x34\x00\x0b\x02\x59\x02\x34\x00\x5f\xff\xe6\x01\xc3\x01\x05\x02\x24\x03\x25\x03\x26\x03\x38\x00\x34\x00\x35\x00\xd1\x00\x15\x02\x1f\x03\x4a\x00\x6f\x03\x5f\xff\x4b\x00\xe6\x02\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x9b\x01\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x9d\x00\xd0\x02\x9e\x00\xd1\x02\x70\x03\x25\x03\x26\x03\x5c\x00\x5d\x00\x32\x02\x34\x00\x5e\x00\x5f\x00\x33\x02\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x09\x00\xf6\x02\x7d\x01\x9b\x01\x45\x03\x34\x00\x0a\x00\xf1\x01\xb2\x00\x09\x00\xf2\x01\x09\x00\xd1\x02\x81\x00\x82\x00\x0a\x00\x82\x01\x0a\x00\x8d\x02\x09\x00\xb2\x00\x36\x00\x0d\x00\x0e\x00\x0f\x00\x0a\x00\x10\x00\x37\x00\xb3\x00\x12\x00\x13\x00\x14\x00\x4b\x02\x0f\x00\xe5\x01\x10\x00\xc9\x00\x78\x01\x12\x00\x13\x00\x79\x01\xcc\x00\x4b\x02\x0f\x00\xba\x02\x10\x00\xe5\x01\x78\x01\x12\x00\x13\x00\x79\x01\x12\x02\xbf\x00\x64\x02\x24\x00\x13\x02\xe5\x01\x14\x02\x4c\x02\x4d\x02\x87\x02\x70\x02\x89\x01\xa5\x00\x15\x02\x59\x02\xe4\x00\x91\x01\x4c\x02\x4d\x02\x86\x02\x34\x00\x58\x02\x09\x00\x38\x00\x59\x02\x09\x00\x8b\x01\xd5\x00\x0a\x00\x4a\x00\x1e\x03\x0a\x00\x4b\x00\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x38\x03\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x12\x00\x13\x00\xa0\x00\x12\x00\x13\x00\x43\x02\x1c\x02\x5c\x00\x5d\x00\xe3\x01\x1d\x02\x5e\x00\x5f\x00\xf7\x01\xf8\x01\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x09\x00\xcc\x01\x7d\x01\x1f\x03\x20\x03\x21\x03\x0a\x00\x39\x03\x3a\x03\x3b\x03\x3c\x03\x09\x00\x7d\x01\x3d\x03\x09\x00\xf1\x01\xbc\x00\x0a\x00\xc6\x02\xca\x02\x0a\x00\x36\x00\x0d\x00\x0e\x00\x0f\x00\xcc\x01\x10\x00\x37\x00\xe2\x01\x12\x00\x13\x00\x14\x00\xf9\x01\xfa\x01\x4b\x02\x0f\x00\x02\x03\x10\x00\x6e\x02\x78\x01\x12\x00\x13\x00\x79\x01\x12\x00\x13\x00\x52\x01\xc6\x00\xfb\x01\xfe\x02\xfc\x01\xc7\x00\x09\x00\xc8\x00\xbd\x00\xbe\x00\x15\x02\x34\x00\x0a\x00\xbf\x00\xbf\x00\x4c\x02\x4d\x02\x16\x03\x34\x00\xc0\x00\xc6\x00\xdd\x01\x15\x02\xc1\x00\x87\x01\xc2\x00\x88\x01\xd9\x01\x09\x00\x38\x00\xcc\x01\x09\x00\x34\x00\x34\x00\x0a\x00\x4a\x00\xc8\x01\x0a\x00\x4b\x00\x34\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x38\x03\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x12\x00\x13\x00\x43\x02\x12\x00\x13\x00\x43\x02\xb2\x00\x5c\x00\x5d\x00\xa3\x00\xa4\x00\x5e\x00\x5f\x00\xcc\x01\xb3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x09\x00\xd1\x00\xfa\x02\xb2\x00\x7d\x01\x9b\x01\x0a\x00\xfb\x02\x75\x03\x3b\x03\x3c\x03\xfc\x01\xff\x01\x76\x03\x60\x01\xf1\x01\xd4\x00\xd5\x00\xc6\x02\xc7\x02\x8b\x02\x36\x00\x0d\x00\x0e\x00\x0f\x00\xce\x01\x10\x00\x37\x00\x09\x00\x12\x00\x13\x00\x14\x00\x4c\xff\xcc\x01\x0a\x00\x44\x02\x34\x00\x58\x01\xdd\x02\x09\x00\xa5\x01\x59\x01\x09\x00\x5a\x01\x4c\xff\x0a\x00\x4c\xff\xa3\x01\x0a\x00\x36\x00\x0d\x00\x0e\x00\x0f\x00\xa2\x01\x10\x00\x37\x00\xb2\x00\x12\x00\x13\x00\x14\x00\xf9\x01\xfa\x01\x9d\x01\xf1\x01\xfc\x01\xfe\x01\xc6\x02\xee\x02\x12\x00\x13\x00\x43\x02\x12\x00\x13\x00\x43\x02\x38\x00\xfb\x01\x09\x00\xfc\x01\xb8\x02\x0f\x02\x4a\x00\x10\x02\x0a\x00\x4b\x00\x34\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x9b\x01\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x38\x00\xc9\x00\x96\x01\x12\x00\x13\x00\xca\x00\x9a\x01\x5c\x00\x5d\x00\x39\x00\x98\x01\x5e\x00\x5f\x00\x34\x00\x35\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x09\x00\x91\x02\xb2\x00\x12\x02\x47\x03\x97\x01\x0a\x00\x13\x02\x3e\x00\x14\x02\xb3\x00\x95\x01\x09\x00\x61\x01\x3f\x00\x40\x00\x15\x02\xd1\x00\x0a\x00\x90\x01\xb2\x00\x36\x00\x0d\x00\x0e\x00\x0f\x00\x89\x01\x10\x00\x37\x00\xb3\x00\x12\x00\x13\x00\x14\x00\x6e\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x6e\x01\x10\x00\x11\x00\x6d\x01\x12\x00\x13\x00\x14\x00\x89\x01\xf1\x01\x2b\x00\xdb\x00\xf2\x01\x03\x02\x4a\x03\x15\x00\x16\x00\x17\x00\x18\x00\x34\x00\x35\x00\xd7\x00\x65\x01\x8b\x01\xd5\x00\xdc\x00\xb4\x00\xdd\x00\x5f\x01\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x64\x01\xf1\x01\x6f\x01\x70\x01\xf2\x01\x38\x00\x49\x03\x09\x00\xb9\x00\xba\x00\x75\x02\x4a\x00\x70\x02\x0a\x00\x4b\x00\x6d\x02\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x6e\x02\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x34\x00\xe0\x00\x04\x02\x12\x00\x13\x00\xca\x00\x67\x02\x5c\x00\x5d\x00\x46\x00\x08\x00\x5e\x00\x5f\x00\xd9\x00\x18\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x09\x00\xcd\x02\x3e\x00\xce\x02\xc9\x01\xe6\x01\x0a\x00\xb2\x00\x3f\x00\x92\x01\x34\x00\x62\x02\xac\x00\xeb\x01\x60\x02\xfc\x01\xfd\x01\xb2\x00\xc9\x01\xdf\x01\x9e\x00\x0c\x00\x0d\x00\xad\x00\x0f\x00\xb3\x00\x10\x00\x11\x00\x3e\x00\x12\x00\x13\x00\x14\x00\xc9\x01\xd6\x01\x3f\x00\xec\x01\x5f\x02\x09\x00\xb2\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\xae\x00\xbf\x00\xb3\x00\xf1\x01\x5d\x02\xac\x00\xf2\x01\x58\x01\x57\x03\xf1\x01\x5c\x02\x84\x01\xf2\x01\x85\x01\x56\x03\xd1\x00\x5c\x01\x0f\x00\xfa\xfe\x10\x00\x34\x00\xa7\x01\x12\x00\x13\x00\x56\x01\xc9\x01\xd5\x01\xd2\x00\xd3\x00\xf9\xfe\xd4\x00\xd5\x00\xfb\xfe\xbd\x00\xbe\x00\xff\xfe\x89\x01\xae\x00\xbf\x00\x3d\x02\xfc\xfe\x8a\x01\xf1\x01\x1c\x02\x8d\x01\xf2\x01\xfe\xfe\x55\x03\x8e\x01\x35\x02\x8f\x01\x8b\x01\xd5\x00\x1c\x02\x0a\x02\x84\x00\x85\x00\x34\x00\x78\x03\x86\x00\x30\x02\x87\x00\x1c\x00\x2f\x02\x62\xfe\x5c\x00\xaf\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x2e\x02\x1d\x00\x8c\x00\x8d\x00\x8e\x00\x2d\x02\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x1e\x00\x09\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x94\x00\x0a\x00\x1c\x02\x25\x00\x95\x00\x26\x00\x2c\x02\x27\x00\x96\x00\x97\x00\x22\x02\x09\x00\x28\x00\x27\x02\x5c\x00\xaf\x00\x26\x02\x0a\x00\xdf\x00\x0f\x00\x25\x02\x10\x00\xb2\x00\xac\x00\x12\x00\x13\x00\x56\x01\x24\x02\xbd\x00\xbe\x00\xb3\x00\xc9\x01\xd1\x01\xbf\x00\x5c\x01\x0f\x00\x22\x02\x10\x00\x1c\x02\xd7\x00\x12\x00\x13\x00\x56\x01\xd8\x00\x29\x00\xd9\x00\x1f\x02\x2a\x00\x1c\x02\x3b\x00\xc9\x01\xce\x01\x34\x00\x2d\x00\x2e\x00\x73\x01\x2f\x00\xf1\x01\xb2\x00\x3c\x00\xf2\x01\x31\x00\x54\x03\x3d\x00\x89\x01\x3e\x00\xfc\x01\xc5\x02\x0b\x02\x4a\x02\x98\x00\x34\x00\x34\x00\x35\x00\x1a\x02\x36\x00\x0a\x02\x84\x00\x85\x00\x8b\x01\xd5\x00\x86\x00\x18\x02\x87\x00\x1c\x00\x17\x02\x62\xfe\xc9\x01\xca\x01\x88\x00\x89\x00\x8a\x00\x8b\x00\x34\x00\x1d\x00\x8c\x00\x8d\x00\x8e\x00\xeb\x01\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x1e\x00\x09\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x94\x00\x0a\x00\xea\x01\x25\x00\x95\x00\x26\x00\xcc\x01\x27\x00\x96\x00\x97\x00\xc3\x01\xc5\x01\x28\x00\xc3\x01\xc4\x01\x43\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xd6\x02\x10\x00\x11\x00\xdd\x01\x12\x00\x13\x00\x14\x00\xc5\x02\xbd\x00\xbe\x00\xc3\x01\x18\x02\xc0\x02\xbf\x00\x15\x00\x16\x00\x17\x00\x18\x00\xc1\x02\x8d\x01\xc9\x01\xdf\x02\xb0\x02\x8e\x01\x29\x00\x8f\x01\xb8\x02\x2a\x00\x1f\x02\x3b\x00\xc9\x01\xde\x02\x34\x00\x2d\x00\x2e\x00\xaf\x02\x2f\x00\xd3\x02\xd4\x02\x3c\x00\xad\x02\x31\x00\x24\x02\x3d\x00\xab\x02\x3e\x00\xbd\x02\xbe\x02\x0b\x02\xa9\x02\x98\x00\x1c\x02\x34\x00\x35\x00\x44\x00\x36\x00\x84\x00\x85\x00\xb2\x00\xa8\x02\x86\x00\xa7\x02\x87\x00\x1c\x00\xb5\x02\xb6\x02\xb3\x00\x24\x02\x88\x00\x89\x00\x8a\x00\x8b\x00\xa6\x02\x1d\x00\x8c\x00\x8d\x00\x8e\x00\xa3\x02\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x1e\x00\x65\x01\x1f\x00\x20\x00\x21\x00\x22\x00\x94\x00\x3f\x00\x66\x01\x25\x00\x95\x00\x26\x00\xa2\x02\x27\x00\x96\x00\x97\x00\xa1\x02\xd1\x00\x28\x00\x90\x02\x77\x02\x78\x02\x79\x02\x7a\x02\x7b\x02\x1d\x03\x78\x02\x79\x02\x7a\x02\x7b\x02\x5d\x01\x9e\x02\xd4\x00\xd5\x00\x80\x02\x69\x01\x6a\x01\xde\xfe\xde\xfe\x6b\x01\xb2\x02\xb3\x02\xde\xfe\x99\x02\xde\xfe\x0d\x02\x0e\x02\x0f\x02\xde\xfe\x10\x02\x29\x00\x97\x02\xde\xfe\x2a\x00\xde\xfe\x3b\x00\x8d\x02\x8e\x02\x96\x02\x2d\x00\x2e\x00\xde\xfe\x2f\x00\xc9\x01\xf2\x02\x3c\x00\x89\x02\x31\x00\x24\x02\x3d\x00\x1c\x02\x3e\x00\xc9\x01\xef\x02\xfa\xfd\x84\x02\x98\x00\x70\x02\x34\x00\x35\x00\x83\x02\x36\x00\xfa\xfd\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\x0c\x01\x0d\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\x20\x01\x21\x01\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x34\x01\x35\x01\x36\x01\x37\x01\x38\x01\x39\x01\x3a\x01\x3b\x01\x3c\x01\x3d\x01\x3e\x01\x3f\x01\x40\x01\x41\x01\x42\x01\x43\x01\x44\x01\x45\x01\x46\x01\x47\x01\x48\x01\x49\x01\x4a\x01\x4b\x01\x4c\x01\x4d\x01\x4e\x01\x4f\x01\x50\x01\x51\x01\x52\x01\x84\x00\x85\x00\x3f\x03\x40\x03\x86\x00\x41\x03\x87\x00\x1c\x00\x82\x02\x62\xfe\x1d\x03\x42\x03\x88\x00\x89\x00\x8a\x00\x43\x03\x1c\x03\x1d\x00\x8c\x00\x8d\x00\x8e\x00\x44\x03\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x1e\x00\x65\x01\x1f\x00\x20\x00\x21\x00\x22\x00\x94\x00\x3f\x00\x66\x01\x25\x00\x95\x00\x26\x00\x1b\x03\x27\x00\x96\x00\x97\x00\xb2\x00\x09\x00\x28\x00\xc3\x01\xeb\x02\xc3\x01\xea\x02\x0a\x00\xb3\x00\xc3\x01\xe9\x02\xbd\x00\xbe\x00\xac\x00\xc3\x01\xe8\x02\xbf\x00\x67\x01\x68\x01\x69\x01\x6a\x01\x34\x00\xd7\x00\x6b\x01\x5c\x01\x0f\x00\xd8\x00\x10\x00\xd9\x00\x15\x03\x12\x00\x13\x00\x56\x01\x14\x03\x29\x00\x34\x00\x13\x03\x2a\x00\x24\x02\x3b\x00\xc9\x01\xe4\x02\x89\x01\x2d\x00\x2e\x00\x76\x01\x2f\x00\x49\x02\x10\x03\x3c\x00\x0f\x03\x31\x00\x0e\x03\x3d\x00\x0d\x03\x3e\x00\x0c\x03\x8b\x01\xd5\x00\x0b\x03\x98\x00\x24\x02\x34\x00\x35\x00\x0a\x03\x36\x00\x84\x00\x85\x00\x3f\x03\x40\x03\x86\x00\x41\x03\x87\x00\x1c\x00\xc9\x01\xe2\x02\x05\x03\x42\x03\x88\x00\x89\x00\x8a\x00\x43\x03\x04\x03\x1d\x00\x8c\x00\x8d\x00\x8e\x00\x44\x03\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x1e\x00\x03\x03\x1f\x00\x20\x00\x21\x00\x22\x00\x94\x00\x34\x03\x31\x03\x25\x00\x95\x00\x26\x00\x00\x03\x27\x00\x96\x00\x97\x00\xb2\x00\x09\x00\x28\x00\xff\x02\x30\x03\x31\x03\x15\x02\x0a\x00\xb3\x00\x76\x02\x77\x02\x78\x02\x79\x02\x7a\x02\x7b\x02\xe0\x02\x77\x02\x78\x02\x79\x02\x7a\x02\x7b\x02\xfa\x02\xcb\x00\x0d\x00\x0e\x00\x0f\x00\xf4\x02\x10\x00\x37\x00\x34\x00\x12\x00\x13\x00\x14\x00\xcc\x01\x29\x00\x2a\x03\x8e\x02\x2a\x00\xe8\x02\x3b\x00\x5e\x03\x5f\x03\xed\x01\x2d\x00\x2e\x00\xee\x02\x2f\x00\xc9\x01\xd6\x01\x3c\x00\xcc\x01\x31\x00\x34\x00\x3d\x00\x52\x03\x3e\x00\x0b\x02\xef\x01\xd5\x00\x51\x03\x98\x00\x4f\x03\x34\x00\x35\x00\x4d\x03\x36\x00\x82\xff\x82\xff\xb2\x00\x45\x03\x82\xff\x15\x02\x82\xff\x82\xff\x37\x03\x82\xff\xb3\x00\x36\x03\x82\xff\x82\xff\x82\xff\x82\xff\x34\x03\x82\xff\x82\xff\x82\xff\x82\xff\x33\x03\x82\xff\x82\xff\x82\xff\x82\xff\x82\xff\x82\xff\x30\x03\x82\xff\x82\xff\x82\xff\x82\xff\x82\xff\xc9\x01\x53\x03\x82\xff\x82\xff\x82\xff\x2e\x03\x82\xff\x82\xff\x82\xff\xb2\x00\xed\x01\x82\xff\xc9\x01\x52\x03\x6e\x03\x2d\x03\x6f\x03\xb3\x00\xbd\x00\xbe\x00\x6b\x03\x34\x00\x6a\x03\xbf\x00\x01\x02\xef\x01\xd5\x00\x69\x03\xb2\x00\x8d\x01\x5c\x03\x67\x03\x28\x03\x8e\x01\x66\x03\x8f\x01\xb3\x00\x15\x02\x63\x03\xbd\x00\xbe\x00\x75\x03\x34\x00\x82\xff\xbf\x00\x15\x02\x82\xff\x34\x00\x82\xff\xfa\x02\xd7\x00\xed\x01\x82\xff\x82\xff\xd8\x00\x82\xff\x0d\x02\xcc\x01\x82\xff\x34\x00\x82\xff\x74\x03\x82\xff\x34\x00\x82\xff\x00\x02\xef\x01\xd5\x00\x34\x00\x82\xff\xed\x01\x82\xff\x82\xff\x7c\x03\x82\xff\x84\x00\x85\x00\x08\x00\x41\x00\x86\x00\xe4\x00\x87\x00\x1c\x00\xa5\x00\xf0\x01\xef\x01\xd5\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\xcf\x00\x1d\x00\x8c\x00\x8d\x00\x8e\x00\xce\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x1e\x00\xa1\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x94\x00\x47\x00\xe3\x01\x25\x00\x95\x00\x26\x00\xde\x01\x27\x00\x96\x00\x97\x00\x1c\x00\xe0\x01\x28\x00\x46\x03\x77\x02\x78\x02\x79\x02\x7a\x02\x7b\x02\xdd\x01\xb1\x00\xda\x01\xdb\x01\xd9\x01\xd7\x01\xb2\x00\xcf\x01\xcc\x01\xc7\x01\xa3\x01\x1e\x00\xa0\x01\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x9b\x01\x98\x01\x25\x00\x93\x01\x26\x00\x62\x01\x27\x00\x29\x00\x73\x02\x72\x02\x2a\x00\x28\x00\x3b\x00\x65\x02\x64\x02\x3b\x02\x2d\x00\x2e\x00\x62\x02\x2f\x00\x62\x01\x60\x02\x3c\x00\x59\x02\x31\x00\x5d\x02\x3d\x00\x56\x02\x3e\x00\x3a\x02\x39\x02\x30\x02\x38\x02\x98\x00\x37\x02\x34\x00\x35\x00\x27\x02\x36\x00\x02\x02\x36\x02\xb2\x00\x35\x02\x29\x00\x22\x02\x33\x02\x2a\x00\x2b\x00\x2c\x00\xb3\x00\x2a\x02\x29\x02\x2d\x00\x2e\x00\x28\x02\x2f\x00\x1c\x00\x20\x02\x30\x00\xa0\x00\x31\x00\x1f\x02\x32\x00\x1a\x02\x33\x00\xb2\x00\x1d\x00\xce\x02\xd2\x02\xcb\x02\xad\x02\x34\x00\x35\x00\xb3\x00\x36\x00\xab\x02\x1e\x00\xa9\x02\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xed\x01\xa4\x02\x25\x00\x1c\x00\x26\x00\xa3\x02\x27\x00\x9f\x02\x9e\x02\x9c\x02\x9b\x02\x28\x00\xb2\x00\x1d\x00\xee\x01\xef\x01\xd5\x00\x97\x02\x9a\x02\x99\x02\xb3\x00\x94\x02\x8b\x02\x1e\x00\xed\x01\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x89\x02\x93\x02\x25\x00\x92\x02\x26\x00\x15\x03\x27\x00\x11\x03\xdc\x02\xef\x01\xd5\x00\x28\x00\xb2\x00\x29\x00\x10\x03\x08\x03\x2a\x00\x2b\x00\x2c\x00\xf8\x02\xb3\x00\x05\x03\x2d\x00\x2e\x00\xed\x01\x2f\x00\xce\x02\xcb\x02\x30\x00\x00\x03\x31\x00\xec\x02\x32\x00\x9d\x00\x33\x00\x9e\x00\x4d\x03\xfc\x02\xd9\x02\xef\x01\xd5\x00\x34\x00\x35\x00\x29\x00\x36\x00\x4b\x03\x90\x02\x2b\x00\x2c\x00\x37\x03\x6c\x03\x6b\x03\x2d\x00\x2e\x00\xed\x01\x2f\x00\x1c\x00\x2e\x03\x30\x00\x67\x03\x31\x00\x5d\x03\x32\x00\x9d\x00\x33\x00\x9e\x00\x1d\x00\x5c\x03\xc1\x02\xef\x01\xd5\x00\x34\x00\x35\x00\x64\x03\x36\x00\x78\x03\x1e\x00\x63\x03\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x72\x03\x71\x03\x25\x00\x1c\x00\x26\x00\x61\x03\x27\x00\x5a\x03\x7a\x03\x60\x03\x79\x03\x28\x00\x00\x00\x1d\x00\x2b\x03\x77\x02\x78\x02\x79\x02\x7a\x02\x7b\x02\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x59\x03\x2b\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x9d\x00\x33\x00\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x29\x00\x36\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x1c\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x09\x00\x00\x00\x34\x00\x35\x00\x00\x00\x36\x00\x0a\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x1c\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\xdf\x00\x0f\x00\x28\x00\x10\x00\x1d\x00\x5a\x02\x12\x00\x13\x00\x79\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x3b\xff\x2f\x00\x00\x00\x3b\xff\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x59\x03\x77\x02\x78\x02\x79\x02\x7a\x02\x7b\x02\x34\x00\x35\x00\x29\x00\x36\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x1c\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x33\x00\x9a\x00\x1d\x00\x00\x00\x00\x00\x09\x00\x00\x00\x34\x00\x35\x00\x00\x00\x36\x00\x0a\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x1c\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x54\x02\x0f\x00\x28\x00\x10\x00\x1d\x00\x55\x02\x12\x00\x13\x00\x79\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\xbd\x00\xbe\x00\x28\x00\x00\x00\x29\x00\xbf\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x8d\x01\x00\x00\x2d\x00\x2e\x00\x8e\x01\x2f\x00\x8f\x01\x00\x00\x30\x00\xa0\x00\x31\x00\x00\x00\x32\x00\x34\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x29\x00\x36\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x1c\x00\x33\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\xb1\x00\x36\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1c\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\xbd\x00\xbe\x00\x00\x00\x00\x00\x29\x00\xbf\x00\x00\x00\x2a\x00\x00\x00\x3b\x00\x00\x00\xd7\x00\x00\x00\x2d\x00\x2e\x00\xd8\x00\x2f\x00\xd9\x00\x00\x00\x3c\x00\x82\x01\x31\x00\x00\x00\x3d\x00\x34\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x34\x00\x35\x00\x2a\x00\x36\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x1c\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x9d\x00\x3e\x00\x9e\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x00\x00\x36\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x1c\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7f\x01\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x34\x00\x35\x00\x29\x00\x36\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x1c\x00\x00\x00\x30\x00\xa0\x00\x31\x00\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x00\x00\x36\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1c\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x28\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x33\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x34\x00\x35\x00\x2a\x00\x36\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x1c\x00\x00\x00\x3c\x00\x49\x02\x31\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x00\x00\x36\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x1c\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x9d\x00\x3e\x00\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x29\x00\x36\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x1c\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\xb1\x00\x36\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x1c\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x29\x00\x36\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x1c\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x00\x00\x36\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1c\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x39\xff\x2f\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x34\x00\x35\x00\x2a\x00\x36\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x1c\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x80\x01\x00\x00\x34\x00\x35\x00\x00\x00\x36\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x1c\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x47\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x29\x00\x36\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x1c\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x00\x00\x36\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x1c\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x34\x00\x35\x00\x29\x00\x36\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x82\xff\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\x82\xff\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x00\x00\x36\x00\x00\x00\x82\xff\x00\x00\x82\xff\x82\xff\x82\xff\x82\xff\x82\xff\x00\x00\x00\x00\x82\xff\x1c\x00\x82\xff\x00\x00\x82\xff\x00\x00\x00\x00\x00\x00\x00\x00\x82\xff\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x82\xff\x00\x00\x00\x00\x82\xff\x82\xff\x82\xff\x00\x00\x00\x00\x00\x00\x82\xff\x82\xff\x00\x00\x82\xff\x00\x00\x00\x00\x82\xff\x00\x00\x82\xff\x00\x00\x82\xff\x00\x00\x82\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\xff\x82\xff\x29\x00\x82\xff\x00\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x1c\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x00\x00\x36\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x1c\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x34\x00\x35\x00\x29\x00\x36\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x1c\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x00\x00\x36\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x1c\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x34\x00\x35\x00\x29\x00\x36\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x1c\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x00\x00\x36\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x09\x00\x00\x00\x80\x01\x28\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x5b\x01\xa7\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x55\x01\x0f\x00\x27\x00\x10\x00\x00\x00\x00\x00\x12\x00\x13\x00\x56\x01\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\xaa\x00\x2d\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x34\x00\x35\x00\x2a\x00\x36\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x1e\x00\x36\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x09\x00\x00\x00\x47\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x5b\x01\xa7\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x55\x01\x0f\x00\x27\x00\x10\x00\x00\x00\x00\x00\x12\x00\x13\x00\x56\x01\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\xaa\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x34\x00\x35\x00\x2a\x00\x36\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x31\x00\x00\x00\xc4\x00\x00\x00\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x1e\x00\x36\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xa6\x00\xa7\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x55\x01\x0f\x00\x27\x00\x10\x00\x00\x00\x00\x00\x12\x00\x13\x00\x56\x01\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x72\x01\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x34\x00\x35\x00\x2a\x00\x36\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x1e\x00\x36\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xa6\x00\xa7\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x55\x01\x0f\x00\x27\x00\x10\x00\x00\x00\x00\x00\x12\x00\x13\x00\x56\x01\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x71\x01\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x34\x00\x35\x00\x2a\x00\x36\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x46\x02\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x1e\x00\x36\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x5b\x01\xa7\x00\x1e\x00\x00\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x23\x00\x00\x00\x00\x00\x25\x00\x00\x00\x55\x01\x0f\x00\x27\x00\x10\x00\x00\x00\x00\x00\x12\x00\x13\x00\x56\x01\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\xaa\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x34\x00\x35\x00\x2a\x00\x36\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x00\x00\x09\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x0a\x00\x49\x03\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x00\x00\x36\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x19\x00\x1a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x84\x02\x70\x01\x00\x00\x00\x00\x00\x00\x9e\x00\x0c\x00\x0d\x00\xad\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x09\x00\x76\x01\x9a\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xa6\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x0c\x00\x0d\x00\xa8\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\xaa\x00\x09\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xa6\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x0c\x00\x0d\x00\xa8\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x15\x00\x16\x00\x17\x00\x18\x00\x75\x01\x0a\x00\x00\x00\x00\x00\x00\x00\xa6\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x00\x0c\x00\x0d\x00\xa8\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x15\x00\x16\x00\x17\x00\x18\x00\xa9\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xa6\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x00\x0c\x00\x0d\x00\xa8\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xba\x02\x15\x00\x16\x00\x17\x00\x18\x00\x74\x01\x0a\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x5a\x01\x9d\x01\x0e\x00\x0f\x00\x00\x00\x10\x00\x37\x00\x00\x00\x12\x00\x13\x00\x14\x00\x09\x00\x55\x01\x0f\x00\x00\x00\x10\x00\x00\x00\x0a\x00\x12\x00\x13\x00\x56\x01\xa6\x00\x5a\x01\x00\x00\x00\x00\x69\x02\x6a\x02\x6b\x02\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x09\x00\x55\x01\x0f\x00\x00\x00\x10\x00\x00\x00\x0a\x00\x12\x00\x13\x00\x56\x01\xa6\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x09\x00\x55\x01\x0f\x00\x00\x00\x10\x00\x00\x00\x0a\x00\x12\x00\x13\x00\x56\x01\xa6\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x00\x09\x00\x55\x01\x0f\x00\x00\x00\x10\x00\x00\x00\x0a\x00\x12\x00\x13\x00\x56\x01\xa6\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x09\x00\x55\x01\x0f\x00\x00\x00\x10\x00\x00\x00\x0a\x00\x12\x00\x13\x00\x56\x01\xa6\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x01\x09\x00\x55\x01\x0f\x00\x00\x00\x10\x00\x00\x00\x0a\x00\x12\x00\x13\x00\x56\x01\x53\x02\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x01\x09\x00\x55\x01\x0f\x00\x00\x00\x10\x00\x00\x00\x0a\x00\x12\x00\x13\x00\x56\x01\x52\x02\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x01\x09\x00\x55\x01\x0f\x00\x00\x00\x10\x00\x00\x00\x0a\x00\x12\x00\x13\x00\x56\x01\x51\x02\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x01\x09\x00\x55\x01\x0f\x00\x00\x00\x10\x00\x00\x00\x0a\x00\x12\x00\x13\x00\x56\x01\x50\x02\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x01\x09\x00\x55\x01\x0f\x00\x00\x00\x10\x00\x00\x00\x0a\x00\x12\x00\x13\x00\x56\x01\xa6\x00\x5a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x01\x00\x00\x55\x01\x0f\x00\x00\x00\x10\x00\x00\x00\x00\x00\x12\x00\x13\x00\x56\x01\x09\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x03\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x03\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x10\x00\x11\x00\x09\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x09\x00\x00\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x02\x0e\x00\x0f\x00\x00\x00\x10\x00\x37\x00\x00\x00\x12\x00\x13\x00\x14\x00\xdf\x00\x0f\x00\x00\x00\x10\x00\xe0\x00\x00\x00\x12\x00\x13\x00\x14\x00\xa6\x01\xa7\x01\xa8\x01\xa9\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xae\x01\xaf\x01\xb0\x01\xb1\x01\xb2\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xb8\x01\xb9\x01\xba\x01\xbb\x01\xbc\x01\xbd\x01\xbe\x01\xbf\x01\xc0\x01\xc1\x01\xc2\x01\xc3\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"#--happyReduceArr = Happy_Data_Array.array (7, 518) [-	(7 , happyReduce_7),-	(8 , happyReduce_8),-	(9 , happyReduce_9),-	(10 , happyReduce_10),-	(11 , happyReduce_11),-	(12 , happyReduce_12),-	(13 , happyReduce_13),-	(14 , happyReduce_14),-	(15 , happyReduce_15),-	(16 , happyReduce_16),-	(17 , happyReduce_17),-	(18 , happyReduce_18),-	(19 , happyReduce_19),-	(20 , happyReduce_20),-	(21 , happyReduce_21),-	(22 , happyReduce_22),-	(23 , happyReduce_23),-	(24 , happyReduce_24),-	(25 , happyReduce_25),-	(26 , happyReduce_26),-	(27 , happyReduce_27),-	(28 , happyReduce_28),-	(29 , happyReduce_29),-	(30 , happyReduce_30),-	(31 , happyReduce_31),-	(32 , happyReduce_32),-	(33 , happyReduce_33),-	(34 , happyReduce_34),-	(35 , happyReduce_35),-	(36 , happyReduce_36),-	(37 , happyReduce_37),-	(38 , happyReduce_38),-	(39 , happyReduce_39),-	(40 , happyReduce_40),-	(41 , happyReduce_41),-	(42 , happyReduce_42),-	(43 , happyReduce_43),-	(44 , happyReduce_44),-	(45 , happyReduce_45),-	(46 , happyReduce_46),-	(47 , happyReduce_47),-	(48 , happyReduce_48),-	(49 , happyReduce_49),-	(50 , happyReduce_50),-	(51 , happyReduce_51),-	(52 , happyReduce_52),-	(53 , happyReduce_53),-	(54 , happyReduce_54),-	(55 , happyReduce_55),-	(56 , happyReduce_56),-	(57 , happyReduce_57),-	(58 , happyReduce_58),-	(59 , happyReduce_59),-	(60 , happyReduce_60),-	(61 , happyReduce_61),-	(62 , happyReduce_62),-	(63 , happyReduce_63),-	(64 , happyReduce_64),-	(65 , happyReduce_65),-	(66 , happyReduce_66),-	(67 , happyReduce_67),-	(68 , happyReduce_68),-	(69 , happyReduce_69),-	(70 , happyReduce_70),-	(71 , happyReduce_71),-	(72 , happyReduce_72),-	(73 , happyReduce_73),-	(74 , happyReduce_74),-	(75 , happyReduce_75),-	(76 , happyReduce_76),-	(77 , happyReduce_77),-	(78 , happyReduce_78),-	(79 , happyReduce_79),-	(80 , happyReduce_80),-	(81 , happyReduce_81),-	(82 , happyReduce_82),-	(83 , happyReduce_83),-	(84 , happyReduce_84),-	(85 , happyReduce_85),-	(86 , happyReduce_86),-	(87 , happyReduce_87),-	(88 , happyReduce_88),-	(89 , happyReduce_89),-	(90 , happyReduce_90),-	(91 , happyReduce_91),-	(92 , happyReduce_92),-	(93 , happyReduce_93),-	(94 , happyReduce_94),-	(95 , happyReduce_95),-	(96 , happyReduce_96),-	(97 , happyReduce_97),-	(98 , happyReduce_98),-	(99 , happyReduce_99),-	(100 , happyReduce_100),-	(101 , happyReduce_101),-	(102 , happyReduce_102),-	(103 , happyReduce_103),-	(104 , happyReduce_104),-	(105 , happyReduce_105),-	(106 , happyReduce_106),-	(107 , happyReduce_107),-	(108 , happyReduce_108),-	(109 , happyReduce_109),-	(110 , happyReduce_110),-	(111 , happyReduce_111),-	(112 , happyReduce_112),-	(113 , happyReduce_113),-	(114 , happyReduce_114),-	(115 , happyReduce_115),-	(116 , happyReduce_116),-	(117 , happyReduce_117),-	(118 , happyReduce_118),-	(119 , happyReduce_119),-	(120 , happyReduce_120),-	(121 , happyReduce_121),-	(122 , happyReduce_122),-	(123 , happyReduce_123),-	(124 , happyReduce_124),-	(125 , happyReduce_125),-	(126 , happyReduce_126),-	(127 , happyReduce_127),-	(128 , happyReduce_128),-	(129 , happyReduce_129),-	(130 , happyReduce_130),-	(131 , happyReduce_131),-	(132 , happyReduce_132),-	(133 , happyReduce_133),-	(134 , happyReduce_134),-	(135 , happyReduce_135),-	(136 , happyReduce_136),-	(137 , happyReduce_137),-	(138 , happyReduce_138),-	(139 , happyReduce_139),-	(140 , happyReduce_140),-	(141 , happyReduce_141),-	(142 , happyReduce_142),-	(143 , happyReduce_143),-	(144 , happyReduce_144),-	(145 , happyReduce_145),-	(146 , happyReduce_146),-	(147 , happyReduce_147),-	(148 , happyReduce_148),-	(149 , happyReduce_149),-	(150 , happyReduce_150),-	(151 , happyReduce_151),-	(152 , happyReduce_152),-	(153 , happyReduce_153),-	(154 , happyReduce_154),-	(155 , happyReduce_155),-	(156 , happyReduce_156),-	(157 , happyReduce_157),-	(158 , happyReduce_158),-	(159 , happyReduce_159),-	(160 , happyReduce_160),-	(161 , happyReduce_161),-	(162 , happyReduce_162),-	(163 , happyReduce_163),-	(164 , happyReduce_164),-	(165 , happyReduce_165),-	(166 , happyReduce_166),-	(167 , happyReduce_167),-	(168 , happyReduce_168),-	(169 , happyReduce_169),-	(170 , happyReduce_170),-	(171 , happyReduce_171),-	(172 , happyReduce_172),-	(173 , happyReduce_173),-	(174 , happyReduce_174),-	(175 , happyReduce_175),-	(176 , happyReduce_176),-	(177 , happyReduce_177),-	(178 , happyReduce_178),-	(179 , happyReduce_179),-	(180 , happyReduce_180),-	(181 , happyReduce_181),-	(182 , happyReduce_182),-	(183 , happyReduce_183),-	(184 , happyReduce_184),-	(185 , happyReduce_185),-	(186 , happyReduce_186),-	(187 , happyReduce_187),-	(188 , happyReduce_188),-	(189 , happyReduce_189),-	(190 , happyReduce_190),-	(191 , happyReduce_191),-	(192 , happyReduce_192),-	(193 , happyReduce_193),-	(194 , happyReduce_194),-	(195 , happyReduce_195),-	(196 , happyReduce_196),-	(197 , happyReduce_197),-	(198 , happyReduce_198),-	(199 , happyReduce_199),-	(200 , happyReduce_200),-	(201 , happyReduce_201),-	(202 , happyReduce_202),-	(203 , happyReduce_203),-	(204 , happyReduce_204),-	(205 , happyReduce_205),-	(206 , happyReduce_206),-	(207 , happyReduce_207),-	(208 , happyReduce_208),-	(209 , happyReduce_209),-	(210 , happyReduce_210),-	(211 , happyReduce_211),-	(212 , happyReduce_212),-	(213 , happyReduce_213),-	(214 , happyReduce_214),-	(215 , happyReduce_215),-	(216 , happyReduce_216),-	(217 , happyReduce_217),-	(218 , happyReduce_218),-	(219 , happyReduce_219),-	(220 , happyReduce_220),-	(221 , happyReduce_221),-	(222 , happyReduce_222),-	(223 , happyReduce_223),-	(224 , happyReduce_224),-	(225 , happyReduce_225),-	(226 , happyReduce_226),-	(227 , happyReduce_227),-	(228 , happyReduce_228),-	(229 , happyReduce_229),-	(230 , happyReduce_230),-	(231 , happyReduce_231),-	(232 , happyReduce_232),-	(233 , happyReduce_233),-	(234 , happyReduce_234),-	(235 , happyReduce_235),-	(236 , happyReduce_236),-	(237 , happyReduce_237),-	(238 , happyReduce_238),-	(239 , happyReduce_239),-	(240 , happyReduce_240),-	(241 , happyReduce_241),-	(242 , happyReduce_242),-	(243 , happyReduce_243),-	(244 , happyReduce_244),-	(245 , happyReduce_245),-	(246 , happyReduce_246),-	(247 , happyReduce_247),-	(248 , happyReduce_248),-	(249 , happyReduce_249),-	(250 , happyReduce_250),-	(251 , happyReduce_251),-	(252 , happyReduce_252),-	(253 , happyReduce_253),-	(254 , happyReduce_254),-	(255 , happyReduce_255),-	(256 , happyReduce_256),-	(257 , happyReduce_257),-	(258 , happyReduce_258),-	(259 , happyReduce_259),-	(260 , happyReduce_260),-	(261 , happyReduce_261),-	(262 , happyReduce_262),-	(263 , happyReduce_263),-	(264 , happyReduce_264),-	(265 , happyReduce_265),-	(266 , happyReduce_266),-	(267 , happyReduce_267),-	(268 , happyReduce_268),-	(269 , happyReduce_269),-	(270 , happyReduce_270),-	(271 , happyReduce_271),-	(272 , happyReduce_272),-	(273 , happyReduce_273),-	(274 , happyReduce_274),-	(275 , happyReduce_275),-	(276 , happyReduce_276),-	(277 , happyReduce_277),-	(278 , happyReduce_278),-	(279 , happyReduce_279),-	(280 , happyReduce_280),-	(281 , happyReduce_281),-	(282 , happyReduce_282),-	(283 , happyReduce_283),-	(284 , happyReduce_284),-	(285 , happyReduce_285),-	(286 , happyReduce_286),-	(287 , happyReduce_287),-	(288 , happyReduce_288),-	(289 , happyReduce_289),-	(290 , happyReduce_290),-	(291 , happyReduce_291),-	(292 , happyReduce_292),-	(293 , happyReduce_293),-	(294 , happyReduce_294),-	(295 , happyReduce_295),-	(296 , happyReduce_296),-	(297 , happyReduce_297),-	(298 , happyReduce_298),-	(299 , happyReduce_299),-	(300 , happyReduce_300),-	(301 , happyReduce_301),-	(302 , happyReduce_302),-	(303 , happyReduce_303),-	(304 , happyReduce_304),-	(305 , happyReduce_305),-	(306 , happyReduce_306),-	(307 , happyReduce_307),-	(308 , happyReduce_308),-	(309 , happyReduce_309),-	(310 , happyReduce_310),-	(311 , happyReduce_311),-	(312 , happyReduce_312),-	(313 , happyReduce_313),-	(314 , happyReduce_314),-	(315 , happyReduce_315),-	(316 , happyReduce_316),-	(317 , happyReduce_317),-	(318 , happyReduce_318),-	(319 , happyReduce_319),-	(320 , happyReduce_320),-	(321 , happyReduce_321),-	(322 , happyReduce_322),-	(323 , happyReduce_323),-	(324 , happyReduce_324),-	(325 , happyReduce_325),-	(326 , happyReduce_326),-	(327 , happyReduce_327),-	(328 , happyReduce_328),-	(329 , happyReduce_329),-	(330 , happyReduce_330),-	(331 , happyReduce_331),-	(332 , happyReduce_332),-	(333 , happyReduce_333),-	(334 , happyReduce_334),-	(335 , happyReduce_335),-	(336 , happyReduce_336),-	(337 , happyReduce_337),-	(338 , happyReduce_338),-	(339 , happyReduce_339),-	(340 , happyReduce_340),-	(341 , happyReduce_341),-	(342 , happyReduce_342),-	(343 , happyReduce_343),-	(344 , happyReduce_344),-	(345 , happyReduce_345),-	(346 , happyReduce_346),-	(347 , happyReduce_347),-	(348 , happyReduce_348),-	(349 , happyReduce_349),-	(350 , happyReduce_350),-	(351 , happyReduce_351),-	(352 , happyReduce_352),-	(353 , happyReduce_353),-	(354 , happyReduce_354),-	(355 , happyReduce_355),-	(356 , happyReduce_356),-	(357 , happyReduce_357),-	(358 , happyReduce_358),-	(359 , happyReduce_359),-	(360 , happyReduce_360),-	(361 , happyReduce_361),-	(362 , happyReduce_362),-	(363 , happyReduce_363),-	(364 , happyReduce_364),-	(365 , happyReduce_365),-	(366 , happyReduce_366),-	(367 , happyReduce_367),-	(368 , happyReduce_368),-	(369 , happyReduce_369),-	(370 , happyReduce_370),-	(371 , happyReduce_371),-	(372 , happyReduce_372),-	(373 , happyReduce_373),-	(374 , happyReduce_374),-	(375 , happyReduce_375),-	(376 , happyReduce_376),-	(377 , happyReduce_377),-	(378 , happyReduce_378),-	(379 , happyReduce_379),-	(380 , happyReduce_380),-	(381 , happyReduce_381),-	(382 , happyReduce_382),-	(383 , happyReduce_383),-	(384 , happyReduce_384),-	(385 , happyReduce_385),-	(386 , happyReduce_386),-	(387 , happyReduce_387),-	(388 , happyReduce_388),-	(389 , happyReduce_389),-	(390 , happyReduce_390),-	(391 , happyReduce_391),-	(392 , happyReduce_392),-	(393 , happyReduce_393),-	(394 , happyReduce_394),-	(395 , happyReduce_395),-	(396 , happyReduce_396),-	(397 , happyReduce_397),-	(398 , happyReduce_398),-	(399 , happyReduce_399),-	(400 , happyReduce_400),-	(401 , happyReduce_401),-	(402 , happyReduce_402),-	(403 , happyReduce_403),-	(404 , happyReduce_404),-	(405 , happyReduce_405),-	(406 , happyReduce_406),-	(407 , happyReduce_407),-	(408 , happyReduce_408),-	(409 , happyReduce_409),-	(410 , happyReduce_410),-	(411 , happyReduce_411),-	(412 , happyReduce_412),-	(413 , happyReduce_413),-	(414 , happyReduce_414),-	(415 , happyReduce_415),-	(416 , happyReduce_416),-	(417 , happyReduce_417),-	(418 , happyReduce_418),-	(419 , happyReduce_419),-	(420 , happyReduce_420),-	(421 , happyReduce_421),-	(422 , happyReduce_422),-	(423 , happyReduce_423),-	(424 , happyReduce_424),-	(425 , happyReduce_425),-	(426 , happyReduce_426),-	(427 , happyReduce_427),-	(428 , happyReduce_428),-	(429 , happyReduce_429),-	(430 , happyReduce_430),-	(431 , happyReduce_431),-	(432 , happyReduce_432),-	(433 , happyReduce_433),-	(434 , happyReduce_434),-	(435 , happyReduce_435),-	(436 , happyReduce_436),-	(437 , happyReduce_437),-	(438 , happyReduce_438),-	(439 , happyReduce_439),-	(440 , happyReduce_440),-	(441 , happyReduce_441),-	(442 , happyReduce_442),-	(443 , happyReduce_443),-	(444 , happyReduce_444),-	(445 , happyReduce_445),-	(446 , happyReduce_446),-	(447 , happyReduce_447),-	(448 , happyReduce_448),-	(449 , happyReduce_449),-	(450 , happyReduce_450),-	(451 , happyReduce_451),-	(452 , happyReduce_452),-	(453 , happyReduce_453),-	(454 , happyReduce_454),-	(455 , happyReduce_455),-	(456 , happyReduce_456),-	(457 , happyReduce_457),-	(458 , happyReduce_458),-	(459 , happyReduce_459),-	(460 , happyReduce_460),-	(461 , happyReduce_461),-	(462 , happyReduce_462),-	(463 , happyReduce_463),-	(464 , happyReduce_464),-	(465 , happyReduce_465),-	(466 , happyReduce_466),-	(467 , happyReduce_467),-	(468 , happyReduce_468),-	(469 , happyReduce_469),-	(470 , happyReduce_470),-	(471 , happyReduce_471),-	(472 , happyReduce_472),-	(473 , happyReduce_473),-	(474 , happyReduce_474),-	(475 , happyReduce_475),-	(476 , happyReduce_476),-	(477 , happyReduce_477),-	(478 , happyReduce_478),-	(479 , happyReduce_479),-	(480 , happyReduce_480),-	(481 , happyReduce_481),-	(482 , happyReduce_482),-	(483 , happyReduce_483),-	(484 , happyReduce_484),-	(485 , happyReduce_485),-	(486 , happyReduce_486),-	(487 , happyReduce_487),-	(488 , happyReduce_488),-	(489 , happyReduce_489),-	(490 , happyReduce_490),-	(491 , happyReduce_491),-	(492 , happyReduce_492),-	(493 , happyReduce_493),-	(494 , happyReduce_494),-	(495 , happyReduce_495),-	(496 , happyReduce_496),-	(497 , happyReduce_497),-	(498 , happyReduce_498),-	(499 , happyReduce_499),-	(500 , happyReduce_500),-	(501 , happyReduce_501),-	(502 , happyReduce_502),-	(503 , happyReduce_503),-	(504 , happyReduce_504),-	(505 , happyReduce_505),-	(506 , happyReduce_506),-	(507 , happyReduce_507),-	(508 , happyReduce_508),-	(509 , happyReduce_509),-	(510 , happyReduce_510),-	(511 , happyReduce_511),-	(512 , happyReduce_512),-	(513 , happyReduce_513),-	(514 , happyReduce_514),-	(515 , happyReduce_515),-	(516 , happyReduce_516),-	(517 , happyReduce_517),-	(518 , happyReduce_518)-	]--happy_n_terms = 111 :: Int-happy_n_nonterms = 173 :: Int--happyReduce_7 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_7 = happySpecReduce_1  0# happyReduction_7-happyReduction_7 happy_x_1-	 =  case happyOut11 happy_x_1 of { happy_var_1 -> -	happyIn10-		 (reverse happy_var_1-	)}--happyReduce_8 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_8 = happySpecReduce_2  1# happyReduction_8-happyReduction_8 happy_x_2-	happy_x_1-	 =  case happyOut11 happy_x_1 of { happy_var_1 -> -	case happyOut12 happy_x_2 of { happy_var_2 -> -	happyIn11-		 (happy_var_2 : happy_var_1-	)}}--happyReduce_9 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_9 = happySpecReduce_0  1# happyReduction_9-happyReduction_9  =  happyIn11-		 ([]-	)--happyReduce_10 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_10 = happySpecReduce_1  2# happyReduction_10-happyReduction_10 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwAbstract happy_var_1) -> -	happyIn12-		 (TokKeyword KwAbstract happy_var_1-	)}--happyReduce_11 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_11 = happySpecReduce_1  2# happyReduction_11-happyReduction_11 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> -	happyIn12-		 (TokKeyword KwCoData happy_var_1-	)}--happyReduce_12 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_12 = happySpecReduce_1  2# happyReduction_12-happyReduction_12 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCoInductive happy_var_1) -> -	happyIn12-		 (TokKeyword KwCoInductive happy_var_1-	)}--happyReduce_13 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_13 = happySpecReduce_1  2# happyReduction_13-happyReduction_13 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwConstructor happy_var_1) -> -	happyIn12-		 (TokKeyword KwConstructor happy_var_1-	)}--happyReduce_14 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_14 = happySpecReduce_1  2# happyReduction_14-happyReduction_14 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> -	happyIn12-		 (TokKeyword KwData happy_var_1-	)}--happyReduce_15 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_15 = happySpecReduce_1  2# happyReduction_15-happyReduction_15 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwEta happy_var_1) -> -	happyIn12-		 (TokKeyword KwEta happy_var_1-	)}--happyReduce_16 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_16 = happySpecReduce_1  2# happyReduction_16-happyReduction_16 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwField happy_var_1) -> -	happyIn12-		 (TokKeyword KwField happy_var_1-	)}--happyReduce_17 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_17 = happySpecReduce_1  2# happyReduction_17-happyReduction_17 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwForall happy_var_1) -> -	happyIn12-		 (TokKeyword KwForall happy_var_1-	)}--happyReduce_18 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_18 = happySpecReduce_1  2# happyReduction_18-happyReduction_18 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwHiding happy_var_1) -> -	happyIn12-		 (TokKeyword KwHiding happy_var_1-	)}--happyReduce_19 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_19 = happySpecReduce_1  2# happyReduction_19-happyReduction_19 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwImport happy_var_1) -> -	happyIn12-		 (TokKeyword KwImport happy_var_1-	)}--happyReduce_20 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_20 = happySpecReduce_1  2# happyReduction_20-happyReduction_20 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIn happy_var_1) -> -	happyIn12-		 (TokKeyword KwIn happy_var_1-	)}--happyReduce_21 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_21 = happySpecReduce_1  2# happyReduction_21-happyReduction_21 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInductive happy_var_1) -> -	happyIn12-		 (TokKeyword KwInductive happy_var_1-	)}--happyReduce_22 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_22 = happySpecReduce_1  2# happyReduction_22-happyReduction_22 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfix happy_var_1) -> -	happyIn12-		 (TokKeyword KwInfix happy_var_1-	)}--happyReduce_23 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_23 = happySpecReduce_1  2# happyReduction_23-happyReduction_23 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixL happy_var_1) -> -	happyIn12-		 (TokKeyword KwInfixL happy_var_1-	)}--happyReduce_24 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_24 = happySpecReduce_1  2# happyReduction_24-happyReduction_24 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixR happy_var_1) -> -	happyIn12-		 (TokKeyword KwInfixR happy_var_1-	)}--happyReduce_25 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_25 = happySpecReduce_1  2# happyReduction_25-happyReduction_25 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInstance happy_var_1) -> -	happyIn12-		 (TokKeyword KwInstance happy_var_1-	)}--happyReduce_26 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_26 = happySpecReduce_1  2# happyReduction_26-happyReduction_26 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOverlap happy_var_1) -> -	happyIn12-		 (TokKeyword KwOverlap happy_var_1-	)}--happyReduce_27 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_27 = happySpecReduce_1  2# happyReduction_27-happyReduction_27 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwLet happy_var_1) -> -	happyIn12-		 (TokKeyword KwLet happy_var_1-	)}--happyReduce_28 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_28 = happySpecReduce_1  2# happyReduction_28-happyReduction_28 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMacro happy_var_1) -> -	happyIn12-		 (TokKeyword KwMacro happy_var_1-	)}--happyReduce_29 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_29 = happySpecReduce_1  2# happyReduction_29-happyReduction_29 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> -	happyIn12-		 (TokKeyword KwModule happy_var_1-	)}--happyReduce_30 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_30 = happySpecReduce_1  2# happyReduction_30-happyReduction_30 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMutual happy_var_1) -> -	happyIn12-		 (TokKeyword KwMutual happy_var_1-	)}--happyReduce_31 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_31 = happySpecReduce_1  2# happyReduction_31-happyReduction_31 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNoEta happy_var_1) -> -	happyIn12-		 (TokKeyword KwNoEta happy_var_1-	)}--happyReduce_32 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_32 = happySpecReduce_1  2# happyReduction_32-happyReduction_32 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> -	happyIn12-		 (TokKeyword KwOpen happy_var_1-	)}--happyReduce_33 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_33 = happySpecReduce_1  2# happyReduction_33-happyReduction_33 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPatternSyn happy_var_1) -> -	happyIn12-		 (TokKeyword KwPatternSyn happy_var_1-	)}--happyReduce_34 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_34 = happySpecReduce_1  2# happyReduction_34-happyReduction_34 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPostulate happy_var_1) -> -	happyIn12-		 (TokKeyword KwPostulate happy_var_1-	)}--happyReduce_35 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_35 = happySpecReduce_1  2# happyReduction_35-happyReduction_35 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrimitive happy_var_1) -> -	happyIn12-		 (TokKeyword KwPrimitive happy_var_1-	)}--happyReduce_36 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_36 = happySpecReduce_1  2# happyReduction_36-happyReduction_36 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrivate happy_var_1) -> -	happyIn12-		 (TokKeyword KwPrivate happy_var_1-	)}--happyReduce_37 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_37 = happySpecReduce_1  2# happyReduction_37-happyReduction_37 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwProp happy_var_1) -> -	happyIn12-		 (TokKeyword KwProp happy_var_1-	)}--happyReduce_38 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_38 = happySpecReduce_1  2# happyReduction_38-happyReduction_38 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPublic happy_var_1) -> -	happyIn12-		 (TokKeyword KwPublic happy_var_1-	)}--happyReduce_39 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_39 = happySpecReduce_1  2# happyReduction_39-happyReduction_39 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuote happy_var_1) -> -	happyIn12-		 (TokKeyword KwQuote happy_var_1-	)}--happyReduce_40 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_40 = happySpecReduce_1  2# happyReduction_40-happyReduction_40 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteContext happy_var_1) -> -	happyIn12-		 (TokKeyword KwQuoteContext happy_var_1-	)}--happyReduce_41 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_41 = happySpecReduce_1  2# happyReduction_41-happyReduction_41 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteGoal happy_var_1) -> -	happyIn12-		 (TokKeyword KwQuoteGoal happy_var_1-	)}--happyReduce_42 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_42 = happySpecReduce_1  2# happyReduction_42-happyReduction_42 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteTerm happy_var_1) -> -	happyIn12-		 (TokKeyword KwQuoteTerm happy_var_1-	)}--happyReduce_43 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_43 = happySpecReduce_1  2# happyReduction_43-happyReduction_43 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> -	happyIn12-		 (TokKeyword KwRecord happy_var_1-	)}--happyReduce_44 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_44 = happySpecReduce_1  2# happyReduction_44-happyReduction_44 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRenaming happy_var_1) -> -	happyIn12-		 (TokKeyword KwRenaming happy_var_1-	)}--happyReduce_45 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_45 = happySpecReduce_1  2# happyReduction_45-happyReduction_45 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRewrite happy_var_1) -> -	happyIn12-		 (TokKeyword KwRewrite happy_var_1-	)}--happyReduce_46 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_46 = happySpecReduce_1  2# happyReduction_46-happyReduction_46 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSet happy_var_1) -> -	happyIn12-		 (TokKeyword KwSet happy_var_1-	)}--happyReduce_47 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_47 = happySpecReduce_1  2# happyReduction_47-happyReduction_47 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSyntax happy_var_1) -> -	happyIn12-		 (TokKeyword KwSyntax happy_var_1-	)}--happyReduce_48 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_48 = happySpecReduce_1  2# happyReduction_48-happyReduction_48 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTactic happy_var_1) -> -	happyIn12-		 (TokKeyword KwTactic happy_var_1-	)}--happyReduce_49 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_49 = happySpecReduce_1  2# happyReduction_49-happyReduction_49 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTo happy_var_1) -> -	happyIn12-		 (TokKeyword KwTo happy_var_1-	)}--happyReduce_50 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_50 = happySpecReduce_1  2# happyReduction_50-happyReduction_50 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquote happy_var_1) -> -	happyIn12-		 (TokKeyword KwUnquote happy_var_1-	)}--happyReduce_51 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_51 = happySpecReduce_1  2# happyReduction_51-happyReduction_51 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDecl happy_var_1) -> -	happyIn12-		 (TokKeyword KwUnquoteDecl happy_var_1-	)}--happyReduce_52 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_52 = happySpecReduce_1  2# happyReduction_52-happyReduction_52 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDef happy_var_1) -> -	happyIn12-		 (TokKeyword KwUnquoteDef happy_var_1-	)}--happyReduce_53 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_53 = happySpecReduce_1  2# happyReduction_53-happyReduction_53 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUsing happy_var_1) -> -	happyIn12-		 (TokKeyword KwUsing happy_var_1-	)}--happyReduce_54 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_54 = happySpecReduce_1  2# happyReduction_54-happyReduction_54 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwWhere happy_var_1) -> -	happyIn12-		 (TokKeyword KwWhere happy_var_1-	)}--happyReduce_55 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_55 = happySpecReduce_1  2# happyReduction_55-happyReduction_55 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwDo happy_var_1) -> -	happyIn12-		 (TokKeyword KwDo happy_var_1-	)}--happyReduce_56 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_56 = happySpecReduce_1  2# happyReduction_56-happyReduction_56 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwWith happy_var_1) -> -	happyIn12-		 (TokKeyword KwWith happy_var_1-	)}--happyReduce_57 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_57 = happySpecReduce_1  2# happyReduction_57-happyReduction_57 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwBUILTIN happy_var_1) -> -	happyIn12-		 (TokKeyword KwBUILTIN happy_var_1-	)}--happyReduce_58 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_58 = happySpecReduce_1  2# happyReduction_58-happyReduction_58 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCATCHALL happy_var_1) -> -	happyIn12-		 (TokKeyword KwCATCHALL happy_var_1-	)}--happyReduce_59 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_59 = happySpecReduce_1  2# happyReduction_59-happyReduction_59 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED happy_var_1) -> -	happyIn12-		 (TokKeyword KwCOMPILED happy_var_1-	)}--happyReduce_60 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_60 = happySpecReduce_1  2# happyReduction_60-happyReduction_60 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_DATA happy_var_1) -> -	happyIn12-		 (TokKeyword KwCOMPILED_DATA happy_var_1-	)}--happyReduce_61 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_61 = happySpecReduce_1  2# happyReduction_61-happyReduction_61 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_DATA_UHC happy_var_1) -> -	happyIn12-		 (TokKeyword KwCOMPILED_DATA_UHC happy_var_1-	)}--happyReduce_62 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_62 = happySpecReduce_1  2# happyReduction_62-happyReduction_62 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_EXPORT happy_var_1) -> -	happyIn12-		 (TokKeyword KwCOMPILED_EXPORT happy_var_1-	)}--happyReduce_63 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_63 = happySpecReduce_1  2# happyReduction_63-happyReduction_63 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_JS happy_var_1) -> -	happyIn12-		 (TokKeyword KwCOMPILED_JS happy_var_1-	)}--happyReduce_64 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_64 = happySpecReduce_1  2# happyReduction_64-happyReduction_64 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_TYPE happy_var_1) -> -	happyIn12-		 (TokKeyword KwCOMPILED_TYPE happy_var_1-	)}--happyReduce_65 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_65 = happySpecReduce_1  2# happyReduction_65-happyReduction_65 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_UHC happy_var_1) -> -	happyIn12-		 (TokKeyword KwCOMPILED_UHC happy_var_1-	)}--happyReduce_66 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_66 = happySpecReduce_1  2# happyReduction_66-happyReduction_66 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwDISPLAY happy_var_1) -> -	happyIn12-		 (TokKeyword KwDISPLAY happy_var_1-	)}--happyReduce_67 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_67 = happySpecReduce_1  2# happyReduction_67-happyReduction_67 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwETA happy_var_1) -> -	happyIn12-		 (TokKeyword KwETA happy_var_1-	)}--happyReduce_68 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_68 = happySpecReduce_1  2# happyReduction_68-happyReduction_68 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwHASKELL happy_var_1) -> -	happyIn12-		 (TokKeyword KwHASKELL happy_var_1-	)}--happyReduce_69 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_69 = happySpecReduce_1  2# happyReduction_69-happyReduction_69 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIMPORT happy_var_1) -> -	happyIn12-		 (TokKeyword KwIMPORT happy_var_1-	)}--happyReduce_70 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_70 = happySpecReduce_1  2# happyReduction_70-happyReduction_70 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIMPORT_UHC happy_var_1) -> -	happyIn12-		 (TokKeyword KwIMPORT_UHC happy_var_1-	)}--happyReduce_71 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_71 = happySpecReduce_1  2# happyReduction_71-happyReduction_71 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwFOREIGN happy_var_1) -> -	happyIn12-		 (TokKeyword KwFOREIGN happy_var_1-	)}--happyReduce_72 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_72 = happySpecReduce_1  2# happyReduction_72-happyReduction_72 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILE happy_var_1) -> -	happyIn12-		 (TokKeyword KwCOMPILE happy_var_1-	)}--happyReduce_73 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_73 = happySpecReduce_1  2# happyReduction_73-happyReduction_73 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIMPOSSIBLE happy_var_1) -> -	happyIn12-		 (TokKeyword KwIMPOSSIBLE happy_var_1-	)}--happyReduce_74 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_74 = happySpecReduce_1  2# happyReduction_74-happyReduction_74 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwINJECTIVE happy_var_1) -> -	happyIn12-		 (TokKeyword KwINJECTIVE happy_var_1-	)}--happyReduce_75 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_75 = happySpecReduce_1  2# happyReduction_75-happyReduction_75 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwINLINE happy_var_1) -> -	happyIn12-		 (TokKeyword KwINLINE happy_var_1-	)}--happyReduce_76 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_76 = happySpecReduce_1  2# happyReduction_76-happyReduction_76 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNOINLINE happy_var_1) -> -	happyIn12-		 (TokKeyword KwNOINLINE happy_var_1-	)}--happyReduce_77 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_77 = happySpecReduce_1  2# happyReduction_77-happyReduction_77 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMEASURE happy_var_1) -> -	happyIn12-		 (TokKeyword KwMEASURE happy_var_1-	)}--happyReduce_78 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_78 = happySpecReduce_1  2# happyReduction_78-happyReduction_78 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNO_TERMINATION_CHECK happy_var_1) -> -	happyIn12-		 (TokKeyword KwNO_TERMINATION_CHECK happy_var_1-	)}--happyReduce_79 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_79 = happySpecReduce_1  2# happyReduction_79-happyReduction_79 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNO_POSITIVITY_CHECK happy_var_1) -> -	happyIn12-		 (TokKeyword KwNO_POSITIVITY_CHECK happy_var_1-	)}--happyReduce_80 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_80 = happySpecReduce_1  2# happyReduction_80-happyReduction_80 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNON_TERMINATING happy_var_1) -> -	happyIn12-		 (TokKeyword KwNON_TERMINATING happy_var_1-	)}--happyReduce_81 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_81 = happySpecReduce_1  2# happyReduction_81-happyReduction_81 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOPTIONS happy_var_1) -> -	happyIn12-		 (TokKeyword KwOPTIONS happy_var_1-	)}--happyReduce_82 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_82 = happySpecReduce_1  2# happyReduction_82-happyReduction_82 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPOLARITY happy_var_1) -> -	happyIn12-		 (TokKeyword KwPOLARITY happy_var_1-	)}--happyReduce_83 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_83 = happySpecReduce_1  2# happyReduction_83-happyReduction_83 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwREWRITE happy_var_1) -> -	happyIn12-		 (TokKeyword KwREWRITE happy_var_1-	)}--happyReduce_84 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_84 = happySpecReduce_1  2# happyReduction_84-happyReduction_84 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSTATIC happy_var_1) -> -	happyIn12-		 (TokKeyword KwSTATIC happy_var_1-	)}--happyReduce_85 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_85 = happySpecReduce_1  2# happyReduction_85-happyReduction_85 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTERMINATING happy_var_1) -> -	happyIn12-		 (TokKeyword KwTERMINATING happy_var_1-	)}--happyReduce_86 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_86 = happySpecReduce_1  2# happyReduction_86-happyReduction_86 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwWARNING_ON_USAGE happy_var_1) -> -	happyIn12-		 (TokKeyword KwWARNING_ON_USAGE happy_var_1-	)}--happyReduce_87 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_87 = happySpecReduce_1  2# happyReduction_87-happyReduction_87 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSetN happy_var_1) -> -	happyIn12-		 (TokSetN happy_var_1-	)}--happyReduce_88 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_88 = happySpecReduce_1  2# happyReduction_88-happyReduction_88 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokTeX happy_var_1) -> -	happyIn12-		 (TokTeX happy_var_1-	)}--happyReduce_89 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_89 = happySpecReduce_1  2# happyReduction_89-happyReduction_89 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokComment happy_var_1) -> -	happyIn12-		 (TokComment happy_var_1-	)}--happyReduce_90 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_90 = happySpecReduce_1  2# happyReduction_90-happyReduction_90 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymEllipsis happy_var_1) -> -	happyIn12-		 (TokSymbol SymEllipsis happy_var_1-	)}--happyReduce_91 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_91 = happySpecReduce_1  2# happyReduction_91-happyReduction_91 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDotDot happy_var_1) -> -	happyIn12-		 (TokSymbol SymDotDot happy_var_1-	)}--happyReduce_92 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_92 = happySpecReduce_1  2# happyReduction_92-happyReduction_92 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDot happy_var_1) -> -	happyIn12-		 (TokSymbol SymDot happy_var_1-	)}--happyReduce_93 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_93 = happySpecReduce_1  2# happyReduction_93-happyReduction_93 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymSemi happy_var_1) -> -	happyIn12-		 (TokSymbol SymSemi happy_var_1-	)}--happyReduce_94 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_94 = happySpecReduce_1  2# happyReduction_94-happyReduction_94 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymColon happy_var_1) -> -	happyIn12-		 (TokSymbol SymColon happy_var_1-	)}--happyReduce_95 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_95 = happySpecReduce_1  2# happyReduction_95-happyReduction_95 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymEqual happy_var_1) -> -	happyIn12-		 (TokSymbol SymEqual happy_var_1-	)}--happyReduce_96 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_96 = happySpecReduce_1  2# happyReduction_96-happyReduction_96 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> -	happyIn12-		 (TokSymbol SymUnderscore happy_var_1-	)}--happyReduce_97 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_97 = happySpecReduce_1  2# happyReduction_97-happyReduction_97 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymQuestionMark happy_var_1) -> -	happyIn12-		 (TokSymbol SymQuestionMark happy_var_1-	)}--happyReduce_98 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_98 = happySpecReduce_1  2# happyReduction_98-happyReduction_98 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymArrow happy_var_1) -> -	happyIn12-		 (TokSymbol SymArrow happy_var_1-	)}--happyReduce_99 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_99 = happySpecReduce_1  2# happyReduction_99-happyReduction_99 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> -	happyIn12-		 (TokSymbol SymLambda happy_var_1-	)}--happyReduce_100 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_100 = happySpecReduce_1  2# happyReduction_100-happyReduction_100 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymAs happy_var_1) -> -	happyIn12-		 (TokSymbol SymAs happy_var_1-	)}--happyReduce_101 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_101 = happySpecReduce_1  2# happyReduction_101-happyReduction_101 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymBar happy_var_1) -> -	happyIn12-		 (TokSymbol SymBar happy_var_1-	)}--happyReduce_102 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_102 = happySpecReduce_1  2# happyReduction_102-happyReduction_102 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> -	happyIn12-		 (TokSymbol SymOpenParen happy_var_1-	)}--happyReduce_103 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_103 = happySpecReduce_1  2# happyReduction_103-happyReduction_103 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseParen happy_var_1) -> -	happyIn12-		 (TokSymbol SymCloseParen happy_var_1-	)}--happyReduce_104 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_104 = happySpecReduce_1  2# happyReduction_104-happyReduction_104 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenIdiomBracket happy_var_1) -> -	happyIn12-		 (TokSymbol SymOpenIdiomBracket happy_var_1-	)}--happyReduce_105 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_105 = happySpecReduce_1  2# happyReduction_105-happyReduction_105 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseIdiomBracket happy_var_1) -> -	happyIn12-		 (TokSymbol SymCloseIdiomBracket happy_var_1-	)}--happyReduce_106 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_106 = happySpecReduce_1  2# happyReduction_106-happyReduction_106 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> -	happyIn12-		 (TokSymbol SymDoubleOpenBrace happy_var_1-	)}--happyReduce_107 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_107 = happySpecReduce_1  2# happyReduction_107-happyReduction_107 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleCloseBrace happy_var_1) -> -	happyIn12-		 (TokSymbol SymDoubleCloseBrace happy_var_1-	)}--happyReduce_108 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_108 = happySpecReduce_1  2# happyReduction_108-happyReduction_108 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> -	happyIn12-		 (TokSymbol SymOpenBrace happy_var_1-	)}--happyReduce_109 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_109 = happySpecReduce_1  2# happyReduction_109-happyReduction_109 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseBrace happy_var_1) -> -	happyIn12-		 (TokSymbol SymCloseBrace happy_var_1-	)}--happyReduce_110 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_110 = happySpecReduce_1  2# happyReduction_110-happyReduction_110 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenVirtualBrace happy_var_1) -> -	happyIn12-		 (TokSymbol SymOpenVirtualBrace happy_var_1-	)}--happyReduce_111 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_111 = happySpecReduce_1  2# happyReduction_111-happyReduction_111 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseVirtualBrace happy_var_1) -> -	happyIn12-		 (TokSymbol SymCloseVirtualBrace happy_var_1-	)}--happyReduce_112 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_112 = happySpecReduce_1  2# happyReduction_112-happyReduction_112 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymVirtualSemi happy_var_1) -> -	happyIn12-		 (TokSymbol SymVirtualSemi happy_var_1-	)}--happyReduce_113 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_113 = happySpecReduce_1  2# happyReduction_113-happyReduction_113 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	happyIn12-		 (TokSymbol SymOpenPragma happy_var_1-	)}--happyReduce_114 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_114 = happySpecReduce_1  2# happyReduction_114-happyReduction_114 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymClosePragma happy_var_1) -> -	happyIn12-		 (TokSymbol SymClosePragma happy_var_1-	)}--happyReduce_115 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_115 = happySpecReduce_1  2# happyReduction_115-happyReduction_115 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokId happy_var_1) -> -	happyIn12-		 (TokId happy_var_1-	)}--happyReduce_116 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_116 = happySpecReduce_1  2# happyReduction_116-happyReduction_116 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokQId happy_var_1) -> -	happyIn12-		 (TokQId happy_var_1-	)}--happyReduce_117 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_117 = happySpecReduce_1  2# happyReduction_117-happyReduction_117 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> -	happyIn12-		 (TokString happy_var_1-	)}--happyReduce_118 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_118 = happySpecReduce_1  2# happyReduction_118-happyReduction_118 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> -	happyIn12-		 (TokLiteral happy_var_1-	)}--happyReduce_119 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_119 = happySpecReduce_3  3# happyReduction_119-happyReduction_119 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut135 happy_x_2 of { happy_var_2 -> -	happyIn13-		 (takeOptionsPragmas happy_var_2-	)}--happyReduce_120 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_120 = happySpecReduce_0  4# happyReduction_120-happyReduction_120  =  happyIn14-		 (()-	)--happyReduce_121 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_121 = happySpecReduce_1  4# happyReduction_121-happyReduction_121 happy_x_1-	 =  happyIn14-		 (()-	)--happyReduce_122 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_122 = happySpecReduce_1  5# happyReduction_122-happyReduction_122 happy_x_1-	 =  happyIn15-		 (()-	)--happyReduce_123 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_123 = happyMonadReduce 1# 5# happyReduction_123-happyReduction_123 (happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((( popContext))-	) (\r -> happyReturn (happyIn15 r))--happyReduce_124 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_124 = happySpecReduce_1  6# happyReduction_124-happyReduction_124 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymSemi happy_var_1) -> -	happyIn16-		 (happy_var_1-	)}--happyReduce_125 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_125 = happySpecReduce_1  6# happyReduction_125-happyReduction_125 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymVirtualSemi happy_var_1) -> -	happyIn16-		 (happy_var_1-	)}--happyReduce_126 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_126 = happyMonadReduce 0# 7# happyReduction_126-happyReduction_126 (happyRest) tk-	 = happyThen ((( pushLexState imp_dir))-	) (\r -> happyReturn (happyIn17 r))--happyReduce_127 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_127 = happyMonadReduce 1# 8# happyReduction_127-happyReduction_127 (happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> -	( case happy_var_1 of {-                     LitNat _ i -> return i;-                     _          -> fail $ "Expected integer"-                   })})-	) (\r -> happyReturn (happyIn18 r))--happyReduce_128 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_128 = happyMonadReduce 1# 9# happyReduction_128-happyReduction_128 (happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokId happy_var_1) -> -	( mkName happy_var_1)})-	) (\r -> happyReturn (happyIn19 r))--happyReduce_129 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_129 = happySpecReduce_2  10# happyReduction_129-happyReduction_129 happy_x_2-	happy_x_1-	 =  case happyOut19 happy_x_1 of { happy_var_1 -> -	case happyOut20 happy_x_2 of { happy_var_2 -> -	happyIn20-		 (happy_var_1 : happy_var_2-	)}}--happyReduce_130 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_130 = happySpecReduce_1  10# happyReduction_130-happyReduction_130 happy_x_1-	 =  case happyOut19 happy_x_1 of { happy_var_1 -> -	happyIn20-		 ([happy_var_1]-	)}--happyReduce_131 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_131 = happySpecReduce_1  11# happyReduction_131-happyReduction_131 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleCloseBrace happy_var_1) -> -	happyIn21-		 (getRange happy_var_1-	)}--happyReduce_132 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_132 = happyMonadReduce 2# 11# happyReduction_132-happyReduction_132 (happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokSymbol SymCloseBrace happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokSymbol SymCloseBrace happy_var_2) -> -	(-      if posPos (fromJust (rEnd' (getRange happy_var_2))) --         posPos (fromJust (rStart' (getRange happy_var_1))) > 2-      then parseErrorAt (fromJust (rStart' (getRange happy_var_2)))-         "Expecting '}}', found separated '}'s."-      else return $ getRange (happy_var_1, happy_var_2))}})-	) (\r -> happyReturn (happyIn21 r))--happyReduce_133 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_133 = happySpecReduce_2  12# happyReduction_133-happyReduction_133 happy_x_2-	happy_x_1-	 =  case happyOut19 happy_x_2 of { happy_var_2 -> -	happyIn22-		 (setRelevance NonStrict $ defaultArg happy_var_2-	)}--happyReduce_134 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_134 = happySpecReduce_2  12# happyReduction_134-happyReduction_134 happy_x_2-	happy_x_1-	 =  case happyOut19 happy_x_2 of { happy_var_2 -> -	happyIn22-		 (setRelevance Irrelevant $ defaultArg happy_var_2-	)}--happyReduce_135 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_135 = happySpecReduce_1  12# happyReduction_135-happyReduction_135 happy_x_1-	 =  case happyOut19 happy_x_1 of { happy_var_1 -> -	happyIn22-		 (defaultArg happy_var_1-	)}--happyReduce_136 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_136 = happySpecReduce_2  13# happyReduction_136-happyReduction_136 happy_x_2-	happy_x_1-	 =  case happyOut22 happy_x_1 of { happy_var_1 -> -	case happyOut23 happy_x_2 of { happy_var_2 -> -	happyIn23-		 (happy_var_1 : happy_var_2-	)}}--happyReduce_137 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_137 = happySpecReduce_1  13# happyReduction_137-happyReduction_137 happy_x_1-	 =  case happyOut22 happy_x_1 of { happy_var_1 -> -	happyIn23-		 ([happy_var_1]-	)}--happyReduce_138 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_138 = happySpecReduce_2  14# happyReduction_138-happyReduction_138 happy_x_2-	happy_x_1-	 =  case happyOut22 happy_x_1 of { happy_var_1 -> -	case happyOut24 happy_x_2 of { happy_var_2 -> -	happyIn24-		 (happy_var_1 : happy_var_2-	)}}--happyReduce_139 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_139 = happySpecReduce_1  14# happyReduction_139-happyReduction_139 happy_x_1-	 =  case happyOut22 happy_x_1 of { happy_var_1 -> -	happyIn24-		 ([happy_var_1]-	)}--happyReduce_140 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_140 = happyReduce 4# 14# happyReduction_140-happyReduction_140 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut23 happy_x_2 of { happy_var_2 -> -	case happyOut24 happy_x_4 of { happy_var_4 -> -	happyIn24-		 (map makeInstance happy_var_2 ++ happy_var_4-	) `HappyStk` happyRest}}--happyReduce_141 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_141 = happySpecReduce_3  14# happyReduction_141-happyReduction_141 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut23 happy_x_2 of { happy_var_2 -> -	happyIn24-		 (map makeInstance happy_var_2-	)}--happyReduce_142 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_142 = happyReduce 4# 14# happyReduction_142-happyReduction_142 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut23 happy_x_2 of { happy_var_2 -> -	case happyOut24 happy_x_4 of { happy_var_4 -> -	happyIn24-		 (map hide happy_var_2 ++ happy_var_4-	) `HappyStk` happyRest}}--happyReduce_143 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_143 = happySpecReduce_3  14# happyReduction_143-happyReduction_143 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut23 happy_x_2 of { happy_var_2 -> -	happyIn24-		 (map hide happy_var_2-	)}--happyReduce_144 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_144 = happyReduce 5# 14# happyReduction_144-happyReduction_144 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut20 happy_x_3 of { happy_var_3 -> -	case happyOut24 happy_x_5 of { happy_var_5 -> -	happyIn24-		 (map (hide . setRelevance Irrelevant . defaultArg) happy_var_3 ++ happy_var_5-	) `HappyStk` happyRest}}--happyReduce_145 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_145 = happyReduce 4# 14# happyReduction_145-happyReduction_145 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut20 happy_x_3 of { happy_var_3 -> -	happyIn24-		 (map (hide . setRelevance Irrelevant . defaultArg) happy_var_3-	) `HappyStk` happyRest}--happyReduce_146 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_146 = happyReduce 5# 14# happyReduction_146-happyReduction_146 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut20 happy_x_3 of { happy_var_3 -> -	case happyOut24 happy_x_5 of { happy_var_5 -> -	happyIn24-		 (map (makeInstance . setRelevance Irrelevant . defaultArg) happy_var_3 ++ happy_var_5-	) `HappyStk` happyRest}}--happyReduce_147 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_147 = happyReduce 4# 14# happyReduction_147-happyReduction_147 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut20 happy_x_3 of { happy_var_3 -> -	happyIn24-		 (map (makeInstance . setRelevance Irrelevant . defaultArg) happy_var_3-	) `HappyStk` happyRest}--happyReduce_148 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_148 = happyReduce 5# 14# happyReduction_148-happyReduction_148 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut20 happy_x_3 of { happy_var_3 -> -	case happyOut24 happy_x_5 of { happy_var_5 -> -	happyIn24-		 (map (hide . setRelevance NonStrict . defaultArg) happy_var_3 ++ happy_var_5-	) `HappyStk` happyRest}}--happyReduce_149 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_149 = happyReduce 4# 14# happyReduction_149-happyReduction_149 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut20 happy_x_3 of { happy_var_3 -> -	happyIn24-		 (map (hide . setRelevance NonStrict . defaultArg) happy_var_3-	) `HappyStk` happyRest}--happyReduce_150 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_150 = happyReduce 5# 14# happyReduction_150-happyReduction_150 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut20 happy_x_3 of { happy_var_3 -> -	case happyOut24 happy_x_5 of { happy_var_5 -> -	happyIn24-		 (map (makeInstance . setRelevance NonStrict . defaultArg) happy_var_3 ++ happy_var_5-	) `HappyStk` happyRest}}--happyReduce_151 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_151 = happyReduce 4# 14# happyReduction_151-happyReduction_151 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut20 happy_x_3 of { happy_var_3 -> -	happyIn24-		 (map (makeInstance . setRelevance NonStrict . defaultArg) happy_var_3-	) `HappyStk` happyRest}--happyReduce_152 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_152 = happyMonadReduce 1# 15# happyReduction_152-happyReduction_152 (happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokQId happy_var_1) -> -	( mkQName happy_var_1)})-	) (\r -> happyReturn (happyIn25 r))--happyReduce_153 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_153 = happySpecReduce_1  15# happyReduction_153-happyReduction_153 happy_x_1-	 =  case happyOut19 happy_x_1 of { happy_var_1 -> -	happyIn25-		 (QName happy_var_1-	)}--happyReduce_154 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_154 = happySpecReduce_1  16# happyReduction_154-happyReduction_154 happy_x_1-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> -	happyIn26-		 (happy_var_1-	)}--happyReduce_155 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_155 = happySpecReduce_1  17# happyReduction_155-happyReduction_155 happy_x_1-	 =  case happyOut19 happy_x_1 of { happy_var_1 -> -	happyIn27-		 (happy_var_1-	)}--happyReduce_156 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_156 = happySpecReduce_1  17# happyReduction_156-happyReduction_156 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> -	happyIn27-		 (Name (getRange happy_var_1) [Hole]-	)}--happyReduce_157 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_157 = happySpecReduce_2  18# happyReduction_157-happyReduction_157 happy_x_2-	happy_x_1-	 =  case happyOut27 happy_x_1 of { happy_var_1 -> -	case happyOut28 happy_x_2 of { happy_var_2 -> -	happyIn28-		 (happy_var_1 : happy_var_2-	)}}--happyReduce_158 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_158 = happySpecReduce_1  18# happyReduction_158-happyReduction_158 happy_x_1-	 =  case happyOut27 happy_x_1 of { happy_var_1 -> -	happyIn28-		 ([happy_var_1]-	)}--happyReduce_159 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_159 = happySpecReduce_1  19# happyReduction_159-happyReduction_159 happy_x_1-	 =  case happyOut30 happy_x_1 of { happy_var_1 -> -	happyIn29-		 (case happy_var_1 of-      Left ns -> ns-      Right _ -> fail $ "expected sequence of bound identifiers, not absurd pattern"-	)}--happyReduce_160 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_160 = happyMonadReduce 1# 20# happyReduction_160-happyReduction_160 (happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut42 happy_x_1 of { happy_var_1 -> -	(-    let getName :: Expr -> Maybe Name-        getName (Ident (QName x)) = Just x-        getName (Underscore r _)  = Just (Name r [Hole])-        getName _                 = Nothing--        isAbsurd :: Expr -> Bool-        isAbsurd (Absurd _)                  = True-        isAbsurd (HiddenArg _ (Named _ e))   = isAbsurd e-        isAbsurd (InstanceArg _ (Named _ e)) = isAbsurd e-        isAbsurd (Paren _ expr)              = isAbsurd expr-        isAbsurd (RawApp _ exprs)            = any isAbsurd exprs-        isAbsurd _                           = False-    in-    if any isAbsurd happy_var_1 then return $ Right happy_var_1 else-    case mapM getName happy_var_1 of-        Just good -> return $ Left good-        Nothing   -> fail $ "expected sequence of bound identifiers")})-	) (\r -> happyReturn (happyIn30 r))--happyReduce_161 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_161 = happyMonadReduce 1# 21# happyReduction_161-happyReduction_161 (happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut42 happy_x_1 of { happy_var_1 -> -	(-    let -- interpret an expression as name-        getName :: Expr -> Maybe Name-        getName (Ident (QName x)) = Just x-        getName (Underscore r _)  = Just (Name r [Hole])-        getName _                 = Nothing--        getNames :: Expr -> Maybe [Name]-        getNames (RawApp _ es) = mapM getName es-        getNames e             = singleton `fmap` getName e--        -- interpret an expression as name or list of hidden names-        getName1 :: Expr -> Maybe [WithHiding Name]-        getName1 (Ident (QName x)) = Just [WithHiding NotHidden x]-        getName1 (Underscore r _)  = Just [WithHiding NotHidden $ Name r [Hole]]-        getName1 (HiddenArg _ (Named Nothing e))-                                   = map (WithHiding Hidden) `fmap` getNames e-        getName1 _                 = Nothing--    in-    case mapM getName1 happy_var_1 of-        Just good -> return $ concat good-        Nothing   -> fail $ "expected sequence of possibly hidden bound identifiers")})-	) (\r -> happyReturn (happyIn31 r))--happyReduce_162 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_162 = happySpecReduce_0  22# happyReduction_162-happyReduction_162  =  happyIn32-		 ([]-	)--happyReduce_163 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_163 = happySpecReduce_2  22# happyReduction_163-happyReduction_163 happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> -	case happyOut32 happy_x_2 of { happy_var_2 -> -	happyIn32-		 (snd happy_var_1 : happy_var_2-	)}}--happyReduce_164 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_164 = happySpecReduce_1  23# happyReduction_164-happyReduction_164 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> -	happyIn33-		 (snd happy_var_1-	)}--happyReduce_165 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_165 = happySpecReduce_0  24# happyReduction_165-happyReduction_165  =  happyIn34-		 ([]-	)--happyReduce_166 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_166 = happySpecReduce_2  24# happyReduction_166-happyReduction_166 happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> -	case happyOut34 happy_x_2 of { happy_var_2 -> -	happyIn34-		 (happy_var_1 : happy_var_2-	)}}--happyReduce_167 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_167 = happySpecReduce_0  25# happyReduction_167-happyReduction_167  =  happyIn35-		 ([]-	)--happyReduce_168 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_168 = happySpecReduce_2  25# happyReduction_168-happyReduction_168 happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> -	case happyOut35 happy_x_2 of { happy_var_2 -> -	happyIn35-		 (happy_var_1 : happy_var_2-	)}}--happyReduce_169 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_169 = happyReduce 4# 25# happyReduction_169-happyReduction_169 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOut35 happy_x_2 of { happy_var_2 -> -	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> -	case happyOut35 happy_x_4 of { happy_var_4 -> -	happyIn35-		 ([(happy_var_1, "{-#")] ++ happy_var_2 ++ [(happy_var_3, "#-}")] ++ happy_var_4-	) `HappyStk` happyRest}}}}--happyReduce_170 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_170 = happyMonadReduce 1# 26# happyReduction_170-happyReduction_170 (happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokString happy_var_1) -> -	( mkName happy_var_1)})-	) (\r -> happyReturn (happyIn36 r))--happyReduce_171 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_171 = happyMonadReduce 1# 27# happyReduction_171-happyReduction_171 (happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokString happy_var_1) -> -	( pragmaQName happy_var_1)})-	) (\r -> happyReturn (happyIn37 r))--happyReduce_172 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_172 = happyMonadReduce 1# 28# happyReduction_172-happyReduction_172 (happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut34 happy_x_1 of { happy_var_1 -> -	( mapM pragmaQName happy_var_1)})-	) (\r -> happyReturn (happyIn38 r))--happyReduce_173 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_173 = happySpecReduce_2  29# happyReduction_173-happyReduction_173 happy_x_2-	happy_x_1-	 =  case happyOut58 happy_x_1 of { happy_var_1 -> -	case happyOut39 happy_x_2 of { happy_var_2 -> -	happyIn39-		 (Pi happy_var_1 happy_var_2-	)}}--happyReduce_174 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_174 = happySpecReduce_3  29# happyReduction_174-happyReduction_174 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut46 happy_x_1 of { happy_var_1 -> -	case happyOutTok happy_x_2 of { (TokSymbol SymArrow happy_var_2) -> -	case happyOut39 happy_x_3 of { happy_var_3 -> -	happyIn39-		 (Fun (getRange (happy_var_1,happy_var_2,happy_var_3))-                                              (RawApp (getRange happy_var_1) happy_var_1)-                                              happy_var_3-	)}}}--happyReduce_175 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_175 = happySpecReduce_3  29# happyReduction_175-happyReduction_175 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut40 happy_x_1 of { happy_var_1 -> -	case happyOutTok happy_x_2 of { (TokSymbol SymEqual happy_var_2) -> -	case happyOut39 happy_x_3 of { happy_var_3 -> -	happyIn39-		 (Equal (getRange (happy_var_1, happy_var_2, happy_var_3)) happy_var_1 happy_var_3-	)}}}--happyReduce_176 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_176 = happySpecReduce_1  29# happyReduction_176-happyReduction_176 happy_x_1-	 =  case happyOut40 happy_x_1 of { happy_var_1 -> -	happyIn39-		 (happy_var_1-	)}--happyReduce_177 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_177 = happyMonadReduce 1# 30# happyReduction_177-happyReduction_177 (happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut41 happy_x_1 of { happy_var_1 -> -	( case happy_var_1 of-                      { [e]    -> return e-                      ; e : es -> return $ WithApp (fuseRange e es) e es-                      ; []     -> fail "impossible: empty with expressions"-                      })})-	) (\r -> happyReturn (happyIn40 r))--happyReduce_178 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_178 = happySpecReduce_3  31# happyReduction_178-happyReduction_178 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut46 happy_x_1 of { happy_var_1 -> -	case happyOut41 happy_x_3 of { happy_var_3 -> -	happyIn41-		 (RawApp (getRange happy_var_1) happy_var_1 :  happy_var_3-	)}}--happyReduce_179 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_179 = happySpecReduce_1  31# happyReduction_179-happyReduction_179 happy_x_1-	 =  case happyOut42 happy_x_1 of { happy_var_1 -> -	happyIn41-		 ([RawApp (getRange happy_var_1) happy_var_1]-	)}--happyReduce_180 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_180 = happySpecReduce_1  32# happyReduction_180-happyReduction_180 happy_x_1-	 =  case happyOut43 happy_x_1 of { happy_var_1 -> -	happyIn42-		 ([happy_var_1]-	)}--happyReduce_181 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_181 = happySpecReduce_2  32# happyReduction_181-happyReduction_181 happy_x_2-	happy_x_1-	 =  case happyOut50 happy_x_1 of { happy_var_1 -> -	case happyOut42 happy_x_2 of { happy_var_2 -> -	happyIn42-		 (happy_var_1 : happy_var_2-	)}}--happyReduce_182 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_182 = happySpecReduce_3  33# happyReduction_182-happyReduction_182 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> -	case happyOut64 happy_x_2 of { happy_var_2 -> -	case happyOut39 happy_x_3 of { happy_var_3 -> -	happyIn43-		 (Lam (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2 happy_var_3-	)}}}--happyReduce_183 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_183 = happySpecReduce_1  33# happyReduction_183-happyReduction_183 happy_x_1-	 =  case happyOut45 happy_x_1 of { happy_var_1 -> -	happyIn43-		 (happy_var_1-	)}--happyReduce_184 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_184 = happySpecReduce_3  33# happyReduction_184-happyReduction_184 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut73 happy_x_2 of { happy_var_2 -> -	case happyOut39 happy_x_3 of { happy_var_3 -> -	happyIn43-		 (forallPi happy_var_2 happy_var_3-	)}}--happyReduce_185 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_185 = happySpecReduce_3  33# happyReduction_185-happyReduction_185 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwLet happy_var_1) -> -	case happyOut179 happy_x_2 of { happy_var_2 -> -	case happyOut44 happy_x_3 of { happy_var_3 -> -	happyIn43-		 (Let (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2 happy_var_3-	)}}}--happyReduce_186 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_186 = happyReduce 4# 33# happyReduction_186-happyReduction_186 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwDo happy_var_1) -> -	case happyOut78 happy_x_3 of { happy_var_3 -> -	happyIn43-		 (DoBlock (getRange (happy_var_1, happy_var_3)) happy_var_3-	) `HappyStk` happyRest}}--happyReduce_187 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_187 = happySpecReduce_1  33# happyReduction_187-happyReduction_187 happy_x_1-	 =  case happyOut50 happy_x_1 of { happy_var_1 -> -	happyIn43-		 (happy_var_1-	)}--happyReduce_188 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_188 = happyReduce 4# 33# happyReduction_188-happyReduction_188 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwQuoteGoal happy_var_1) -> -	case happyOut19 happy_x_2 of { happy_var_2 -> -	case happyOutTok happy_x_3 of { (TokKeyword KwIn happy_var_3) -> -	case happyOut39 happy_x_4 of { happy_var_4 -> -	happyIn43-		 (QuoteGoal (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_2 happy_var_4-	) `HappyStk` happyRest}}}}--happyReduce_189 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_189 = happySpecReduce_2  33# happyReduction_189-happyReduction_189 happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTactic happy_var_1) -> -	case happyOut46 happy_x_2 of { happy_var_2 -> -	happyIn43-		 (Tactic (getRange (happy_var_1, happy_var_2)) (RawApp (getRange happy_var_2) happy_var_2) []-	)}}--happyReduce_190 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_190 = happyReduce 4# 33# happyReduction_190-happyReduction_190 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwTactic happy_var_1) -> -	case happyOut46 happy_x_2 of { happy_var_2 -> -	case happyOutTok happy_x_3 of { (TokSymbol SymBar happy_var_3) -> -	case happyOut41 happy_x_4 of { happy_var_4 -> -	happyIn43-		 (Tactic (getRange (happy_var_1, happy_var_2, happy_var_3, happy_var_4)) (RawApp (getRange happy_var_2) happy_var_2) happy_var_4-	) `HappyStk` happyRest}}}}--happyReduce_191 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_191 = happySpecReduce_2  34# happyReduction_191-happyReduction_191 happy_x_2-	happy_x_1-	 =  case happyOut39 happy_x_2 of { happy_var_2 -> -	happyIn44-		 (Just happy_var_2-	)}--happyReduce_192 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_192 = happySpecReduce_0  34# happyReduction_192-happyReduction_192  =  happyIn44-		 (Nothing-	)--happyReduce_193 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_193 = happyReduce 4# 35# happyReduction_193-happyReduction_193 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokSymbol SymOpenBrace happy_var_2) -> -	case happyOut71 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> -	happyIn45-		 (ExtendedLam (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) (reverse happy_var_3)-	) `HappyStk` happyRest}}}}--happyReduce_194 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_194 = happyReduce 5# 35# happyReduction_194-happyReduction_194 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwWhere happy_var_2) -> -	case happyOut72 happy_x_4 of { happy_var_4 -> -	happyIn45-		 (ExtendedLam (getRange (happy_var_1, happy_var_2, happy_var_4)) (reverse happy_var_4)-	) `HappyStk` happyRest}}}--happyReduce_195 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_195 = happyMonadReduce 2# 35# happyReduction_195-happyReduction_195 (happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> -	case happyOut65 happy_x_2 of { happy_var_2 -> -	( case happy_var_2 of-                                       Left (bs, h) -> if null bs then return $ AbsurdLam r h else-                                                       return $ Lam r bs (AbsurdLam r h)-                                                         where r = fuseRange happy_var_1 bs-                                       Right es -> do -- it is of the form @\ { p1 ... () }@-                                                     p <- exprToLHS (RawApp (getRange es) es);-                                                     return $ ExtendedLam (fuseRange happy_var_1 es)-                                                                     [LamClause (p [] []) AbsurdRHS NoWhere False])}})-	) (\r -> happyReturn (happyIn45 r))--happyReduce_196 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_196 = happySpecReduce_1  36# happyReduction_196-happyReduction_196 happy_x_1-	 =  case happyOut50 happy_x_1 of { happy_var_1 -> -	happyIn46-		 ([happy_var_1]-	)}--happyReduce_197 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_197 = happySpecReduce_2  36# happyReduction_197-happyReduction_197 happy_x_2-	happy_x_1-	 =  case happyOut50 happy_x_1 of { happy_var_1 -> -	case happyOut46 happy_x_2 of { happy_var_2 -> -	happyIn46-		 (happy_var_1 : happy_var_2-	)}}--happyReduce_198 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_198 = happySpecReduce_0  37# happyReduction_198-happyReduction_198  =  happyIn47-		 ([]-	)--happyReduce_199 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_199 = happySpecReduce_2  37# happyReduction_199-happyReduction_199 happy_x_2-	happy_x_1-	 =  case happyOut50 happy_x_1 of { happy_var_1 -> -	case happyOut47 happy_x_2 of { happy_var_2 -> -	happyIn47-		 (happy_var_1 : happy_var_2-	)}}--happyReduce_200 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_200 = happySpecReduce_3  38# happyReduction_200-happyReduction_200 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> -	case happyOut39 happy_x_2 of { happy_var_2 -> -	case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) -> -	happyIn48-		 (HiddenArg (getRange (happy_var_1,happy_var_2,happy_var_3)) (maybeNamed happy_var_2)-	)}}}--happyReduce_201 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_201 = happySpecReduce_2  38# happyReduction_201-happyReduction_201 happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokSymbol SymCloseBrace happy_var_2) -> -	happyIn48-		 (let r = fuseRange happy_var_1 happy_var_2 in HiddenArg r $ unnamed $ Absurd r-	)}}--happyReduce_202 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_202 = happySpecReduce_1  39# happyReduction_202-happyReduction_202 happy_x_1-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> -	happyIn49-		 (Ident happy_var_1-	)}--happyReduce_203 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_203 = happySpecReduce_1  39# happyReduction_203-happyReduction_203 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> -	happyIn49-		 (Lit happy_var_1-	)}--happyReduce_204 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_204 = happySpecReduce_1  39# happyReduction_204-happyReduction_204 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymQuestionMark happy_var_1) -> -	happyIn49-		 (QuestionMark (getRange happy_var_1) Nothing-	)}--happyReduce_205 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_205 = happySpecReduce_1  39# happyReduction_205-happyReduction_205 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> -	happyIn49-		 (Underscore (getRange happy_var_1) Nothing-	)}--happyReduce_206 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_206 = happySpecReduce_1  39# happyReduction_206-happyReduction_206 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwProp happy_var_1) -> -	happyIn49-		 (Prop (getRange happy_var_1)-	)}--happyReduce_207 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_207 = happySpecReduce_1  39# happyReduction_207-happyReduction_207 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSet happy_var_1) -> -	happyIn49-		 (Set (getRange happy_var_1)-	)}--happyReduce_208 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_208 = happySpecReduce_1  39# happyReduction_208-happyReduction_208 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuote happy_var_1) -> -	happyIn49-		 (Quote (getRange happy_var_1)-	)}--happyReduce_209 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_209 = happySpecReduce_1  39# happyReduction_209-happyReduction_209 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteTerm happy_var_1) -> -	happyIn49-		 (QuoteTerm (getRange happy_var_1)-	)}--happyReduce_210 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_210 = happySpecReduce_1  39# happyReduction_210-happyReduction_210 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteContext happy_var_1) -> -	happyIn49-		 (QuoteContext (getRange happy_var_1)-	)}--happyReduce_211 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_211 = happySpecReduce_1  39# happyReduction_211-happyReduction_211 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquote happy_var_1) -> -	happyIn49-		 (Unquote (getRange happy_var_1)-	)}--happyReduce_212 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_212 = happySpecReduce_1  39# happyReduction_212-happyReduction_212 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSetN happy_var_1) -> -	happyIn49-		 (SetN (getRange (fst happy_var_1)) (snd happy_var_1)-	)}--happyReduce_213 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_213 = happySpecReduce_3  39# happyReduction_213-happyReduction_213 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> -	case happyOut39 happy_x_2 of { happy_var_2 -> -	case happyOut21 happy_x_3 of { happy_var_3 -> -	happyIn49-		 (InstanceArg (getRange (happy_var_1,happy_var_2,happy_var_3))-                                                          (maybeNamed happy_var_2)-	)}}}--happyReduce_214 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_214 = happySpecReduce_3  39# happyReduction_214-happyReduction_214 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> -	case happyOut39 happy_x_2 of { happy_var_2 -> -	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> -	happyIn49-		 (Paren (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2-	)}}}--happyReduce_215 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_215 = happySpecReduce_3  39# happyReduction_215-happyReduction_215 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenIdiomBracket happy_var_1) -> -	case happyOut39 happy_x_2 of { happy_var_2 -> -	case happyOutTok happy_x_3 of { (TokSymbol SymCloseIdiomBracket happy_var_3) -> -	happyIn49-		 (IdiomBrackets (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2-	)}}}--happyReduce_216 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_216 = happySpecReduce_2  39# happyReduction_216-happyReduction_216 happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokSymbol SymCloseParen happy_var_2) -> -	happyIn49-		 (Absurd (fuseRange happy_var_1 happy_var_2)-	)}}--happyReduce_217 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_217 = happySpecReduce_2  39# happyReduction_217-happyReduction_217 happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> -	case happyOut21 happy_x_2 of { happy_var_2 -> -	happyIn49-		 (let r = fuseRange happy_var_1 happy_var_2 in InstanceArg r $ unnamed $ Absurd r-	)}}--happyReduce_218 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_218 = happySpecReduce_3  39# happyReduction_218-happyReduction_218 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut19 happy_x_1 of { happy_var_1 -> -	case happyOutTok happy_x_2 of { (TokSymbol SymAs happy_var_2) -> -	case happyOut50 happy_x_3 of { happy_var_3 -> -	happyIn49-		 (As (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_1 happy_var_3-	)}}}--happyReduce_219 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_219 = happySpecReduce_2  39# happyReduction_219-happyReduction_219 happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDot happy_var_1) -> -	case happyOut50 happy_x_2 of { happy_var_2 -> -	happyIn49-		 (Dot (fuseRange happy_var_1 happy_var_2) happy_var_2-	)}}--happyReduce_220 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_220 = happyReduce 4# 39# happyReduction_220-happyReduction_220 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokSymbol SymOpenBrace happy_var_2) -> -	case happyOut51 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> -	happyIn49-		 (Rec (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3-	) `HappyStk` happyRest}}}}--happyReduce_221 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_221 = happyReduce 5# 39# happyReduction_221-happyReduction_221 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> -	case happyOut49 happy_x_2 of { happy_var_2 -> -	case happyOutTok happy_x_3 of { (TokSymbol SymOpenBrace happy_var_3) -> -	case happyOut55 happy_x_4 of { happy_var_4 -> -	case happyOutTok happy_x_5 of { (TokSymbol SymCloseBrace happy_var_5) -> -	happyIn49-		 (RecUpdate (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) happy_var_2 happy_var_4-	) `HappyStk` happyRest}}}}}--happyReduce_222 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_222 = happySpecReduce_1  39# happyReduction_222-happyReduction_222 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymEllipsis happy_var_1) -> -	happyIn49-		 (Ellipsis (getRange happy_var_1)-	)}--happyReduce_223 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_223 = happySpecReduce_1  40# happyReduction_223-happyReduction_223 happy_x_1-	 =  case happyOut48 happy_x_1 of { happy_var_1 -> -	happyIn50-		 (happy_var_1-	)}--happyReduce_224 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_224 = happySpecReduce_1  40# happyReduction_224-happyReduction_224 happy_x_1-	 =  case happyOut49 happy_x_1 of { happy_var_1 -> -	happyIn50-		 (happy_var_1-	)}--happyReduce_225 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_225 = happySpecReduce_0  41# happyReduction_225-happyReduction_225  =  happyIn51-		 ([]-	)--happyReduce_226 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_226 = happySpecReduce_1  41# happyReduction_226-happyReduction_226 happy_x_1-	 =  case happyOut52 happy_x_1 of { happy_var_1 -> -	happyIn51-		 (happy_var_1-	)}--happyReduce_227 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_227 = happySpecReduce_1  42# happyReduction_227-happyReduction_227 happy_x_1-	 =  case happyOut53 happy_x_1 of { happy_var_1 -> -	happyIn52-		 ([happy_var_1]-	)}--happyReduce_228 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_228 = happySpecReduce_3  42# happyReduction_228-happyReduction_228 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut53 happy_x_1 of { happy_var_1 -> -	case happyOut52 happy_x_3 of { happy_var_3 -> -	happyIn52-		 (happy_var_1 : happy_var_3-	)}}--happyReduce_229 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_229 = happySpecReduce_1  43# happyReduction_229-happyReduction_229 happy_x_1-	 =  case happyOut57 happy_x_1 of { happy_var_1 -> -	happyIn53-		 (Left  happy_var_1-	)}--happyReduce_230 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_230 = happySpecReduce_1  43# happyReduction_230-happyReduction_230 happy_x_1-	 =  case happyOut54 happy_x_1 of { happy_var_1 -> -	happyIn53-		 (Right happy_var_1-	)}--happyReduce_231 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_231 = happySpecReduce_3  44# happyReduction_231-happyReduction_231 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut26 happy_x_1 of { happy_var_1 -> -	case happyOut130 happy_x_2 of { happy_var_2 -> -	case happyOut81 happy_x_3 of { happy_var_3 -> -	happyIn54-		 (ModuleAssignment happy_var_1 happy_var_2 happy_var_3-	)}}}--happyReduce_232 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_232 = happySpecReduce_0  45# happyReduction_232-happyReduction_232  =  happyIn55-		 ([]-	)--happyReduce_233 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_233 = happySpecReduce_1  45# happyReduction_233-happyReduction_233 happy_x_1-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> -	happyIn55-		 (happy_var_1-	)}--happyReduce_234 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_234 = happySpecReduce_1  46# happyReduction_234-happyReduction_234 happy_x_1-	 =  case happyOut57 happy_x_1 of { happy_var_1 -> -	happyIn56-		 ([happy_var_1]-	)}--happyReduce_235 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_235 = happySpecReduce_3  46# happyReduction_235-happyReduction_235 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut57 happy_x_1 of { happy_var_1 -> -	case happyOut56 happy_x_3 of { happy_var_3 -> -	happyIn56-		 (happy_var_1 : happy_var_3-	)}}--happyReduce_236 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_236 = happySpecReduce_3  47# happyReduction_236-happyReduction_236 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut19 happy_x_1 of { happy_var_1 -> -	case happyOut39 happy_x_3 of { happy_var_3 -> -	happyIn57-		 (FieldAssignment happy_var_1 happy_var_3-	)}}--happyReduce_237 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_237 = happySpecReduce_2  48# happyReduction_237-happyReduction_237 happy_x_2-	happy_x_1-	 =  case happyOut59 happy_x_1 of { happy_var_1 -> -	happyIn58-		 (happy_var_1-	)}--happyReduce_238 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_238 = happySpecReduce_1  49# happyReduction_238-happyReduction_238 happy_x_1-	 =  case happyOut60 happy_x_1 of { happy_var_1 -> -	happyIn59-		 ({-TeleBind-} happy_var_1-	)}--happyReduce_239 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_239 = happySpecReduce_2  50# happyReduction_239-happyReduction_239 happy_x_2-	happy_x_1-	 =  case happyOut61 happy_x_1 of { happy_var_1 -> -	case happyOut60 happy_x_2 of { happy_var_2 -> -	happyIn60-		 (happy_var_1 : happy_var_2-	)}}--happyReduce_240 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_240 = happySpecReduce_1  50# happyReduction_240-happyReduction_240 happy_x_1-	 =  case happyOut61 happy_x_1 of { happy_var_1 -> -	happyIn60-		 ([happy_var_1]-	)}--happyReduce_241 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_241 = happyReduce 4# 51# happyReduction_241-happyReduction_241 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) -> -	case happyOut63 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> -	happyIn61-		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $-                             setRelevance Irrelevant happy_var_3-	) `HappyStk` happyRest}}}--happyReduce_242 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_242 = happyReduce 4# 51# happyReduction_242-happyReduction_242 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_2 of { (TokSymbol SymOpenBrace happy_var_2) -> -	case happyOut62 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> -	happyIn61-		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $-                             setHiding Hidden $-                             setRelevance Irrelevant happy_var_3-	) `HappyStk` happyRest}}}--happyReduce_243 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_243 = happyReduce 4# 51# happyReduction_243-happyReduction_243 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_2 of { (TokSymbol SymDoubleOpenBrace happy_var_2) -> -	case happyOut62 happy_x_3 of { happy_var_3 -> -	case happyOut21 happy_x_4 of { happy_var_4 -> -	happyIn61-		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $-                             makeInstance $-                             setRelevance Irrelevant happy_var_3-	) `HappyStk` happyRest}}}--happyReduce_244 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_244 = happyReduce 4# 51# happyReduction_244-happyReduction_244 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) -> -	case happyOut63 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> -	happyIn61-		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $-                             setRelevance NonStrict happy_var_3-	) `HappyStk` happyRest}}}--happyReduce_245 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_245 = happyReduce 4# 51# happyReduction_245-happyReduction_245 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_2 of { (TokSymbol SymOpenBrace happy_var_2) -> -	case happyOut62 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> -	happyIn61-		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $-                             setHiding Hidden $-                             setRelevance NonStrict happy_var_3-	) `HappyStk` happyRest}}}--happyReduce_246 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_246 = happyReduce 4# 51# happyReduction_246-happyReduction_246 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_2 of { (TokSymbol SymDoubleOpenBrace happy_var_2) -> -	case happyOut62 happy_x_3 of { happy_var_3 -> -	case happyOut21 happy_x_4 of { happy_var_4 -> -	happyIn61-		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $-                             makeInstance $-                             setRelevance NonStrict happy_var_3-	) `HappyStk` happyRest}}}--happyReduce_247 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_247 = happySpecReduce_3  51# happyReduction_247-happyReduction_247 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> -	case happyOut63 happy_x_2 of { happy_var_2 -> -	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> -	happyIn61-		 (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2-	)}}}--happyReduce_248 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_248 = happySpecReduce_3  51# happyReduction_248-happyReduction_248 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> -	case happyOut62 happy_x_2 of { happy_var_2 -> -	case happyOut21 happy_x_3 of { happy_var_3 -> -	happyIn61-		 (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) $-                             makeInstance happy_var_2-	)}}}--happyReduce_249 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_249 = happySpecReduce_3  51# happyReduction_249-happyReduction_249 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> -	case happyOut62 happy_x_2 of { happy_var_2 -> -	case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) -> -	happyIn61-		 (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) $-                             setHiding Hidden happy_var_2-	)}}}--happyReduce_250 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_250 = happySpecReduce_3  51# happyReduction_250-happyReduction_250 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> -	case happyOut129 happy_x_2 of { happy_var_2 -> -	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> -	happyIn61-		 (tLet (getRange (happy_var_1,happy_var_3)) happy_var_2-	)}}}--happyReduce_251 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_251 = happyReduce 4# 51# happyReduction_251-happyReduction_251 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> -	case happyOut179 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> -	happyIn61-		 (tLet (getRange (happy_var_1,happy_var_4)) happy_var_3-	) `HappyStk` happyRest}}}--happyReduce_252 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_252 = happySpecReduce_3  52# happyReduction_252-happyReduction_252 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut29 happy_x_1 of { happy_var_1 -> -	case happyOutTok happy_x_2 of { (TokSymbol SymColon happy_var_2) -> -	case happyOut39 happy_x_3 of { happy_var_3 -> -	happyIn62-		 (let r = getRange (happy_var_1,happy_var_2,happy_var_3) -- the range is approximate only for TypedBindings-    in TypedBindings r $ defaultArg $ TBind r (map (pure . mkBoundName_) happy_var_1) happy_var_3-	)}}}--happyReduce_253 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_253 = happySpecReduce_3  53# happyReduction_253-happyReduction_253 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut31 happy_x_1 of { happy_var_1 -> -	case happyOutTok happy_x_2 of { (TokSymbol SymColon happy_var_2) -> -	case happyOut39 happy_x_3 of { happy_var_3 -> -	happyIn63-		 (let r = getRange (happy_var_1,happy_var_2,happy_var_3) -- the range is approximate only for TypedBindings-    in TypedBindings r $ defaultArg $ TBind r (map (fmap mkBoundName_) happy_var_1) happy_var_3-	)}}}--happyReduce_254 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_254 = happyMonadReduce 2# 54# happyReduction_254-happyReduction_254 (happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut66 happy_x_1 of { happy_var_1 -> -	(-      case reverse happy_var_1 of-        Left _ : _ -> parseError "Absurd lambda cannot have a body."-        _ : _      -> return [ b | Right b <- happy_var_1 ]-        []         -> parsePanic "Empty LamBinds")})-	) (\r -> happyReturn (happyIn64 r))--happyReduce_255 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_255 = happyMonadReduce 1# 55# happyReduction_255-happyReduction_255 (happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut67 happy_x_1 of { happy_var_1 -> -	(-    case happy_var_1 of-      Left lb -> case reverse lb of-                   Right _ : _ -> parseError "Missing body for lambda"-                   Left h  : _ -> return $ Left ([ b | Right b <- init lb], h)-                   _           -> parseError "Unsupported variant of lambda"-      Right es -> return $ Right es)})-	) (\r -> happyReturn (happyIn65 r))--happyReduce_256 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_256 = happySpecReduce_2  56# happyReduction_256-happyReduction_256 happy_x_2-	happy_x_1-	 =  case happyOut76 happy_x_1 of { happy_var_1 -> -	case happyOut66 happy_x_2 of { happy_var_2 -> -	happyIn66-		 (map Right happy_var_1 ++ happy_var_2-	)}}--happyReduce_257 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_257 = happySpecReduce_2  56# happyReduction_257-happyReduction_257 happy_x_2-	happy_x_1-	 =  case happyOut61 happy_x_1 of { happy_var_1 -> -	case happyOut66 happy_x_2 of { happy_var_2 -> -	happyIn66-		 (Right (DomainFull happy_var_1) : happy_var_2-	)}}--happyReduce_258 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_258 = happySpecReduce_1  56# happyReduction_258-happyReduction_258 happy_x_1-	 =  case happyOut76 happy_x_1 of { happy_var_1 -> -	happyIn66-		 (map Right happy_var_1-	)}--happyReduce_259 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_259 = happySpecReduce_1  56# happyReduction_259-happyReduction_259 happy_x_1-	 =  case happyOut61 happy_x_1 of { happy_var_1 -> -	happyIn66-		 ([Right $ DomainFull happy_var_1]-	)}--happyReduce_260 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_260 = happySpecReduce_2  56# happyReduction_260-happyReduction_260 happy_x_2-	happy_x_1-	 =  happyIn66-		 ([Left NotHidden]-	)--happyReduce_261 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_261 = happySpecReduce_2  56# happyReduction_261-happyReduction_261 happy_x_2-	happy_x_1-	 =  happyIn66-		 ([Left Hidden]-	)--happyReduce_262 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_262 = happySpecReduce_2  56# happyReduction_262-happyReduction_262 happy_x_2-	happy_x_1-	 =  happyIn66-		 ([Left (Instance NoOverlap)]-	)--happyReduce_263 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_263 = happySpecReduce_2  57# happyReduction_263-happyReduction_263 happy_x_2-	happy_x_1-	 =  case happyOut76 happy_x_1 of { happy_var_1 -> -	case happyOut66 happy_x_2 of { happy_var_2 -> -	happyIn67-		 (Left $ map Right happy_var_1 ++ happy_var_2-	)}}--happyReduce_264 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_264 = happySpecReduce_2  57# happyReduction_264-happyReduction_264 happy_x_2-	happy_x_1-	 =  case happyOut61 happy_x_1 of { happy_var_1 -> -	case happyOut66 happy_x_2 of { happy_var_2 -> -	happyIn67-		 (Left $ Right (DomainFull happy_var_1) : happy_var_2-	)}}--happyReduce_265 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_265 = happySpecReduce_1  57# happyReduction_265-happyReduction_265 happy_x_1-	 =  case happyOut77 happy_x_1 of { happy_var_1 -> -	happyIn67-		 (case happy_var_1 of-                                    Left lb -> Left $ map Right lb-                                    Right es -> Right es-	)}--happyReduce_266 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_266 = happySpecReduce_1  57# happyReduction_266-happyReduction_266 happy_x_1-	 =  case happyOut61 happy_x_1 of { happy_var_1 -> -	happyIn67-		 (Left [Right $ DomainFull happy_var_1]-	)}--happyReduce_267 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_267 = happySpecReduce_2  57# happyReduction_267-happyReduction_267 happy_x_2-	happy_x_1-	 =  happyIn67-		 (Left [Left NotHidden]-	)--happyReduce_268 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_268 = happySpecReduce_2  57# happyReduction_268-happyReduction_268 happy_x_2-	happy_x_1-	 =  happyIn67-		 (Left [Left Hidden]-	)--happyReduce_269 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_269 = happySpecReduce_2  57# happyReduction_269-happyReduction_269 happy_x_2-	happy_x_1-	 =  happyIn67-		 (Left [Left (Instance NoOverlap)]-	)--happyReduce_270 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_270 = happyMonadReduce 3# 58# happyReduction_270-happyReduction_270 (happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut47 happy_x_1 of { happy_var_1 -> -	case happyOut39 happy_x_3 of { happy_var_3 -> -	( do-      p <- exprToLHS (RawApp (getRange happy_var_1) happy_var_1) ;-      return LamClause{ lamLHS      = p [] []-                      , lamRHS      = RHS happy_var_3-                      , lamWhere    = NoWhere-                      , lamCatchAll = False })}})-	) (\r -> happyReturn (happyIn68 r))--happyReduce_271 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_271 = happyMonadReduce 4# 58# happyReduction_271-happyReduction_271 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut47 happy_x_2 of { happy_var_2 -> -	case happyOut39 happy_x_4 of { happy_var_4 -> -	( do-      p <- exprToLHS (RawApp (getRange happy_var_2) happy_var_2) ;-      return LamClause{ lamLHS      = p [] []-                      , lamRHS      = RHS happy_var_4-                      , lamWhere    = NoWhere-                      , lamCatchAll = True })}})-	) (\r -> happyReturn (happyIn68 r))--happyReduce_272 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_272 = happyMonadReduce 1# 59# happyReduction_272-happyReduction_272 (happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut42 happy_x_1 of { happy_var_1 -> -	( do-      p <- exprToLHS (RawApp (getRange happy_var_1) happy_var_1);-      return LamClause{ lamLHS      = p [] []-                      , lamRHS      = AbsurdRHS-                      , lamWhere    = NoWhere-                      , lamCatchAll = False })})-	) (\r -> happyReturn (happyIn69 r))--happyReduce_273 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_273 = happyMonadReduce 2# 59# happyReduction_273-happyReduction_273 (happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut42 happy_x_2 of { happy_var_2 -> -	( do-      p <- exprToLHS (RawApp (getRange happy_var_2) happy_var_2);-      return LamClause{ lamLHS      = p [] []-                      , lamRHS      = AbsurdRHS-                      , lamWhere    = NoWhere-                      , lamCatchAll = True })})-	) (\r -> happyReturn (happyIn69 r))--happyReduce_274 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_274 = happySpecReduce_1  60# happyReduction_274-happyReduction_274 happy_x_1-	 =  case happyOut68 happy_x_1 of { happy_var_1 -> -	happyIn70-		 (happy_var_1-	)}--happyReduce_275 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_275 = happySpecReduce_1  60# happyReduction_275-happyReduction_275 happy_x_1-	 =  case happyOut69 happy_x_1 of { happy_var_1 -> -	happyIn70-		 (happy_var_1-	)}--happyReduce_276 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_276 = happySpecReduce_3  61# happyReduction_276-happyReduction_276 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut71 happy_x_1 of { happy_var_1 -> -	case happyOut70 happy_x_3 of { happy_var_3 -> -	happyIn71-		 (happy_var_3 : happy_var_1-	)}}--happyReduce_277 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_277 = happySpecReduce_3  61# happyReduction_277-happyReduction_277 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut69 happy_x_1 of { happy_var_1 -> -	case happyOut70 happy_x_3 of { happy_var_3 -> -	happyIn71-		 ([happy_var_3, happy_var_1]-	)}}--happyReduce_278 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_278 = happySpecReduce_1  61# happyReduction_278-happyReduction_278 happy_x_1-	 =  case happyOut68 happy_x_1 of { happy_var_1 -> -	happyIn71-		 ([happy_var_1]-	)}--happyReduce_279 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_279 = happySpecReduce_3  62# happyReduction_279-happyReduction_279 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut72 happy_x_1 of { happy_var_1 -> -	case happyOut70 happy_x_3 of { happy_var_3 -> -	happyIn72-		 (happy_var_3 : happy_var_1-	)}}--happyReduce_280 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_280 = happySpecReduce_1  62# happyReduction_280-happyReduction_280 happy_x_1-	 =  case happyOut70 happy_x_1 of { happy_var_1 -> -	happyIn72-		 ([happy_var_1]-	)}--happyReduce_281 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_281 = happySpecReduce_2  63# happyReduction_281-happyReduction_281 happy_x_2-	happy_x_1-	 =  case happyOut74 happy_x_1 of { happy_var_1 -> -	happyIn73-		 (happy_var_1-	)}--happyReduce_282 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_282 = happySpecReduce_2  64# happyReduction_282-happyReduction_282 happy_x_2-	happy_x_1-	 =  case happyOut76 happy_x_1 of { happy_var_1 -> -	case happyOut74 happy_x_2 of { happy_var_2 -> -	happyIn74-		 (happy_var_1 ++ happy_var_2-	)}}--happyReduce_283 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_283 = happySpecReduce_2  64# happyReduction_283-happyReduction_283 happy_x_2-	happy_x_1-	 =  case happyOut61 happy_x_1 of { happy_var_1 -> -	case happyOut74 happy_x_2 of { happy_var_2 -> -	happyIn74-		 (DomainFull happy_var_1 : happy_var_2-	)}}--happyReduce_284 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_284 = happySpecReduce_1  64# happyReduction_284-happyReduction_284 happy_x_1-	 =  case happyOut76 happy_x_1 of { happy_var_1 -> -	happyIn74-		 (happy_var_1-	)}--happyReduce_285 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_285 = happySpecReduce_1  64# happyReduction_285-happyReduction_285 happy_x_1-	 =  case happyOut61 happy_x_1 of { happy_var_1 -> -	happyIn74-		 ([DomainFull happy_var_1]-	)}--happyReduce_286 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_286 = happySpecReduce_2  65# happyReduction_286-happyReduction_286 happy_x_2-	happy_x_1-	 =  case happyOut76 happy_x_1 of { happy_var_1 -> -	case happyOut75 happy_x_2 of { happy_var_2 -> -	happyIn75-		 (happy_var_1 ++ happy_var_2-	)}}--happyReduce_287 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_287 = happySpecReduce_2  65# happyReduction_287-happyReduction_287 happy_x_2-	happy_x_1-	 =  case happyOut61 happy_x_1 of { happy_var_1 -> -	case happyOut75 happy_x_2 of { happy_var_2 -> -	happyIn75-		 (DomainFull happy_var_1 : happy_var_2-	)}}--happyReduce_288 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_288 = happySpecReduce_0  65# happyReduction_288-happyReduction_288  =  happyIn75-		 ([]-	)--happyReduce_289 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_289 = happySpecReduce_1  66# happyReduction_289-happyReduction_289 happy_x_1-	 =  case happyOut77 happy_x_1 of { happy_var_1 -> -	happyIn76-		 (case happy_var_1 of-                             Left lbs -> lbs-                             Right _ -> fail "expected sequence of bound identifiers, not absurd pattern"-	)}--happyReduce_290 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_290 = happySpecReduce_1  67# happyReduction_290-happyReduction_290 happy_x_1-	 =  case happyOut27 happy_x_1 of { happy_var_1 -> -	happyIn77-		 (Left [DomainFree defaultArgInfo $ mkBoundName_ happy_var_1]-	)}--happyReduce_291 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_291 = happySpecReduce_2  67# happyReduction_291-happyReduction_291 happy_x_2-	happy_x_1-	 =  case happyOut27 happy_x_2 of { happy_var_2 -> -	happyIn77-		 (Left [DomainFree (setRelevance Irrelevant $ defaultArgInfo) $ mkBoundName_ happy_var_2]-	)}--happyReduce_292 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_292 = happySpecReduce_2  67# happyReduction_292-happyReduction_292 happy_x_2-	happy_x_1-	 =  case happyOut27 happy_x_2 of { happy_var_2 -> -	happyIn77-		 (Left [DomainFree (setRelevance NonStrict $ defaultArgInfo) $ mkBoundName_ happy_var_2]-	)}--happyReduce_293 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_293 = happySpecReduce_3  67# happyReduction_293-happyReduction_293 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut30 happy_x_2 of { happy_var_2 -> -	happyIn77-		 (mapLeft (map (DomainFree (setHiding Hidden $ defaultArgInfo) . mkBoundName_)) happy_var_2-	)}--happyReduce_294 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_294 = happySpecReduce_3  67# happyReduction_294-happyReduction_294 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut29 happy_x_2 of { happy_var_2 -> -	happyIn77-		 (Left $ map (DomainFree (makeInstance $ defaultArgInfo) . mkBoundName_) happy_var_2-	)}--happyReduce_295 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_295 = happyReduce 4# 67# happyReduction_295-happyReduction_295 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut29 happy_x_3 of { happy_var_3 -> -	happyIn77-		 (Left $ map (DomainFree (setHiding Hidden $ setRelevance Irrelevant $ defaultArgInfo) . mkBoundName_) happy_var_3-	) `HappyStk` happyRest}--happyReduce_296 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_296 = happyReduce 4# 67# happyReduction_296-happyReduction_296 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut29 happy_x_3 of { happy_var_3 -> -	happyIn77-		 (Left $ map (DomainFree (makeInstance $ setRelevance Irrelevant $ defaultArgInfo) . mkBoundName_) happy_var_3-	) `HappyStk` happyRest}--happyReduce_297 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_297 = happyReduce 4# 67# happyReduction_297-happyReduction_297 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut29 happy_x_3 of { happy_var_3 -> -	happyIn77-		 (Left $ map (DomainFree (setHiding Hidden $ setRelevance NonStrict $ defaultArgInfo) . mkBoundName_) happy_var_3-	) `HappyStk` happyRest}--happyReduce_298 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_298 = happyReduce 4# 67# happyReduction_298-happyReduction_298 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut29 happy_x_3 of { happy_var_3 -> -	happyIn77-		 (Left $ map (DomainFree  (makeInstance $ setRelevance NonStrict $ defaultArgInfo) . mkBoundName_) happy_var_3-	) `HappyStk` happyRest}--happyReduce_299 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_299 = happySpecReduce_1  68# happyReduction_299-happyReduction_299 happy_x_1-	 =  case happyOut79 happy_x_1 of { happy_var_1 -> -	happyIn78-		 ([happy_var_1]-	)}--happyReduce_300 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_300 = happySpecReduce_2  68# happyReduction_300-happyReduction_300 happy_x_2-	happy_x_1-	 =  case happyOut79 happy_x_1 of { happy_var_1 -> -	happyIn78-		 ([happy_var_1]-	)}--happyReduce_301 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_301 = happySpecReduce_3  68# happyReduction_301-happyReduction_301 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut79 happy_x_1 of { happy_var_1 -> -	case happyOut78 happy_x_3 of { happy_var_3 -> -	happyIn78-		 (happy_var_1 : happy_var_3-	)}}--happyReduce_302 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_302 = happyMonadReduce 2# 69# happyReduction_302-happyReduction_302 (happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut39 happy_x_1 of { happy_var_1 -> -	case happyOut80 happy_x_2 of { happy_var_2 -> -	( buildDoStmt happy_var_1 happy_var_2)}})-	) (\r -> happyReturn (happyIn79 r))--happyReduce_303 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_303 = happySpecReduce_0  70# happyReduction_303-happyReduction_303  =  happyIn80-		 ([]-	)--happyReduce_304 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_304 = happyReduce 4# 70# happyReduction_304-happyReduction_304 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut72 happy_x_3 of { happy_var_3 -> -	happyIn80-		 (reverse happy_var_3-	) `HappyStk` happyRest}--happyReduce_305 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_305 = happyMonadReduce 1# 71# happyReduction_305-happyReduction_305 (happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut82 happy_x_1 of { happy_var_1 -> -	( mergeImportDirectives happy_var_1)})-	) (\r -> happyReturn (happyIn81 r))--happyReduce_306 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_306 = happySpecReduce_2  72# happyReduction_306-happyReduction_306 happy_x_2-	happy_x_1-	 =  case happyOut83 happy_x_1 of { happy_var_1 -> -	case happyOut82 happy_x_2 of { happy_var_2 -> -	happyIn82-		 (happy_var_1 : happy_var_2-	)}}--happyReduce_307 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_307 = happySpecReduce_0  72# happyReduction_307-happyReduction_307  =  happyIn82-		 ([]-	)--happyReduce_308 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_308 = happySpecReduce_1  73# happyReduction_308-happyReduction_308 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPublic happy_var_1) -> -	happyIn83-		 (defaultImportDir { importDirRange = getRange happy_var_1, publicOpen = True }-	)}--happyReduce_309 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_309 = happySpecReduce_1  73# happyReduction_309-happyReduction_309 happy_x_1-	 =  case happyOut84 happy_x_1 of { happy_var_1 -> -	happyIn83-		 (defaultImportDir { importDirRange = snd happy_var_1, using    = fst happy_var_1 }-	)}--happyReduce_310 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_310 = happySpecReduce_1  73# happyReduction_310-happyReduction_310 happy_x_1-	 =  case happyOut85 happy_x_1 of { happy_var_1 -> -	happyIn83-		 (defaultImportDir { importDirRange = snd happy_var_1, hiding   = fst happy_var_1 }-	)}--happyReduce_311 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_311 = happySpecReduce_1  73# happyReduction_311-happyReduction_311 happy_x_1-	 =  case happyOut86 happy_x_1 of { happy_var_1 -> -	happyIn83-		 (defaultImportDir { importDirRange = snd happy_var_1, impRenaming = fst happy_var_1 }-	)}--happyReduce_312 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_312 = happyReduce 4# 74# happyReduction_312-happyReduction_312 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwUsing happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) -> -	case happyOut91 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> -	happyIn84-		 ((Using happy_var_3 , getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4))-	) `HappyStk` happyRest}}}}--happyReduce_313 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_313 = happyReduce 4# 75# happyReduction_313-happyReduction_313 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwHiding happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) -> -	case happyOut91 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> -	happyIn85-		 ((happy_var_3 , getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4))-	) `HappyStk` happyRest}}}}--happyReduce_314 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_314 = happyReduce 4# 76# happyReduction_314-happyReduction_314 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwRenaming happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) -> -	case happyOut87 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> -	happyIn86-		 ((happy_var_3 , getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4))-	) `HappyStk` happyRest}}}}--happyReduce_315 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_315 = happySpecReduce_3  76# happyReduction_315-happyReduction_315 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRenaming happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) -> -	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> -	happyIn86-		 (([] , getRange (happy_var_1,happy_var_2,happy_var_3))-	)}}}--happyReduce_316 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_316 = happySpecReduce_3  77# happyReduction_316-happyReduction_316 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut88 happy_x_1 of { happy_var_1 -> -	case happyOut87 happy_x_3 of { happy_var_3 -> -	happyIn87-		 (happy_var_1 : happy_var_3-	)}}--happyReduce_317 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_317 = happySpecReduce_1  77# happyReduction_317-happyReduction_317 happy_x_1-	 =  case happyOut88 happy_x_1 of { happy_var_1 -> -	happyIn87-		 ([happy_var_1]-	)}--happyReduce_318 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_318 = happySpecReduce_3  78# happyReduction_318-happyReduction_318 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut89 happy_x_1 of { happy_var_1 -> -	case happyOutTok happy_x_2 of { (TokKeyword KwTo happy_var_2) -> -	case happyOut19 happy_x_3 of { happy_var_3 -> -	happyIn88-		 (Renaming happy_var_1 (setImportedName happy_var_1 happy_var_3) (getRange happy_var_2)-	)}}}--happyReduce_319 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_319 = happySpecReduce_2  79# happyReduction_319-happyReduction_319 happy_x_2-	happy_x_1-	 =  case happyOut19 happy_x_2 of { happy_var_2 -> -	happyIn89-		 (ImportedName happy_var_2-	)}--happyReduce_320 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_320 = happySpecReduce_3  79# happyReduction_320-happyReduction_320 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut19 happy_x_3 of { happy_var_3 -> -	happyIn89-		 (ImportedModule happy_var_3-	)}--happyReduce_321 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_321 = happySpecReduce_1  80# happyReduction_321-happyReduction_321 happy_x_1-	 =  case happyOut19 happy_x_1 of { happy_var_1 -> -	happyIn90-		 (ImportedName happy_var_1-	)}--happyReduce_322 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_322 = happySpecReduce_2  80# happyReduction_322-happyReduction_322 happy_x_2-	happy_x_1-	 =  case happyOut19 happy_x_2 of { happy_var_2 -> -	happyIn90-		 (ImportedModule happy_var_2-	)}--happyReduce_323 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_323 = happySpecReduce_0  81# happyReduction_323-happyReduction_323  =  happyIn91-		 ([]-	)--happyReduce_324 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_324 = happySpecReduce_1  81# happyReduction_324-happyReduction_324 happy_x_1-	 =  case happyOut92 happy_x_1 of { happy_var_1 -> -	happyIn91-		 (happy_var_1-	)}--happyReduce_325 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_325 = happySpecReduce_1  82# happyReduction_325-happyReduction_325 happy_x_1-	 =  case happyOut90 happy_x_1 of { happy_var_1 -> -	happyIn92-		 ([happy_var_1]-	)}--happyReduce_326 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_326 = happySpecReduce_3  82# happyReduction_326-happyReduction_326 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut90 happy_x_1 of { happy_var_1 -> -	case happyOut92 happy_x_3 of { happy_var_3 -> -	happyIn92-		 (happy_var_1 : happy_var_3-	)}}--happyReduce_327 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_327 = happyMonadReduce 3# 83# happyReduction_327-happyReduction_327 (happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut40 happy_x_1 of { happy_var_1 -> -	case happyOut95 happy_x_2 of { happy_var_2 -> -	case happyOut94 happy_x_3 of { happy_var_3 -> -	( exprToLHS happy_var_1 >>= \p -> return (p happy_var_2 happy_var_3))}}})-	) (\r -> happyReturn (happyIn93 r))--happyReduce_328 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_328 = happySpecReduce_0  84# happyReduction_328-happyReduction_328  =  happyIn94-		 ([]-	)--happyReduce_329 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_329 = happySpecReduce_2  84# happyReduction_329-happyReduction_329 happy_x_2-	happy_x_1-	 =  case happyOut39 happy_x_2 of { happy_var_2 -> -	happyIn94-		 (case happy_var_2 of { WithApp _ e es -> e : es; e -> [e] }-	)}--happyReduce_330 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_330 = happySpecReduce_0  85# happyReduction_330-happyReduction_330  =  happyIn95-		 ([]-	)--happyReduce_331 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_331 = happySpecReduce_2  85# happyReduction_331-happyReduction_331 happy_x_2-	happy_x_1-	 =  case happyOut40 happy_x_2 of { happy_var_2 -> -	happyIn95-		 (case happy_var_2 of { WithApp _ e es -> e : es; e -> [e] }-	)}--happyReduce_332 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_332 = happySpecReduce_1  86# happyReduction_332-happyReduction_332 happy_x_1-	 =  case happyOut39 happy_x_1 of { happy_var_1 -> -	happyIn96-		 (HoleContentExpr    happy_var_1-	)}--happyReduce_333 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_333 = happySpecReduce_1  86# happyReduction_333-happyReduction_333 happy_x_1-	 =  case happyOut95 happy_x_1 of { happy_var_1 -> -	happyIn96-		 (HoleContentRewrite happy_var_1-	)}--happyReduce_334 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_334 = happySpecReduce_0  87# happyReduction_334-happyReduction_334  =  happyIn97-		 (NoWhere-	)--happyReduce_335 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_335 = happySpecReduce_2  87# happyReduction_335-happyReduction_335 happy_x_2-	happy_x_1-	 =  case happyOut180 happy_x_2 of { happy_var_2 -> -	happyIn97-		 (AnyWhere happy_var_2-	)}--happyReduce_336 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_336 = happyReduce 4# 87# happyReduction_336-happyReduction_336 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut19 happy_x_2 of { happy_var_2 -> -	case happyOut180 happy_x_4 of { happy_var_4 -> -	happyIn97-		 (SomeWhere happy_var_2 PublicAccess happy_var_4-	) `HappyStk` happyRest}}--happyReduce_337 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_337 = happyReduce 4# 87# happyReduction_337-happyReduction_337 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut134 happy_x_2 of { happy_var_2 -> -	case happyOut180 happy_x_4 of { happy_var_4 -> -	happyIn97-		 (SomeWhere happy_var_2 PublicAccess happy_var_4-	) `HappyStk` happyRest}}--happyReduce_338 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_338 = happySpecReduce_2  88# happyReduction_338-happyReduction_338 happy_x_2-	happy_x_1-	 =  case happyOut39 happy_x_1 of { happy_var_1 -> -	case happyOut97 happy_x_2 of { happy_var_2 -> -	happyIn98-		 (ExprWhere happy_var_1 happy_var_2-	)}}--happyReduce_339 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_339 = happySpecReduce_1  89# happyReduction_339-happyReduction_339 happy_x_1-	 =  case happyOut110 happy_x_1 of { happy_var_1 -> -	happyIn99-		 (happy_var_1-	)}--happyReduce_340 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_340 = happySpecReduce_1  89# happyReduction_340-happyReduction_340 happy_x_1-	 =  case happyOut102 happy_x_1 of { happy_var_1 -> -	happyIn99-		 (happy_var_1-	)}--happyReduce_341 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_341 = happySpecReduce_1  89# happyReduction_341-happyReduction_341 happy_x_1-	 =  case happyOut104 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_342 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_342 = happySpecReduce_1  89# happyReduction_342-happyReduction_342 happy_x_1-	 =  case happyOut105 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_343 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_343 = happySpecReduce_1  89# happyReduction_343-happyReduction_343 happy_x_1-	 =  case happyOut106 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_344 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_344 = happySpecReduce_1  89# happyReduction_344-happyReduction_344 happy_x_1-	 =  case happyOut107 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_345 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_345 = happySpecReduce_1  89# happyReduction_345-happyReduction_345 happy_x_1-	 =  case happyOut109 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_346 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_346 = happySpecReduce_1  89# happyReduction_346-happyReduction_346 happy_x_1-	 =  case happyOut111 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_347 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_347 = happySpecReduce_1  89# happyReduction_347-happyReduction_347 happy_x_1-	 =  case happyOut112 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_348 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_348 = happySpecReduce_1  89# happyReduction_348-happyReduction_348 happy_x_1-	 =  case happyOut113 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_349 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_349 = happySpecReduce_1  89# happyReduction_349-happyReduction_349 happy_x_1-	 =  case happyOut114 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_350 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_350 = happySpecReduce_1  89# happyReduction_350-happyReduction_350 happy_x_1-	 =  case happyOut115 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_351 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_351 = happySpecReduce_1  89# happyReduction_351-happyReduction_351 happy_x_1-	 =  case happyOut116 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_352 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_352 = happySpecReduce_1  89# happyReduction_352-happyReduction_352 happy_x_1-	 =  case happyOut117 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_353 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_353 = happySpecReduce_1  89# happyReduction_353-happyReduction_353 happy_x_1-	 =  case happyOut129 happy_x_1 of { happy_var_1 -> -	happyIn99-		 (happy_var_1-	)}--happyReduce_354 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_354 = happySpecReduce_1  89# happyReduction_354-happyReduction_354 happy_x_1-	 =  case happyOut132 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_355 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_355 = happySpecReduce_1  89# happyReduction_355-happyReduction_355 happy_x_1-	 =  case happyOut133 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_356 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_356 = happySpecReduce_1  89# happyReduction_356-happyReduction_356 happy_x_1-	 =  case happyOut136 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_357 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_357 = happySpecReduce_1  89# happyReduction_357-happyReduction_357 happy_x_1-	 =  case happyOut119 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_358 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_358 = happySpecReduce_1  89# happyReduction_358-happyReduction_358 happy_x_1-	 =  case happyOut120 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_359 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_359 = happySpecReduce_1  89# happyReduction_359-happyReduction_359 happy_x_1-	 =  case happyOut118 happy_x_1 of { happy_var_1 -> -	happyIn99-		 ([happy_var_1]-	)}--happyReduce_360 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_360 = happySpecReduce_3  90# happyReduction_360-happyReduction_360 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut20 happy_x_1 of { happy_var_1 -> -	case happyOut39 happy_x_3 of { happy_var_3 -> -	happyIn100-		 (map (\ x -> TypeSig defaultArgInfo x happy_var_3) happy_var_1-	)}}--happyReduce_361 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_361 = happySpecReduce_3  91# happyReduction_361-happyReduction_361 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut24 happy_x_1 of { happy_var_1 -> -	case happyOut39 happy_x_3 of { happy_var_3 -> -	happyIn101-		 (map (fmap (\ x -> TypeSig defaultArgInfo x happy_var_3)) happy_var_1-	)}}--happyReduce_362 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_362 = happyMonadReduce 4# 91# happyReduction_362-happyReduction_362 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokKeyword KwOverlap happy_var_1) -> -	case happyOut24 happy_x_2 of { happy_var_2 -> -	case happyOut39 happy_x_4 of { happy_var_4 -> -	(-      let setOverlap x =-            case getHiding x of-              Instance _ -> return $ makeInstance' YesOverlap x-              _          ->-                parseErrorAt (fromJust $ rStart' $ getRange happy_var_1)-                             "The 'overlap' keyword only applies to instance fields (fields marked with {{ }})"-      in T.traverse (setOverlap . fmap (\ x -> TypeSig defaultArgInfo x happy_var_4)) happy_var_2)}}})-	) (\r -> happyReturn (happyIn101 r))--happyReduce_363 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_363 = happySpecReduce_2  91# happyReduction_363-happyReduction_363 happy_x_2-	happy_x_1-	 =  case happyOut172 happy_x_2 of { happy_var_2 -> -	happyIn101-		 (let-      setInstance (TypeSig info x t) = TypeSig (makeInstance info) x t-      setInstance _ = __IMPOSSIBLE__ in-    map (fmap setInstance) happy_var_2-	)}--happyReduce_364 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_364 = happyMonadReduce 3# 92# happyReduction_364-happyReduction_364 (happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut93 happy_x_1 of { happy_var_1 -> -	case happyOut103 happy_x_2 of { happy_var_2 -> -	case happyOut97 happy_x_3 of { happy_var_3 -> -	( funClauseOrTypeSigs happy_var_1 happy_var_2 happy_var_3)}}})-	) (\r -> happyReturn (happyIn102 r))--happyReduce_365 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_365 = happySpecReduce_2  93# happyReduction_365-happyReduction_365 happy_x_2-	happy_x_1-	 =  case happyOut39 happy_x_2 of { happy_var_2 -> -	happyIn103-		 (JustRHS (RHS happy_var_2)-	)}--happyReduce_366 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_366 = happySpecReduce_2  93# happyReduction_366-happyReduction_366 happy_x_2-	happy_x_1-	 =  case happyOut39 happy_x_2 of { happy_var_2 -> -	happyIn103-		 (TypeSigsRHS happy_var_2-	)}--happyReduce_367 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_367 = happySpecReduce_0  93# happyReduction_367-happyReduction_367  =  happyIn103-		 (JustRHS AbsurdRHS-	)--happyReduce_368 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_368 = happyReduce 7# 94# happyReduction_368-happyReduction_368 (happy_x_7 `HappyStk`-	happy_x_6 `HappyStk`-	happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> -	case happyOut19 happy_x_2 of { happy_var_2 -> -	case happyOut75 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> -	case happyOut39 happy_x_5 of { happy_var_5 -> -	case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> -	case happyOut180 happy_x_7 of { happy_var_7 -> -	happyIn104-		 (Data (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5,happy_var_6,happy_var_7)) Inductive happy_var_2 happy_var_3 (Just happy_var_5) happy_var_7-	) `HappyStk` happyRest}}}}}}}--happyReduce_369 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_369 = happyReduce 7# 94# happyReduction_369-happyReduction_369 (happy_x_7 `HappyStk`-	happy_x_6 `HappyStk`-	happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> -	case happyOut19 happy_x_2 of { happy_var_2 -> -	case happyOut75 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> -	case happyOut39 happy_x_5 of { happy_var_5 -> -	case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> -	case happyOut180 happy_x_7 of { happy_var_7 -> -	happyIn104-		 (Data (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5,happy_var_6,happy_var_7)) CoInductive happy_var_2 happy_var_3 (Just happy_var_5) happy_var_7-	) `HappyStk` happyRest}}}}}}}--happyReduce_370 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_370 = happyReduce 5# 94# happyReduction_370-happyReduction_370 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> -	case happyOut19 happy_x_2 of { happy_var_2 -> -	case happyOut75 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> -	case happyOut180 happy_x_5 of { happy_var_5 -> -	happyIn104-		 (Data (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) Inductive happy_var_2 happy_var_3 Nothing happy_var_5-	) `HappyStk` happyRest}}}}}--happyReduce_371 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_371 = happyReduce 5# 94# happyReduction_371-happyReduction_371 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> -	case happyOut19 happy_x_2 of { happy_var_2 -> -	case happyOut75 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> -	case happyOut180 happy_x_5 of { happy_var_5 -> -	happyIn104-		 (Data (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) CoInductive happy_var_2 happy_var_3 Nothing happy_var_5-	) `HappyStk` happyRest}}}}}--happyReduce_372 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_372 = happyReduce 5# 95# happyReduction_372-happyReduction_372 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> -	case happyOut19 happy_x_2 of { happy_var_2 -> -	case happyOut75 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> -	case happyOut39 happy_x_5 of { happy_var_5 -> -	happyIn105-		 (DataSig (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) Inductive happy_var_2 happy_var_3 happy_var_5-	) `HappyStk` happyRest}}}}}--happyReduce_373 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_373 = happyMonadReduce 7# 96# happyReduction_373-happyReduction_373 (happy_x_7 `HappyStk`-	happy_x_6 `HappyStk`-	happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> -	case happyOut49 happy_x_2 of { happy_var_2 -> -	case happyOut75 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> -	case happyOut39 happy_x_5 of { happy_var_5 -> -	case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> -	case happyOut174 happy_x_7 of { happy_var_7 -> -	( exprToName happy_var_2 >>= \ n -> let ((x,y,z),ds) = happy_var_7 in return $ Record (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5,happy_var_6,happy_var_7)) n x y z happy_var_3 (Just happy_var_5) ds)}}}}}}})-	) (\r -> happyReturn (happyIn106 r))--happyReduce_374 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_374 = happyMonadReduce 5# 96# happyReduction_374-happyReduction_374 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> -	case happyOut49 happy_x_2 of { happy_var_2 -> -	case happyOut75 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> -	case happyOut174 happy_x_5 of { happy_var_5 -> -	( exprToName happy_var_2 >>= \ n -> let ((x,y,z),ds) = happy_var_5 in return $ Record (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) n x y z happy_var_3 Nothing ds)}}}}})-	) (\r -> happyReturn (happyIn106 r))--happyReduce_375 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_375 = happyMonadReduce 5# 97# happyReduction_375-happyReduction_375 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> -	case happyOut49 happy_x_2 of { happy_var_2 -> -	case happyOut75 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> -	case happyOut39 happy_x_5 of { happy_var_5 -> -	( exprToName happy_var_2 >>= \ n -> return $ RecordSig (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) n happy_var_3 happy_var_5)}}}}})-	) (\r -> happyReturn (happyIn107 r))--happyReduce_376 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_376 = happySpecReduce_2  98# happyReduction_376-happyReduction_376 happy_x_2-	happy_x_1-	 =  case happyOut19 happy_x_2 of { happy_var_2 -> -	happyIn108-		 ((happy_var_2, NotInstanceDef)-	)}--happyReduce_377 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_377 = happyReduce 5# 98# happyReduction_377-happyReduction_377 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut19 happy_x_4 of { happy_var_4 -> -	happyIn108-		 ((happy_var_4, InstanceDef)-	) `HappyStk` happyRest}--happyReduce_378 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_378 = happySpecReduce_3  99# happyReduction_378-happyReduction_378 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfix happy_var_1) -> -	case happyOut18 happy_x_2 of { happy_var_2 -> -	case happyOut28 happy_x_3 of { happy_var_3 -> -	happyIn109-		 (Infix (Fixity (getRange (happy_var_1,happy_var_3)) (Related happy_var_2) NonAssoc)   happy_var_3-	)}}}--happyReduce_379 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_379 = happySpecReduce_3  99# happyReduction_379-happyReduction_379 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixL happy_var_1) -> -	case happyOut18 happy_x_2 of { happy_var_2 -> -	case happyOut28 happy_x_3 of { happy_var_3 -> -	happyIn109-		 (Infix (Fixity (getRange (happy_var_1,happy_var_3)) (Related happy_var_2) LeftAssoc)  happy_var_3-	)}}}--happyReduce_380 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_380 = happySpecReduce_3  99# happyReduction_380-happyReduction_380 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixR happy_var_1) -> -	case happyOut18 happy_x_2 of { happy_var_2 -> -	case happyOut28 happy_x_3 of { happy_var_3 -> -	happyIn109-		 (Infix (Fixity (getRange (happy_var_1,happy_var_3)) (Related happy_var_2) RightAssoc) happy_var_3-	)}}}--happyReduce_381 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_381 = happySpecReduce_2  100# happyReduction_381-happyReduction_381 happy_x_2-	happy_x_1-	 =  case happyOut172 happy_x_2 of { happy_var_2 -> -	happyIn110-		 (let-                inst i = case getHiding i of-                           Instance _ -> InstanceDef-                           _          -> NotInstanceDef-                toField (Arg info (TypeSig info' x t)) = Field (inst info') x (Arg info t)-              in map toField happy_var_2-	)}--happyReduce_382 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_382 = happySpecReduce_2  101# happyReduction_382-happyReduction_382 happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMutual happy_var_1) -> -	case happyOut180 happy_x_2 of { happy_var_2 -> -	happyIn111-		 (Mutual (fuseRange happy_var_1 happy_var_2) happy_var_2-	)}}--happyReduce_383 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_383 = happySpecReduce_2  102# happyReduction_383-happyReduction_383 happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwAbstract happy_var_1) -> -	case happyOut180 happy_x_2 of { happy_var_2 -> -	happyIn112-		 (Abstract (fuseRange happy_var_1 happy_var_2) happy_var_2-	)}}--happyReduce_384 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_384 = happySpecReduce_2  103# happyReduction_384-happyReduction_384 happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrivate happy_var_1) -> -	case happyOut180 happy_x_2 of { happy_var_2 -> -	happyIn113-		 (Private (fuseRange happy_var_1 happy_var_2) UserWritten happy_var_2-	)}}--happyReduce_385 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_385 = happySpecReduce_2  104# happyReduction_385-happyReduction_385 happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInstance happy_var_1) -> -	case happyOut180 happy_x_2 of { happy_var_2 -> -	happyIn114-		 (InstanceB (fuseRange happy_var_1 happy_var_2) happy_var_2-	)}}--happyReduce_386 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_386 = happySpecReduce_2  105# happyReduction_386-happyReduction_386 happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMacro happy_var_1) -> -	case happyOut180 happy_x_2 of { happy_var_2 -> -	happyIn115-		 (Macro (fuseRange happy_var_1 happy_var_2) happy_var_2-	)}}--happyReduce_387 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_387 = happySpecReduce_2  106# happyReduction_387-happyReduction_387 happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPostulate happy_var_1) -> -	case happyOut180 happy_x_2 of { happy_var_2 -> -	happyIn116-		 (Postulate (fuseRange happy_var_1 happy_var_2) happy_var_2-	)}}--happyReduce_388 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_388 = happySpecReduce_2  107# happyReduction_388-happyReduction_388 happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrimitive happy_var_1) -> -	case happyOut170 happy_x_2 of { happy_var_2 -> -	happyIn117-		 (Primitive (fuseRange happy_var_1 happy_var_2) happy_var_2-	)}}--happyReduce_389 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_389 = happySpecReduce_3  108# happyReduction_389-happyReduction_389 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDecl happy_var_1) -> -	case happyOut39 happy_x_3 of { happy_var_3 -> -	happyIn118-		 (UnquoteDecl (fuseRange happy_var_1 happy_var_3) [] happy_var_3-	)}}--happyReduce_390 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_390 = happyReduce 4# 108# happyReduction_390-happyReduction_390 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDecl happy_var_1) -> -	case happyOut20 happy_x_2 of { happy_var_2 -> -	case happyOut39 happy_x_4 of { happy_var_4 -> -	happyIn118-		 (UnquoteDecl (fuseRange happy_var_1 happy_var_4) happy_var_2 happy_var_4-	) `HappyStk` happyRest}}}--happyReduce_391 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_391 = happyReduce 4# 108# happyReduction_391-happyReduction_391 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDef happy_var_1) -> -	case happyOut20 happy_x_2 of { happy_var_2 -> -	case happyOut39 happy_x_4 of { happy_var_4 -> -	happyIn118-		 (UnquoteDef (fuseRange happy_var_1 happy_var_4) happy_var_2 happy_var_4-	) `HappyStk` happyRest}}}--happyReduce_392 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_392 = happyMonadReduce 5# 109# happyReduction_392-happyReduction_392 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut19 happy_x_2 of { happy_var_2 -> -	case happyOut123 happy_x_3 of { happy_var_3 -> -	case happyOut122 happy_x_5 of { happy_var_5 -> -	(-  case happy_var_2 of-    Name _ [_] -> case mkNotation happy_var_3 (map rangedThing happy_var_5) of-      Left err -> parseError $ "Malformed syntax declaration: " ++ err-      Right n -> return $ Syntax happy_var_2 n-    _ -> parseError "Syntax declarations are allowed only for simple names (without holes)")}}})-	) (\r -> happyReturn (happyIn119 r))--happyReduce_393 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_393 = happyMonadReduce 5# 110# happyReduction_393-happyReduction_393 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokKeyword KwPatternSyn happy_var_1) -> -	case happyOut19 happy_x_2 of { happy_var_2 -> -	case happyOut121 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymEqual happy_var_4) -> -	case happyOut39 happy_x_5 of { happy_var_5 -> -	( do-  p <- exprToPattern happy_var_5-  return (PatternSyn (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) happy_var_2 happy_var_3 p))}}}}})-	) (\r -> happyReturn (happyIn120 r))--happyReduce_394 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_394 = happySpecReduce_0  111# happyReduction_394-happyReduction_394  =  happyIn121-		 ([]-	)--happyReduce_395 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_395 = happyMonadReduce 1# 111# happyReduction_395-happyReduction_395 (happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut66 happy_x_1 of { happy_var_1 -> -	( patternSynArgs happy_var_1)})-	) (\r -> happyReturn (happyIn121 r))--happyReduce_396 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_396 = happySpecReduce_1  112# happyReduction_396-happyReduction_396 happy_x_1-	 =  case happyOut127 happy_x_1 of { happy_var_1 -> -	happyIn122-		 ([happy_var_1]-	)}--happyReduce_397 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_397 = happySpecReduce_2  112# happyReduction_397-happyReduction_397 happy_x_2-	happy_x_1-	 =  case happyOut122 happy_x_1 of { happy_var_1 -> -	case happyOut127 happy_x_2 of { happy_var_2 -> -	happyIn122-		 (happy_var_1 ++ [happy_var_2]-	)}}--happyReduce_398 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_398 = happySpecReduce_1  113# happyReduction_398-happyReduction_398 happy_x_1-	 =  case happyOut124 happy_x_1 of { happy_var_1 -> -	happyIn123-		 ([happy_var_1]-	)}--happyReduce_399 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_399 = happySpecReduce_2  113# happyReduction_399-happyReduction_399 happy_x_2-	happy_x_1-	 =  case happyOut123 happy_x_1 of { happy_var_1 -> -	case happyOut124 happy_x_2 of { happy_var_2 -> -	happyIn123-		 (happy_var_1 ++ [happy_var_2]-	)}}--happyReduce_400 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_400 = happySpecReduce_1  114# happyReduction_400-happyReduction_400 happy_x_1-	 =  case happyOut125 happy_x_1 of { happy_var_1 -> -	happyIn124-		 (defaultNamedArg happy_var_1-	)}--happyReduce_401 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_401 = happySpecReduce_3  114# happyReduction_401-happyReduction_401 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut126 happy_x_2 of { happy_var_2 -> -	happyIn124-		 (hide         $ defaultNamedArg happy_var_2-	)}--happyReduce_402 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_402 = happySpecReduce_3  114# happyReduction_402-happyReduction_402 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut126 happy_x_2 of { happy_var_2 -> -	happyIn124-		 (makeInstance $ defaultNamedArg happy_var_2-	)}--happyReduce_403 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_403 = happyReduce 5# 114# happyReduction_403-happyReduction_403 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut127 happy_x_2 of { happy_var_2 -> -	case happyOut126 happy_x_4 of { happy_var_4 -> -	happyIn124-		 (hide         $ defaultArg $ named happy_var_2 happy_var_4-	) `HappyStk` happyRest}}--happyReduce_404 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_404 = happyReduce 5# 114# happyReduction_404-happyReduction_404 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut127 happy_x_2 of { happy_var_2 -> -	case happyOut126 happy_x_4 of { happy_var_4 -> -	happyIn124-		 (makeInstance $ defaultArg $ named happy_var_2 happy_var_4-	) `HappyStk` happyRest}}--happyReduce_405 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_405 = happySpecReduce_1  115# happyReduction_405-happyReduction_405 happy_x_1-	 =  case happyOut127 happy_x_1 of { happy_var_1 -> -	happyIn125-		 (ExprHole (rangedThing happy_var_1)-	)}--happyReduce_406 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_406 = happyReduce 6# 115# happyReduction_406-happyReduction_406 (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 happyOut127 happy_x_3 of { happy_var_3 -> -	case happyOut127 happy_x_5 of { happy_var_5 -> -	happyIn125-		 (LambdaHole (rangedThing happy_var_3) (rangedThing happy_var_5)-	) `HappyStk` happyRest}}--happyReduce_407 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_407 = happyReduce 6# 115# happyReduction_407-happyReduction_407 (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 happyOut127 happy_x_5 of { happy_var_5 -> -	happyIn125-		 (LambdaHole "_" (rangedThing happy_var_5)-	) `HappyStk` happyRest}--happyReduce_408 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_408 = happySpecReduce_1  116# happyReduction_408-happyReduction_408 happy_x_1-	 =  case happyOut127 happy_x_1 of { happy_var_1 -> -	happyIn126-		 (ExprHole (rangedThing happy_var_1)-	)}--happyReduce_409 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_409 = happyReduce 4# 116# happyReduction_409-happyReduction_409 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut127 happy_x_2 of { happy_var_2 -> -	case happyOut127 happy_x_4 of { happy_var_4 -> -	happyIn126-		 (LambdaHole (rangedThing happy_var_2) (rangedThing happy_var_4)-	) `HappyStk` happyRest}}--happyReduce_410 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_410 = happyReduce 4# 116# happyReduction_410-happyReduction_410 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut127 happy_x_4 of { happy_var_4 -> -	happyIn126-		 (LambdaHole "_" (rangedThing happy_var_4)-	) `HappyStk` happyRest}--happyReduce_411 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_411 = happySpecReduce_1  117# happyReduction_411-happyReduction_411 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokId happy_var_1) -> -	happyIn127-		 (Ranged (getRange $ fst happy_var_1) (stringToRawName $ snd happy_var_1)-	)}--happyReduce_412 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_412 = happySpecReduce_1  118# happyReduction_412-happyReduction_412 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> -	happyIn128-		 (Just (getRange happy_var_1)-	)}--happyReduce_413 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_413 = happySpecReduce_0  118# happyReduction_413-happyReduction_413  =  happyIn128-		 (Nothing-	)--happyReduce_414 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_414 = happyMonadReduce 5# 119# happyReduction_414-happyReduction_414 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut128 happy_x_1 of { happy_var_1 -> -	case happyOutTok happy_x_2 of { (TokKeyword KwImport happy_var_2) -> -	case happyOut26 happy_x_3 of { happy_var_3 -> -	case happyOut130 happy_x_4 of { happy_var_4 -> -	case happyOut81 happy_x_5 of { happy_var_5 -> -	(-    let-    { doOpen = maybe DontOpen (const DoOpen) happy_var_1-    ; m   = happy_var_3-    ; es  = happy_var_4-    ; dir = happy_var_5-    ; r   = getRange (m, es, dir)-    ; mr  = getRange m-    ; unique = hashString $ show $ (Nothing :: Maybe ()) <$ r-         -- turn range into unique id, but delete file path-         -- which is absolute and messes up suite of failing tests-         -- (different hashs on different installations)-         -- TODO: Don't use (insecure) hashes in this way.-    ; fresh = Name mr [ Id $ stringToRawName $ ".#" ++ show m ++ "-" ++ show unique ]-    ; impStm asR = Import mr m (Just (AsName fresh asR)) DontOpen defaultImportDir-    ; appStm m' es =-        let r = getRange (m, es) in-        Private r Inserted-          [ ModuleMacro r m'-             (SectionApp (getRange es) []-               (RawApp (getRange es) (Ident (QName fresh) : es)))-             doOpen dir-          ]-    ; (initArgs, last2Args) = splitAt (length es - 2) es-    ; parseAsClause = case last2Args of-      { [ Ident (QName (Name asR [Id x]))-        , Ident (QName m')-        ] | rawNameToString x == "as" -> Just (asR, m')-      ; _ -> Nothing-      }-    } in-    case es of-      { [] -> return [Import mr m Nothing doOpen dir]-      ; _ | Just (asR, m') <- parseAsClause ->-              if null initArgs then return-                 [ Import (getRange (m, asR, m', dir)) m-                     (Just (AsName m' asR)) doOpen dir-                 ]-              else return [ impStm asR, appStm m' initArgs ]-          -- Andreas, 2017-05-13, issue #2579-          -- Nisse reports that importing with instantation but without open-          -- could be usefule for bringing instances into scope.-          -- -- | DontOpen <- doOpen -> parseErrorAt (fromJust $ rStart' $ getRange happy_var_2) "An import statement with module instantiation does not actually import the module.  This statement achieves nothing.  Either add the `open' keyword or bind the instantiated module with an `as' clause."-          | otherwise -> return-              [ impStm noRange-              , appStm (noName $ beginningOf $ getRange m) es-              ]-      })}}}}})-	) (\r -> happyReturn (happyIn129 r))--happyReduce_415 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_415 = happyReduce 4# 119# happyReduction_415-happyReduction_415 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut26 happy_x_2 of { happy_var_2 -> -	case happyOut130 happy_x_3 of { happy_var_3 -> -	case happyOut81 happy_x_4 of { happy_var_4 -> -	happyIn129-		 (let-    { m   = happy_var_2-    ; es  = happy_var_3-    ; dir = happy_var_4-    ; r   = getRange (m, es, dir)-    } in-    [ case es of-      { []  -> Open r m dir-      ; _   -> Private r Inserted-                 [ ModuleMacro r (noName $ beginningOf $ getRange m)-                             (SectionApp (getRange (m , es)) [] (RawApp (fuseRange m es) (Ident m : es)))-                             DoOpen dir-                 ]-      }-    ]-	) `HappyStk` happyRest}}}--happyReduce_416 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_416 = happyReduce 6# 119# happyReduction_416-happyReduction_416 (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 happyOut26 happy_x_2 of { happy_var_2 -> -	case happyOut81 happy_x_6 of { happy_var_6 -> -	happyIn129-		 (let r = getRange happy_var_2 in-    [ Private r Inserted-      [ ModuleMacro r (noName $ beginningOf $ getRange happy_var_2) (RecordModuleIFS r happy_var_2) DoOpen happy_var_6-      ]-    ]-	) `HappyStk` happyRest}}--happyReduce_417 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_417 = happySpecReduce_0  120# happyReduction_417-happyReduction_417  =  happyIn130-		 ([]-	)--happyReduce_418 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_418 = happySpecReduce_2  120# happyReduction_418-happyReduction_418 happy_x_2-	happy_x_1-	 =  case happyOut50 happy_x_1 of { happy_var_1 -> -	case happyOut130 happy_x_2 of { happy_var_2 -> -	happyIn130-		 (happy_var_1 : happy_var_2-	)}}--happyReduce_419 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_419 = happyReduce 4# 121# happyReduction_419-happyReduction_419 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOut26 happy_x_1 of { happy_var_1 -> -	case happyOutTok happy_x_2 of { (TokSymbol SymDoubleOpenBrace happy_var_2) -> -	case happyOutTok happy_x_3 of { (TokSymbol SymEllipsis happy_var_3) -> -	case happyOut21 happy_x_4 of { happy_var_4 -> -	happyIn131-		 ((\ts ->-                    if null ts then return $ RecordModuleIFS (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_1-                    else parseError "No bindings allowed for record module with non-canonical implicits" )-	) `HappyStk` happyRest}}}}--happyReduce_420 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_420 = happySpecReduce_2  121# happyReduction_420-happyReduction_420 happy_x_2-	happy_x_1-	 =  case happyOut26 happy_x_1 of { happy_var_1 -> -	case happyOut130 happy_x_2 of { happy_var_2 -> -	happyIn131-		 ((\ts -> return $ SectionApp (getRange (happy_var_1, happy_var_2)) ts (RawApp (fuseRange happy_var_1 happy_var_2) (Ident happy_var_1 : happy_var_2)) )-	)}}--happyReduce_421 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_421 = happyMonadReduce 6# 122# happyReduction_421-happyReduction_421 (happy_x_6 `HappyStk`-	happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> -	case happyOut26 happy_x_2 of { happy_var_2 -> -	case happyOut75 happy_x_3 of { happy_var_3 -> -	case happyOut131 happy_x_5 of { happy_var_5 -> -	case happyOut81 happy_x_6 of { happy_var_6 -> -	( do { ma <- happy_var_5 (map addType happy_var_3)-                          ; name <- ensureUnqual happy_var_2-                          ; return $ ModuleMacro (getRange (happy_var_1, happy_var_2, ma, happy_var_6)) name ma DontOpen happy_var_6 })}}}}})-	) (\r -> happyReturn (happyIn132 r))--happyReduce_422 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_422 = happyMonadReduce 7# 122# happyReduction_422-happyReduction_422 (happy_x_7 `HappyStk`-	happy_x_6 `HappyStk`-	happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwModule happy_var_2) -> -	case happyOut19 happy_x_3 of { happy_var_3 -> -	case happyOut75 happy_x_4 of { happy_var_4 -> -	case happyOut131 happy_x_6 of { happy_var_6 -> -	case happyOut81 happy_x_7 of { happy_var_7 -> -	( do {ma <- happy_var_6 (map addType happy_var_4); return $ ModuleMacro (getRange (happy_var_1, happy_var_2, happy_var_3, ma, happy_var_7)) happy_var_3 ma DoOpen happy_var_7 })}}}}}})-	) (\r -> happyReturn (happyIn132 r))--happyReduce_423 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_423 = happyReduce 5# 123# happyReduction_423-happyReduction_423 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> -	case happyOut26 happy_x_2 of { happy_var_2 -> -	case happyOut75 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> -	case happyOut180 happy_x_5 of { happy_var_5 -> -	happyIn133-		 (Module (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) happy_var_2 (map addType happy_var_3) happy_var_5-	) `HappyStk` happyRest}}}}}--happyReduce_424 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_424 = happyReduce 5# 123# happyReduction_424-happyReduction_424 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> -	case happyOut134 happy_x_2 of { happy_var_2 -> -	case happyOut75 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> -	case happyOut180 happy_x_5 of { happy_var_5 -> -	happyIn133-		 (Module (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) (QName happy_var_2) (map addType happy_var_3) happy_var_5-	) `HappyStk` happyRest}}}}}--happyReduce_425 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_425 = happySpecReduce_1  124# happyReduction_425-happyReduction_425 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> -	happyIn134-		 (noName (getRange happy_var_1)-	)}--happyReduce_426 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_426 = happySpecReduce_1  125# happyReduction_426-happyReduction_426 happy_x_1-	 =  case happyOut182 happy_x_1 of { happy_var_1 -> -	happyIn135-		 (figureOutTopLevelModule happy_var_1-	)}--happyReduce_427 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_427 = happySpecReduce_1  126# happyReduction_427-happyReduction_427 happy_x_1-	 =  case happyOut137 happy_x_1 of { happy_var_1 -> -	happyIn136-		 (Pragma happy_var_1-	)}--happyReduce_428 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_428 = happySpecReduce_1  127# happyReduction_428-happyReduction_428 happy_x_1-	 =  case happyOut139 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_429 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_429 = happySpecReduce_1  127# happyReduction_429-happyReduction_429 happy_x_1-	 =  case happyOut140 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_430 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_430 = happySpecReduce_1  127# happyReduction_430-happyReduction_430 happy_x_1-	 =  case happyOut141 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_431 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_431 = happySpecReduce_1  127# happyReduction_431-happyReduction_431 happy_x_1-	 =  case happyOut142 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_432 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_432 = happySpecReduce_1  127# happyReduction_432-happyReduction_432 happy_x_1-	 =  case happyOut144 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_433 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_433 = happySpecReduce_1  127# happyReduction_433-happyReduction_433 happy_x_1-	 =  case happyOut143 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_434 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_434 = happySpecReduce_1  127# happyReduction_434-happyReduction_434 happy_x_1-	 =  case happyOut145 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_435 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_435 = happySpecReduce_1  127# happyReduction_435-happyReduction_435 happy_x_1-	 =  case happyOut146 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_436 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_436 = happySpecReduce_1  127# happyReduction_436-happyReduction_436 happy_x_1-	 =  case happyOut147 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_437 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_437 = happySpecReduce_1  127# happyReduction_437-happyReduction_437 happy_x_1-	 =  case happyOut148 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_438 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_438 = happySpecReduce_1  127# happyReduction_438-happyReduction_438 happy_x_1-	 =  case happyOut150 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_439 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_439 = happySpecReduce_1  127# happyReduction_439-happyReduction_439 happy_x_1-	 =  case happyOut149 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_440 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_440 = happySpecReduce_1  127# happyReduction_440-happyReduction_440 happy_x_1-	 =  case happyOut151 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_441 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_441 = happySpecReduce_1  127# happyReduction_441-happyReduction_441 happy_x_1-	 =  case happyOut154 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_442 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_442 = happySpecReduce_1  127# happyReduction_442-happyReduction_442 happy_x_1-	 =  case happyOut152 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_443 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_443 = happySpecReduce_1  127# happyReduction_443-happyReduction_443 happy_x_1-	 =  case happyOut153 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_444 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_444 = happySpecReduce_1  127# happyReduction_444-happyReduction_444 happy_x_1-	 =  case happyOut162 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_445 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_445 = happySpecReduce_1  127# happyReduction_445-happyReduction_445 happy_x_1-	 =  case happyOut163 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_446 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_446 = happySpecReduce_1  127# happyReduction_446-happyReduction_446 happy_x_1-	 =  case happyOut164 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_447 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_447 = happySpecReduce_1  127# happyReduction_447-happyReduction_447 happy_x_1-	 =  case happyOut159 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_448 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_448 = happySpecReduce_1  127# happyReduction_448-happyReduction_448 happy_x_1-	 =  case happyOut158 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_449 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_449 = happySpecReduce_1  127# happyReduction_449-happyReduction_449 happy_x_1-	 =  case happyOut157 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_450 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_450 = happySpecReduce_1  127# happyReduction_450-happyReduction_450 happy_x_1-	 =  case happyOut167 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_451 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_451 = happySpecReduce_1  127# happyReduction_451-happyReduction_451 happy_x_1-	 =  case happyOut160 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_452 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_452 = happySpecReduce_1  127# happyReduction_452-happyReduction_452 happy_x_1-	 =  case happyOut161 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_453 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_453 = happySpecReduce_1  127# happyReduction_453-happyReduction_453 happy_x_1-	 =  case happyOut155 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_454 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_454 = happySpecReduce_1  127# happyReduction_454-happyReduction_454 happy_x_1-	 =  case happyOut156 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_455 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_455 = happySpecReduce_1  127# happyReduction_455-happyReduction_455 happy_x_1-	 =  case happyOut165 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_456 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_456 = happySpecReduce_1  127# happyReduction_456-happyReduction_456 happy_x_1-	 =  case happyOut166 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_457 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_457 = happySpecReduce_1  127# happyReduction_457-happyReduction_457 happy_x_1-	 =  case happyOut138 happy_x_1 of { happy_var_1 -> -	happyIn137-		 (happy_var_1-	)}--happyReduce_458 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_458 = happyReduce 4# 128# happyReduction_458-happyReduction_458 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwOPTIONS happy_var_2) -> -	case happyOut32 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> -	happyIn138-		 (OptionsPragma (getRange (happy_var_1,happy_var_2,happy_var_4)) happy_var_3-	) `HappyStk` happyRest}}}}--happyReduce_459 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_459 = happyReduce 5# 129# happyReduction_459-happyReduction_459 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwBUILTIN happy_var_2) -> -	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> -	case happyOut37 happy_x_4 of { happy_var_4 -> -	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> -	happyIn139-		 (BuiltinPragma (getRange (happy_var_1,happy_var_2,fst happy_var_3,happy_var_4,happy_var_5)) (snd happy_var_3) happy_var_4-	) `HappyStk` happyRest}}}}}--happyReduce_460 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_460 = happyReduce 5# 129# happyReduction_460-happyReduction_460 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwBUILTIN happy_var_2) -> -	case happyOutTok happy_x_3 of { (TokKeyword KwREWRITE happy_var_3) -> -	case happyOut37 happy_x_4 of { happy_var_4 -> -	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> -	happyIn139-		 (BuiltinPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) "REWRITE" happy_var_4-	) `HappyStk` happyRest}}}}}--happyReduce_461 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_461 = happyReduce 4# 130# happyReduction_461-happyReduction_461 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwREWRITE happy_var_2) -> -	case happyOut38 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> -	happyIn140-		 (RewritePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3-	) `HappyStk` happyRest}}}}--happyReduce_462 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_462 = happyReduce 5# 131# happyReduction_462-happyReduction_462 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED happy_var_2) -> -	case happyOut37 happy_x_3 of { happy_var_3 -> -	case happyOut32 happy_x_4 of { happy_var_4 -> -	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> -	happyIn141-		 (CompiledPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)-	) `HappyStk` happyRest}}}}}--happyReduce_463 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_463 = happyReduce 5# 132# happyReduction_463-happyReduction_463 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_EXPORT happy_var_2) -> -	case happyOut37 happy_x_3 of { happy_var_3 -> -	case happyOut33 happy_x_4 of { happy_var_4 -> -	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> -	happyIn142-		 (CompiledExportPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 happy_var_4-	) `HappyStk` happyRest}}}}}--happyReduce_464 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_464 = happyReduce 5# 133# happyReduction_464-happyReduction_464 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_TYPE happy_var_2) -> -	case happyOut37 happy_x_3 of { happy_var_3 -> -	case happyOut32 happy_x_4 of { happy_var_4 -> -	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> -	happyIn143-		 (CompiledTypePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)-	) `HappyStk` happyRest}}}}}--happyReduce_465 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_465 = happyReduce 6# 134# happyReduction_465-happyReduction_465 (happy_x_6 `HappyStk`-	happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_DATA happy_var_2) -> -	case happyOut37 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokString happy_var_4) -> -	case happyOut32 happy_x_5 of { happy_var_5 -> -	case happyOutTok happy_x_6 of { (TokSymbol SymClosePragma happy_var_6) -> -	happyIn144-		 (CompiledDataPragma (getRange (happy_var_1,happy_var_2,happy_var_3,fst happy_var_4,happy_var_6)) happy_var_3 (snd happy_var_4) happy_var_5-	) `HappyStk` happyRest}}}}}}--happyReduce_466 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_466 = happyReduce 5# 135# happyReduction_466-happyReduction_466 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_JS happy_var_2) -> -	case happyOut37 happy_x_3 of { happy_var_3 -> -	case happyOut32 happy_x_4 of { happy_var_4 -> -	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> -	happyIn145-		 (CompiledJSPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)-	) `HappyStk` happyRest}}}}}--happyReduce_467 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_467 = happyReduce 5# 136# happyReduction_467-happyReduction_467 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_UHC happy_var_2) -> -	case happyOut37 happy_x_3 of { happy_var_3 -> -	case happyOut32 happy_x_4 of { happy_var_4 -> -	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> -	happyIn146-		 (CompiledUHCPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)-	) `HappyStk` happyRest}}}}}--happyReduce_468 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_468 = happyReduce 6# 137# happyReduction_468-happyReduction_468 (happy_x_6 `HappyStk`-	happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_DATA_UHC happy_var_2) -> -	case happyOut37 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokString happy_var_4) -> -	case happyOut32 happy_x_5 of { happy_var_5 -> -	case happyOutTok happy_x_6 of { (TokSymbol SymClosePragma happy_var_6) -> -	happyIn147-		 (CompiledDataUHCPragma (getRange (happy_var_1,happy_var_2,happy_var_3,fst happy_var_4,happy_var_6)) happy_var_3 (snd happy_var_4) happy_var_5-	) `HappyStk` happyRest}}}}}}--happyReduce_469 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_469 = happyReduce 4# 138# happyReduction_469-happyReduction_469 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwHASKELL happy_var_2) -> -	case happyOut35 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> -	happyIn148-		 (HaskellCodePragma (getRange (happy_var_1, happy_var_2, happy_var_4)) (recoverLayout happy_var_3)-	) `HappyStk` happyRest}}}}--happyReduce_470 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_470 = happyReduce 5# 139# happyReduction_470-happyReduction_470 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwFOREIGN happy_var_2) -> -	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> -	case happyOut35 happy_x_4 of { happy_var_4 -> -	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> -	happyIn149-		 (ForeignPragma (getRange (happy_var_1, happy_var_2, fst happy_var_3, happy_var_5)) (snd happy_var_3) (recoverLayout happy_var_4)-	) `HappyStk` happyRest}}}}}--happyReduce_471 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_471 = happyReduce 6# 140# happyReduction_471-happyReduction_471 (happy_x_6 `HappyStk`-	happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILE happy_var_2) -> -	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> -	case happyOut37 happy_x_4 of { happy_var_4 -> -	case happyOut32 happy_x_5 of { happy_var_5 -> -	case happyOutTok happy_x_6 of { (TokSymbol SymClosePragma happy_var_6) -> -	happyIn150-		 (CompilePragma (getRange (happy_var_1,happy_var_2,fst happy_var_3,happy_var_4,happy_var_6)) (snd happy_var_3) happy_var_4 (unwords happy_var_5)-	) `HappyStk` happyRest}}}}}}--happyReduce_472 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_472 = happyReduce 4# 141# happyReduction_472-happyReduction_472 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwSTATIC happy_var_2) -> -	case happyOut37 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> -	happyIn151-		 (StaticPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3-	) `HappyStk` happyRest}}}}--happyReduce_473 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_473 = happyReduce 4# 142# happyReduction_473-happyReduction_473 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwINLINE happy_var_2) -> -	case happyOut37 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> -	happyIn152-		 (InlinePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) True happy_var_3-	) `HappyStk` happyRest}}}}--happyReduce_474 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_474 = happyReduce 4# 143# happyReduction_474-happyReduction_474 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwNOINLINE happy_var_2) -> -	case happyOut37 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> -	happyIn153-		 (InlinePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) False happy_var_3-	) `HappyStk` happyRest}}}}--happyReduce_475 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_475 = happyReduce 4# 144# happyReduction_475-happyReduction_475 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwINJECTIVE happy_var_2) -> -	case happyOut37 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> -	happyIn154-		 (InjectivePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3-	) `HappyStk` happyRest}}}}--happyReduce_476 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_476 = happyMonadReduce 5# 145# happyReduction_476-happyReduction_476 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> -	case happyOut32 happy_x_4 of { happy_var_4 -> -	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> -	(-      let (r, s) = happy_var_3 in-      parseDisplayPragma (fuseRange happy_var_1 happy_var_5) (iStart r) (unwords (s : happy_var_4)))}}}})-	) (\r -> happyReturn (happyIn155 r))--happyReduce_477 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_477 = happyReduce 4# 146# happyReduction_477-happyReduction_477 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwETA happy_var_2) -> -	case happyOut37 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> -	happyIn156-		 (EtaPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3-	) `HappyStk` happyRest}}}}--happyReduce_478 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_478 = happySpecReduce_3  147# happyReduction_478-happyReduction_478 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwNO_TERMINATION_CHECK happy_var_2) -> -	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> -	happyIn157-		 (TerminationCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3)) NoTerminationCheck-	)}}}--happyReduce_479 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_479 = happySpecReduce_3  148# happyReduction_479-happyReduction_479 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwNON_TERMINATING happy_var_2) -> -	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> -	happyIn158-		 (TerminationCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3)) NonTerminating-	)}}}--happyReduce_480 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_480 = happySpecReduce_3  149# happyReduction_480-happyReduction_480 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwTERMINATING happy_var_2) -> -	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> -	happyIn159-		 (TerminationCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3)) Terminating-	)}}}--happyReduce_481 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_481 = happyReduce 4# 150# happyReduction_481-happyReduction_481 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwMEASURE happy_var_2) -> -	case happyOut36 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> -	happyIn160-		 (let r = getRange (happy_var_1, happy_var_2, happy_var_3, happy_var_4) in-      TerminationCheckPragma r (TerminationMeasure r happy_var_3)-	) `HappyStk` happyRest}}}}--happyReduce_482 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_482 = happySpecReduce_3  151# happyReduction_482-happyReduction_482 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwCATCHALL happy_var_2) -> -	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> -	happyIn161-		 (CatchallPragma (getRange (happy_var_1,happy_var_2,happy_var_3))-	)}}}--happyReduce_483 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_483 = happyMonadReduce 4# 152# happyReduction_483-happyReduction_483 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwIMPORT happy_var_2) -> -	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> -	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> -	( let s = snd happy_var_3 in-       if validHaskellModuleName s-       then return $ ImportPragma (getRange (happy_var_1,happy_var_2,fst happy_var_3,happy_var_4)) s-       else parseError $ "Malformed module name: " ++ s ++ ".")}}}})-	) (\r -> happyReturn (happyIn162 r))--happyReduce_484 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_484 = happyMonadReduce 4# 153# happyReduction_484-happyReduction_484 (happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwIMPORT_UHC happy_var_2) -> -	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> -	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> -	( let s = snd happy_var_3 in-       if validHaskellModuleName s-       then return $ ImportUHCPragma (getRange (happy_var_1,happy_var_2,fst happy_var_3,happy_var_4)) s-       else parseError $ "Malformed module name: " ++ s ++ ".")}}}})-	) (\r -> happyReturn (happyIn163 r))--happyReduce_485 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_485 = happySpecReduce_3  154# happyReduction_485-happyReduction_485 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwIMPOSSIBLE happy_var_2) -> -	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> -	happyIn164-		 (ImpossiblePragma (getRange (happy_var_1,happy_var_2,happy_var_3))-	)}}}--happyReduce_486 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_486 = happySpecReduce_3  155# happyReduction_486-happyReduction_486 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwNO_POSITIVITY_CHECK happy_var_2) -> -	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> -	happyIn165-		 (NoPositivityCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3))-	)}}}--happyReduce_487 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_487 = happyReduce 5# 156# happyReduction_487-happyReduction_487 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest)-	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwPOLARITY happy_var_2) -> -	case happyOut36 happy_x_3 of { happy_var_3 -> -	case happyOut168 happy_x_4 of { happy_var_4 -> -	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> -	happyIn166-		 (let (rs, occs) = unzip (reverse happy_var_4) in-      PolarityPragma (getRange (happy_var_1,happy_var_2,happy_var_3,rs,happy_var_5)) happy_var_3 occs-	) `HappyStk` happyRest}}}}}--happyReduce_488 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_488 = happyMonadReduce 5# 157# happyReduction_488-happyReduction_488 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> -	case happyOutTok happy_x_2 of { (TokKeyword KwWARNING_ON_USAGE happy_var_2) -> -	case happyOut37 happy_x_3 of { happy_var_3 -> -	case happyOutTok happy_x_4 of { (TokLiteral happy_var_4) -> -	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> -	(  case happy_var_4 of-        { LitString r str -> return $ WarningOnUsage (getRange (happy_var_1,happy_var_2,happy_var_3,r,happy_var_5)) happy_var_3 str-        ; _ -> parseError "Expected string literal"-        })}}}}})-	) (\r -> happyReturn (happyIn167 r))--happyReduce_489 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_489 = happySpecReduce_0  158# happyReduction_489-happyReduction_489  =  happyIn168-		 ([]-	)--happyReduce_490 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_490 = happySpecReduce_2  158# happyReduction_490-happyReduction_490 happy_x_2-	happy_x_1-	 =  case happyOut168 happy_x_1 of { happy_var_1 -> -	case happyOut169 happy_x_2 of { happy_var_2 -> -	happyIn168-		 (happy_var_2 : happy_var_1-	)}}--happyReduce_491 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_491 = happyMonadReduce 1# 159# happyReduction_491-happyReduction_491 (happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOutTok happy_x_1 of { (TokString happy_var_1) -> -	( polarity happy_var_1)})-	) (\r -> happyReturn (happyIn169 r))--happyReduce_492 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_492 = happySpecReduce_3  160# happyReduction_492-happyReduction_492 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut171 happy_x_2 of { happy_var_2 -> -	happyIn170-		 (reverse happy_var_2-	)}--happyReduce_493 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_493 = happySpecReduce_3  161# happyReduction_493-happyReduction_493 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut171 happy_x_1 of { happy_var_1 -> -	case happyOut100 happy_x_3 of { happy_var_3 -> -	happyIn171-		 (reverse happy_var_3 ++ happy_var_1-	)}}--happyReduce_494 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_494 = happySpecReduce_1  161# happyReduction_494-happyReduction_494 happy_x_1-	 =  case happyOut100 happy_x_1 of { happy_var_1 -> -	happyIn171-		 (reverse happy_var_1-	)}--happyReduce_495 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_495 = happySpecReduce_3  162# happyReduction_495-happyReduction_495 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut173 happy_x_2 of { happy_var_2 -> -	happyIn172-		 (reverse happy_var_2-	)}--happyReduce_496 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_496 = happySpecReduce_3  163# happyReduction_496-happyReduction_496 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut173 happy_x_1 of { happy_var_1 -> -	case happyOut101 happy_x_3 of { happy_var_3 -> -	happyIn173-		 (reverse happy_var_3 ++ happy_var_1-	)}}--happyReduce_497 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_497 = happySpecReduce_1  163# happyReduction_497-happyReduction_497 happy_x_1-	 =  case happyOut101 happy_x_1 of { happy_var_1 -> -	happyIn173-		 (reverse happy_var_1-	)}--happyReduce_498 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_498 = happyMonadReduce 3# 164# happyReduction_498-happyReduction_498 (happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut175 happy_x_2 of { happy_var_2 -> -	( ((,) `fmap` verifyRecordDirectives happy_var_2 <*> pure []))})-	) (\r -> happyReturn (happyIn174 r))--happyReduce_499 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_499 = happyMonadReduce 5# 164# happyReduction_499-happyReduction_499 (happy_x_5 `HappyStk`-	happy_x_4 `HappyStk`-	happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut175 happy_x_2 of { happy_var_2 -> -	case happyOut181 happy_x_4 of { happy_var_4 -> -	( ((,) `fmap` verifyRecordDirectives happy_var_2 <*> pure happy_var_4))}})-	) (\r -> happyReturn (happyIn174 r))--happyReduce_500 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_500 = happyMonadReduce 3# 164# happyReduction_500-happyReduction_500 (happy_x_3 `HappyStk`-	happy_x_2 `HappyStk`-	happy_x_1 `HappyStk`-	happyRest) tk-	 = happyThen ((case happyOut181 happy_x_2 of { happy_var_2 -> -	( ((,) `fmap` verifyRecordDirectives [] <*> pure happy_var_2))})-	) (\r -> happyReturn (happyIn174 r))--happyReduce_501 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_501 = happySpecReduce_0  165# happyReduction_501-happyReduction_501  =  happyIn175-		 ([]-	)--happyReduce_502 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_502 = happySpecReduce_3  165# happyReduction_502-happyReduction_502 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut175 happy_x_1 of { happy_var_1 -> -	case happyOut176 happy_x_3 of { happy_var_3 -> -	happyIn175-		 (happy_var_3 : happy_var_1-	)}}--happyReduce_503 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_503 = happySpecReduce_1  165# happyReduction_503-happyReduction_503 happy_x_1-	 =  case happyOut176 happy_x_1 of { happy_var_1 -> -	happyIn175-		 ([happy_var_1]-	)}--happyReduce_504 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_504 = happySpecReduce_1  166# happyReduction_504-happyReduction_504 happy_x_1-	 =  case happyOut108 happy_x_1 of { happy_var_1 -> -	happyIn176-		 (Constructor happy_var_1-	)}--happyReduce_505 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_505 = happySpecReduce_1  166# happyReduction_505-happyReduction_505 happy_x_1-	 =  case happyOut178 happy_x_1 of { happy_var_1 -> -	happyIn176-		 (Induction happy_var_1-	)}--happyReduce_506 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_506 = happySpecReduce_1  166# happyReduction_506-happyReduction_506 happy_x_1-	 =  case happyOut177 happy_x_1 of { happy_var_1 -> -	happyIn176-		 (Eta happy_var_1-	)}--happyReduce_507 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_507 = happySpecReduce_1  167# happyReduction_507-happyReduction_507 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwEta happy_var_1) -> -	happyIn177-		 (Ranged (getRange happy_var_1) YesEta-	)}--happyReduce_508 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_508 = happySpecReduce_1  167# happyReduction_508-happyReduction_508 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNoEta happy_var_1) -> -	happyIn177-		 (Ranged (getRange happy_var_1) NoEta-	)}--happyReduce_509 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_509 = happySpecReduce_1  168# happyReduction_509-happyReduction_509 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInductive happy_var_1) -> -	happyIn178-		 (Ranged (getRange happy_var_1) Inductive-	)}--happyReduce_510 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_510 = happySpecReduce_1  168# happyReduction_510-happyReduction_510 happy_x_1-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCoInductive happy_var_1) -> -	happyIn178-		 (Ranged (getRange happy_var_1) CoInductive-	)}--happyReduce_511 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_511 = happySpecReduce_3  169# happyReduction_511-happyReduction_511 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut181 happy_x_2 of { happy_var_2 -> -	happyIn179-		 (happy_var_2-	)}--happyReduce_512 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_512 = happySpecReduce_2  170# happyReduction_512-happyReduction_512 happy_x_2-	happy_x_1-	 =  happyIn180-		 ([]-	)--happyReduce_513 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_513 = happySpecReduce_1  170# happyReduction_513-happyReduction_513 happy_x_1-	 =  case happyOut179 happy_x_1 of { happy_var_1 -> -	happyIn180-		 (happy_var_1-	)}--happyReduce_514 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_514 = happySpecReduce_3  171# happyReduction_514-happyReduction_514 happy_x_3-	happy_x_2-	happy_x_1-	 =  case happyOut99 happy_x_1 of { happy_var_1 -> -	case happyOut181 happy_x_3 of { happy_var_3 -> -	happyIn181-		 (happy_var_1 ++ happy_var_3-	)}}--happyReduce_515 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_515 = happySpecReduce_2  171# happyReduction_515-happyReduction_515 happy_x_2-	happy_x_1-	 =  case happyOut99 happy_x_1 of { happy_var_1 -> -	happyIn181-		 (happy_var_1-	)}--happyReduce_516 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_516 = happySpecReduce_1  171# happyReduction_516-happyReduction_516 happy_x_1-	 =  case happyOut99 happy_x_1 of { happy_var_1 -> -	happyIn181-		 (happy_var_1-	)}--happyReduce_517 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_517 = happySpecReduce_0  172# happyReduction_517-happyReduction_517  =  happyIn182-		 ([]-	)--happyReduce_518 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )-happyReduce_518 = happySpecReduce_1  172# happyReduction_518-happyReduction_518 happy_x_1-	 =  case happyOut181 happy_x_1 of { happy_var_1 -> -	happyIn182-		 (happy_var_1-	)}--happyNewToken action sts stk-	= lexer(\tk -> -	let cont i = happyDoAction i tk action sts stk in-	case tk of {-	TokEOF -> happyDoAction 110# tk action sts stk;-	TokKeyword KwAbstract happy_dollar_dollar -> cont 1#;-	TokKeyword KwCoData happy_dollar_dollar -> cont 2#;-	TokKeyword KwCoInductive happy_dollar_dollar -> cont 3#;-	TokKeyword KwConstructor happy_dollar_dollar -> cont 4#;-	TokKeyword KwData happy_dollar_dollar -> cont 5#;-	TokKeyword KwEta happy_dollar_dollar -> cont 6#;-	TokKeyword KwField happy_dollar_dollar -> cont 7#;-	TokKeyword KwForall happy_dollar_dollar -> cont 8#;-	TokKeyword KwHiding happy_dollar_dollar -> cont 9#;-	TokKeyword KwImport happy_dollar_dollar -> cont 10#;-	TokKeyword KwIn happy_dollar_dollar -> cont 11#;-	TokKeyword KwInductive happy_dollar_dollar -> cont 12#;-	TokKeyword KwInfix happy_dollar_dollar -> cont 13#;-	TokKeyword KwInfixL happy_dollar_dollar -> cont 14#;-	TokKeyword KwInfixR happy_dollar_dollar -> cont 15#;-	TokKeyword KwInstance happy_dollar_dollar -> cont 16#;-	TokKeyword KwOverlap happy_dollar_dollar -> cont 17#;-	TokKeyword KwLet happy_dollar_dollar -> cont 18#;-	TokKeyword KwMacro happy_dollar_dollar -> cont 19#;-	TokKeyword KwModule happy_dollar_dollar -> cont 20#;-	TokKeyword KwMutual happy_dollar_dollar -> cont 21#;-	TokKeyword KwNoEta happy_dollar_dollar -> cont 22#;-	TokKeyword KwOpen happy_dollar_dollar -> cont 23#;-	TokKeyword KwPatternSyn happy_dollar_dollar -> cont 24#;-	TokKeyword KwPostulate happy_dollar_dollar -> cont 25#;-	TokKeyword KwPrimitive happy_dollar_dollar -> cont 26#;-	TokKeyword KwPrivate happy_dollar_dollar -> cont 27#;-	TokKeyword KwProp happy_dollar_dollar -> cont 28#;-	TokKeyword KwPublic happy_dollar_dollar -> cont 29#;-	TokKeyword KwQuote happy_dollar_dollar -> cont 30#;-	TokKeyword KwQuoteContext happy_dollar_dollar -> cont 31#;-	TokKeyword KwQuoteGoal happy_dollar_dollar -> cont 32#;-	TokKeyword KwQuoteTerm happy_dollar_dollar -> cont 33#;-	TokKeyword KwRecord happy_dollar_dollar -> cont 34#;-	TokKeyword KwRenaming happy_dollar_dollar -> cont 35#;-	TokKeyword KwRewrite happy_dollar_dollar -> cont 36#;-	TokKeyword KwSet happy_dollar_dollar -> cont 37#;-	TokKeyword KwSyntax happy_dollar_dollar -> cont 38#;-	TokKeyword KwTactic happy_dollar_dollar -> cont 39#;-	TokKeyword KwTo happy_dollar_dollar -> cont 40#;-	TokKeyword KwUnquote happy_dollar_dollar -> cont 41#;-	TokKeyword KwUnquoteDecl happy_dollar_dollar -> cont 42#;-	TokKeyword KwUnquoteDef happy_dollar_dollar -> cont 43#;-	TokKeyword KwUsing happy_dollar_dollar -> cont 44#;-	TokKeyword KwWhere happy_dollar_dollar -> cont 45#;-	TokKeyword KwDo happy_dollar_dollar -> cont 46#;-	TokKeyword KwWith happy_dollar_dollar -> cont 47#;-	TokKeyword KwBUILTIN happy_dollar_dollar -> cont 48#;-	TokKeyword KwCATCHALL happy_dollar_dollar -> cont 49#;-	TokKeyword KwCOMPILED happy_dollar_dollar -> cont 50#;-	TokKeyword KwCOMPILED_DATA happy_dollar_dollar -> cont 51#;-	TokKeyword KwCOMPILED_DATA_UHC happy_dollar_dollar -> cont 52#;-	TokKeyword KwCOMPILED_EXPORT happy_dollar_dollar -> cont 53#;-	TokKeyword KwCOMPILED_JS happy_dollar_dollar -> cont 54#;-	TokKeyword KwCOMPILED_TYPE happy_dollar_dollar -> cont 55#;-	TokKeyword KwCOMPILED_UHC happy_dollar_dollar -> cont 56#;-	TokKeyword KwDISPLAY happy_dollar_dollar -> cont 57#;-	TokKeyword KwETA happy_dollar_dollar -> cont 58#;-	TokKeyword KwHASKELL happy_dollar_dollar -> cont 59#;-	TokKeyword KwIMPORT happy_dollar_dollar -> cont 60#;-	TokKeyword KwIMPORT_UHC happy_dollar_dollar -> cont 61#;-	TokKeyword KwFOREIGN happy_dollar_dollar -> cont 62#;-	TokKeyword KwCOMPILE happy_dollar_dollar -> cont 63#;-	TokKeyword KwIMPOSSIBLE happy_dollar_dollar -> cont 64#;-	TokKeyword KwINJECTIVE happy_dollar_dollar -> cont 65#;-	TokKeyword KwINLINE happy_dollar_dollar -> cont 66#;-	TokKeyword KwNOINLINE happy_dollar_dollar -> cont 67#;-	TokKeyword KwMEASURE happy_dollar_dollar -> cont 68#;-	TokKeyword KwNO_TERMINATION_CHECK happy_dollar_dollar -> cont 69#;-	TokKeyword KwNO_POSITIVITY_CHECK happy_dollar_dollar -> cont 70#;-	TokKeyword KwNON_TERMINATING happy_dollar_dollar -> cont 71#;-	TokKeyword KwOPTIONS happy_dollar_dollar -> cont 72#;-	TokKeyword KwPOLARITY happy_dollar_dollar -> cont 73#;-	TokKeyword KwWARNING_ON_USAGE happy_dollar_dollar -> cont 74#;-	TokKeyword KwREWRITE happy_dollar_dollar -> cont 75#;-	TokKeyword KwSTATIC happy_dollar_dollar -> cont 76#;-	TokKeyword KwTERMINATING happy_dollar_dollar -> cont 77#;-	TokSetN happy_dollar_dollar -> cont 78#;-	TokTeX happy_dollar_dollar -> cont 79#;-	TokComment happy_dollar_dollar -> cont 80#;-	TokSymbol SymEllipsis happy_dollar_dollar -> cont 81#;-	TokSymbol SymDotDot happy_dollar_dollar -> cont 82#;-	TokSymbol SymDot happy_dollar_dollar -> cont 83#;-	TokSymbol SymSemi happy_dollar_dollar -> cont 84#;-	TokSymbol SymColon happy_dollar_dollar -> cont 85#;-	TokSymbol SymEqual happy_dollar_dollar -> cont 86#;-	TokSymbol SymUnderscore happy_dollar_dollar -> cont 87#;-	TokSymbol SymQuestionMark happy_dollar_dollar -> cont 88#;-	TokSymbol SymArrow happy_dollar_dollar -> cont 89#;-	TokSymbol SymLambda happy_dollar_dollar -> cont 90#;-	TokSymbol SymAs happy_dollar_dollar -> cont 91#;-	TokSymbol SymBar happy_dollar_dollar -> cont 92#;-	TokSymbol SymOpenParen happy_dollar_dollar -> cont 93#;-	TokSymbol SymCloseParen happy_dollar_dollar -> cont 94#;-	TokSymbol SymOpenIdiomBracket happy_dollar_dollar -> cont 95#;-	TokSymbol SymCloseIdiomBracket happy_dollar_dollar -> cont 96#;-	TokSymbol SymDoubleOpenBrace happy_dollar_dollar -> cont 97#;-	TokSymbol SymDoubleCloseBrace happy_dollar_dollar -> cont 98#;-	TokSymbol SymOpenBrace happy_dollar_dollar -> cont 99#;-	TokSymbol SymCloseBrace happy_dollar_dollar -> cont 100#;-	TokSymbol SymOpenVirtualBrace happy_dollar_dollar -> cont 101#;-	TokSymbol SymCloseVirtualBrace happy_dollar_dollar -> cont 102#;-	TokSymbol SymVirtualSemi happy_dollar_dollar -> cont 103#;-	TokSymbol SymOpenPragma happy_dollar_dollar -> cont 104#;-	TokSymbol SymClosePragma happy_dollar_dollar -> cont 105#;-	TokId happy_dollar_dollar -> cont 106#;-	TokQId happy_dollar_dollar -> cont 107#;-	TokString happy_dollar_dollar -> cont 108#;-	TokLiteral happy_dollar_dollar -> cont 109#;-	_ -> happyError' (tk, [])-	})--happyError_ explist 110# tk = happyError' (tk, explist)-happyError_ explist _ tk = happyError' (tk, explist)--happyThen :: () => Parser a -> (a -> Parser b) -> Parser b-happyThen = (>>=)-happyReturn :: () => a -> Parser a-happyReturn = (return)-happyParse :: () => Happy_GHC_Exts.Int# -> Parser (HappyAbsSyn )--happyNewToken :: () => Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )--happyDoAction :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )--happyReduceArr :: () => Happy_Data_Array.Array Int (Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn ))--happyThen1 :: () => Parser a -> (a -> Parser b) -> Parser b-happyThen1 = happyThen-happyReturn1 :: () => a -> Parser a-happyReturn1 = happyReturn-happyError' :: () => ((Token), [String]) -> Parser a-happyError' tk = (\(tokens, explist) -> happyError) tk-tokensParser = happySomeParser where- happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut10 x))--exprParser = happySomeParser where- happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut39 x))--exprWhereParser = happySomeParser where- happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut98 x))--moduleParser = happySomeParser where- happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut13 x))--moduleNameParser = happySomeParser where- happySomeParser = happyThen (happyParse 4#) (\x -> happyReturn (happyOut26 x))--funclauseParser = happySomeParser where- happySomeParser = happyThen (happyParse 5#) (\x -> happyReturn (happyOut102 x))--holeContentParser = happySomeParser where- happySomeParser = happyThen (happyParse 6#) (\x -> happyReturn (happyOut96 x))--happySeq = happyDontSeq---{---------------------------------------------------------------------------    Parsers- --------------------------------------------------------------------------}---- | Parse the token stream. Used by the TeX compiler.-tokensParser :: Parser [Token]---- | Parse an expression. Could be used in interactions.-exprParser :: Parser Expr---- | Parse an expression followed by a where clause. Could be used in interactions.-exprWhereParser :: Parser ExprWhere---- | Parse a module.-moduleParser :: Parser Module---{---------------------------------------------------------------------------    Happy stuff- --------------------------------------------------------------------------}---- | Required by Happy.-happyError :: Parser a-happyError = parseError "Parse error"---{---------------------------------------------------------------------------    Utility functions- --------------------------------------------------------------------------}---- | Grab leading OPTIONS pragmas.-takeOptionsPragmas :: [Declaration] -> ([Pragma], [Declaration])-takeOptionsPragmas = spanJust $ \ d -> case d of-  Pragma p@OptionsPragma{} -> Just p-  _                        -> Nothing---- | Insert a top-level module if there is none.---   Also fix-up for the case the declarations in the top-level module---   are not indented (this is allowed as a special case).-figureOutTopLevelModule :: [Declaration] -> [Declaration]-figureOutTopLevelModule ds =-  case spanAllowedBeforeModule ds of-    -- Andreas 2016-02-01, issue #1388.-    -- We need to distinguish two additional cases.--    -- Case 1: Regular file layout: imports followed by one module. Nothing to do.-    (ds0, [ Module{} ]) -> ds--    -- Case 2: The declarations in the module are not indented.-    -- This is allowed for the top level module, and thus rectified here.-    (ds0, Module r m tel [] : ds2) -> ds0 ++ [Module r m tel ds2]--    -- Case 3: There is a module with indented declarations,-    -- followed by non-indented declarations.  This should be a-    -- parse error and be reported later (see @toAbstract TopLevel{}@),-    -- thus, we do not do anything here.-    (ds0, Module r m tel ds1 : ds2) -> ds  -- Gives parse error in scope checker.-    -- OLD code causing issue 1388:-    -- (ds0, Module r m tel ds1 : ds2) -> ds0 ++ [Module r m tel $ ds1 ++ ds2]--    -- Case 4: a top-level module declaration is missing.-    -- Andreas, 2017-01-01, issue #2229:-    -- Put everything (except OPTIONS pragmas) into an anonymous module.-    _ -> ds0 ++ [Module r (QName $ noName r) [] ds1]-      where-      (ds0, ds1) = (`span` ds) $ \case-        Pragma OptionsPragma{} -> True-        _ -> False-      -- Andreas, 2017-05-17, issue #2574.-      -- Since the module noName will act as jump target, it needs a range.-      -- We use the beginning of the file as beginning of the top level module.-      r = beginningOfFile $ getRange ds1---- | Create a name from a string.--mkName :: (Interval, String) -> Parser Name-mkName (i, s) = do-    let xs = C.stringNameParts s-    mapM_ isValidId xs-    unless (alternating xs) $ fail $ "a name cannot contain two consecutive underscores"-    return $ Name (getRange i) xs-    where-        isValidId Hole   = return ()-        isValidId (Id y) = do-          let x = rawNameToString y-              err = "in the name " ++ s ++ ", the part " ++ x ++ " is not valid"-          case parse defaultParseFlags [0] (lexer return) x of-            ParseOk _ TokId{}  -> return ()-            ParseFailed{}      -> fail err-            ParseOk _ TokEOF{} -> fail err-            ParseOk _ t   -> fail . ((err ++ " because it is ") ++) $ case t of-              TokId{}       -> __IMPOSSIBLE__-              TokQId{}      -> __IMPOSSIBLE__ -- "qualified"-              TokKeyword{}  -> "a keyword"-              TokLiteral{}  -> "a literal"-              TokSymbol s _ -> case s of-                SymDot               -> __IMPOSSIBLE__ -- "reserved"-                SymSemi              -> "used to separate declarations"-                SymVirtualSemi       -> __IMPOSSIBLE__-                SymBar               -> "used for with-arguments"-                SymColon             -> "part of declaration syntax"-                SymArrow             -> "the function arrow"-                SymEqual             -> "part of declaration syntax"-                SymLambda            -> "used for lambda-abstraction"-                SymUnderscore        -> "used for anonymous identifiers"-                SymQuestionMark      -> "a meta variable"-                SymAs                -> "used for as-patterns"-                SymOpenParen         -> "used to parenthesize expressions"-                SymCloseParen        -> "used to parenthesize expressions"-                SymOpenIdiomBracket  -> "an idiom bracket"-                SymCloseIdiomBracket -> "an idiom bracket"-                SymDoubleOpenBrace   -> "used for instance arguments"-                SymDoubleCloseBrace  -> "used for instance arguments"-                SymOpenBrace         -> "used for hidden arguments"-                SymCloseBrace        -> "used for hidden arguments"-                SymOpenVirtualBrace  -> __IMPOSSIBLE__-                SymCloseVirtualBrace -> __IMPOSSIBLE__-                SymOpenPragma        -> __IMPOSSIBLE__ -- "used for pragmas"-                SymClosePragma       -> __IMPOSSIBLE__ -- "used for pragmas"-                SymEllipsis          -> __IMPOSSIBLE__ -- "used for function clauses"-                SymDotDot            -> __IMPOSSIBLE__ -- "a modality"-                SymEndComment        -> "the end-of-comment brace"-              TokString{}   -> __IMPOSSIBLE__-              TokSetN{}     -> "a type universe"-              TokTeX{}      -> __IMPOSSIBLE__  -- used by the LaTeX backend only-              TokComment{}  -> __IMPOSSIBLE__-              TokDummy{}    -> __IMPOSSIBLE__-              TokEOF{}      -> __IMPOSSIBLE__--        -- we know that there are no two Ids in a row-        alternating (Hole : Hole : _) = False-        alternating (_ : xs)          = alternating xs-        alternating []                = True---- | Create a qualified name from a list of strings-mkQName :: [(Interval, String)] -> Parser QName-mkQName ss = do-    xs <- mapM mkName ss-    return $ foldr Qual (QName $ last xs) (init xs)---- | Create a qualified name from a string (used in pragmas).---   Range of each name component is range of whole string.---   TODO: precise ranges!--pragmaQName :: (Interval, String) -> Parser QName-pragmaQName (r, s) = do-  let ss = chopWhen (== '.') s-  mkQName $ map (r,) ss---- | Polarity parser.--polarity :: (Interval, String) -> Parser (Range, Occurrence)-polarity (i, s) =-  case s of-    "_"  -> ret Unused-    "++" -> ret StrictPos-    "+"  -> ret JustPos-    "-"  -> ret JustNeg-    "*"  -> ret Mixed-    _    -> fail $ "Not a valid polarity: " ++ s-  where-  ret x = return (getRange i, x)--recoverLayout :: [(Interval, String)] -> String-recoverLayout [] = ""-recoverLayout xs@((i, _) : _) = go (iStart i) xs-  where-    c0 = posCol (iStart i)--    go cur [] = ""-    go cur ((i, s) : xs) = padding cur (iStart i) ++ s ++ go (iEnd i) xs--    padding Pn{ posLine = l1, posCol = c1 } Pn{ posLine = l2, posCol = c2 }-      | l1 < l2  = genericReplicate (l2 - l1) '\n' ++ genericReplicate (max 0 (c2 - c0)) ' '-      | l1 == l2 = genericReplicate (c2 - c1) ' '--ensureUnqual :: QName -> Parser Name-ensureUnqual (QName x) = return x-ensureUnqual q@Qual{}  = parseError' (rStart' $ getRange q) "Qualified name not allowed here"---- | Match a particular name.-isName :: String -> (Interval, String) -> Parser ()-isName s (_,s')-    | s == s'   = return ()-    | otherwise = fail $ "expected " ++ s ++ ", found " ++ s'---- | Build a forall pi (forall x y z -> ...)-forallPi :: [LamBinding] -> Expr -> Expr-forallPi bs e = Pi (map addType bs) e---- | Build a telescoping let (let Ds)-tLet :: Range -> [Declaration] -> TypedBindings-tLet r = TypedBindings r . Arg defaultArgInfo . TLet r---- | Converts lambda bindings to typed bindings.-addType :: LamBinding -> TypedBindings-addType (DomainFull b)   = b-addType (DomainFree info x) = TypedBindings r $ Arg info $ TBind r [pure x] $ Underscore r Nothing-  where r = getRange x---- | Build a do-statement-buildDoStmt :: Expr -> [LamClause] -> Parser DoStmt-buildDoStmt (RawApp r [e]) cs = buildDoStmt e cs-buildDoStmt (Let r ds Nothing) [] = return $ DoLet r ds-buildDoStmt (RawApp r es) cs-  | (es1, arr : es2) <- break isLeftArrow es =-    case filter isLeftArrow es2 of-      arr : _ -> parseError' (rStart' $ getRange arr) $ "Unexpected " ++ prettyShow arr-      [] -> DoBind (getRange arr)-              <$> exprToPattern (RawApp (getRange es1) es1)-              <*> pure (RawApp (getRange es2) es2)-              <*> pure cs-  where-    isLeftArrow (Ident (QName (Name _ [Id arr]))) = elem arr ["<-", "←"]-    isLeftArrow _ = False-buildDoStmt e (_ : _) = parseError' (rStart' $ getRange e) "Only pattern matching do-statements can have where clauses."-buildDoStmt e [] = return $ DoThen e--mergeImportDirectives :: [ImportDirective] -> Parser ImportDirective-mergeImportDirectives is = do-  i <- foldl merge (return defaultImportDir) is-  verifyImportDirective i-  where-    merge mi i2 = do-      i1 <- mi-      let err = parseError' (rStart' $ getRange i2) "Cannot mix using and hiding module directives"-      return $ ImportDirective-        { importDirRange = fuseRange i1 i2-        , using          = mappend (using i1) (using i2)-        , hiding         = hiding i1 ++ hiding i2-        , impRenaming    = impRenaming i1 ++ impRenaming i2-        , publicOpen     = publicOpen i1 || publicOpen i2 }---- | Check that an import directive doesn't contain repeated names-verifyImportDirective :: ImportDirective -> Parser ImportDirective-verifyImportDirective i =-    case filter ((>1) . length)-         $ group-         $ sort xs-    of-        []  -> return i-        yss -> let Just pos = rStart' $ getRange $ head $ concat yss in-               parseErrorAt pos $-                "Repeated name" ++ s ++ " in import directive: " ++-                concat (intersperse ", " $ map (show . head) yss)-            where-                s = case yss of-                        [_] -> ""-                        _   -> "s"-    where-        xs = names (using i) ++ hiding i ++ map renFrom (impRenaming i)-        names (Using xs)    = xs-        names UseEverything = []--data RecordDirective-   = Induction (Ranged Induction)-   | Constructor (Name, IsInstance)-   | Eta         (Ranged HasEta)-   deriving (Eq,Show)--verifyRecordDirectives :: [RecordDirective] -> Parser (Maybe (Ranged Induction), Maybe HasEta, Maybe (Name, IsInstance))-verifyRecordDirectives xs | null rs = return (ltm is, ltm es, ltm cs)-                          | otherwise = let Just pos = rStart' $ (head rs) in-                                          parseErrorAt pos $ "Repeated record directives at: \n" ++ intercalate "\n" (map show rs)-- where-  ltm :: [a] -> Maybe a-  ltm [] = Nothing-  ltm (x:xs) = Just x-  errorFromList [] = []-  errorFromList [x] = []-  errorFromList xs = map getRange xs-  rs = sort (concat ([errorFromList is, errorFromList es', errorFromList cs]))-  is = [ i | Induction i <- xs ]-  es' = [ i | Eta i <- xs ]-  es = map rangedThing es'-  cs = [ i | Constructor i <- xs ]----- | Breaks up a string into substrings. Returns every maximal--- subsequence of zero or more characters distinct from @'.'@.------ > splitOnDots ""         == [""]--- > splitOnDots "foo.bar"  == ["foo", "bar"]--- > splitOnDots ".foo.bar" == ["", "foo", "bar"]--- > splitOnDots "foo.bar." == ["foo", "bar", ""]--- > splitOnDots "foo..bar" == ["foo", "", "bar"]-splitOnDots :: String -> [String]-splitOnDots ""        = [""]-splitOnDots ('.' : s) = [] : splitOnDots s-splitOnDots (c   : s) = case splitOnDots s of-  p : ps -> (c : p) : ps----- | Returns 'True' iff the name is a valid Haskell (hierarchical)--- module name.-validHaskellModuleName :: String -> Bool-validHaskellModuleName = all ok . splitOnDots-  where-  -- Checks if a dot-less module name is well-formed.-  ok :: String -> Bool-  ok []      = False-  ok (c : s) =-    isUpper c &&-    all (\c -> isLower c || c == '_' ||-               isUpper c ||-               generalCategory c == DecimalNumber ||-               c == '\'')-        s--{---------------------------------------------------------------------------    Patterns- --------------------------------------------------------------------------}---- | Turn an expression into a left hand side.-exprToLHS :: Expr -> Parser ([Expr] -> [Expr] -> LHS)-exprToLHS e = LHS <$> exprToPattern e---- | Turn an expression into a pattern. Fails if the expression is not a---   valid pattern.-exprToPattern :: Expr -> Parser Pattern-exprToPattern e = do-    let Just pos = rStart' $ getRange e-        failure = parseErrorAt pos $ "Not a valid pattern: " ++ show e-    case e of-        Ident x                 -> return $ IdentP x-        App _ e1 e2             -> AppP <$> exprToPattern e1-                                        <*> T.mapM (T.mapM exprToPattern) e2-        Paren r e               -> ParenP r-                                        <$> exprToPattern e-        Underscore r _          -> return $ WildP r-        Absurd r                -> return $ AbsurdP r-        As r x e                -> AsP r x <$> exprToPattern e-        Dot r (HiddenArg _ e)   -> return $ HiddenP r $ fmap (DotP r) e-        Dot r e                 -> return $ DotP r e-        Lit l                   -> return $ LitP l-        HiddenArg r e           -> HiddenP r <$> T.mapM exprToPattern e-        InstanceArg r e         -> InstanceP r <$> T.mapM exprToPattern e-        RawApp r es             -> RawAppP r <$> mapM exprToPattern es-        Quote r                 -> return $ QuoteP r-        Rec r es | Just fs <- mapM maybeLeft es -> do-          RecP r <$> T.mapM (T.mapM exprToPattern) fs-        Ellipsis r              -> return $ EllipsisP r-        -- WithApp has already lost the range information of the bars '|'-        WithApp r e es          -> do-          p  <- exprToPattern e-          ps <- forM es $ \ e -> defaultNamedArg . WithP (getRange e) <$> exprToPattern e  -- TODO #2822: Range!-          return $ foldl AppP p ps-        _ -> failure--opAppExprToPattern :: OpApp Expr -> Parser Pattern-opAppExprToPattern (SyntaxBindingLambda _ _ _) = parseError "Syntax binding lambda cannot appear in a pattern"-opAppExprToPattern (Ordinary e) = exprToPattern e---- | Turn an expression into a name. Fails if the expression is not a---   valid identifier.-exprToName :: Expr -> Parser Name-exprToName (Ident (QName x)) = return x-exprToName e =-  let Just pos = rStart' $ getRange e in-  parseErrorAt pos $ "Not a valid identifier: " ++ show e--stripSingletonRawApp :: Expr -> Expr-stripSingletonRawApp (RawApp _ [e]) = stripSingletonRawApp e-stripSingletonRawApp e = e--isEqual :: Expr -> Maybe (Expr, Expr)-isEqual e =-  case stripSingletonRawApp e of-    Equal _ a b -> Just (stripSingletonRawApp a, stripSingletonRawApp b)-    _           -> Nothing--maybeNamed :: Expr -> Named_ Expr-maybeNamed e =-  case isEqual e of-    Just (Ident (QName x), b) -> named (Ranged (getRange x) (nameToRawName x)) b-    _                         -> unnamed e--patternSynArgs :: [Either Hiding LamBinding] -> Parser [Arg Name]-patternSynArgs = mapM pSynArg-  where-    pSynArg Left{}                   = parseError "Absurd patterns are not allowed in pattern synonyms"-    pSynArg (Right DomainFull{})     = parseError "Unexpected type signature in pattern synonym argument"-    pSynArg (Right (DomainFree a x))-      | getHiding a `notElem` [Hidden, NotHidden] = parseError $ show (getHiding a) ++ " arguments not allowed to pattern synonyms"-      | getRelevance a /= Relevant                = parseError "Arguments to pattern synonyms must be relevant"-      | otherwise                                 = return $ Arg a (boundName x)--parsePanic s = parseError $ "Internal parser error: " ++ s ++ ". Please report this as a bug."--{- RHS or type signature -}--data RHSOrTypeSigs- = JustRHS RHS- | TypeSigsRHS Expr- deriving Show--patternToNames :: Pattern -> Parser [(ArgInfo, Name)]-patternToNames p =-  case p of-    IdentP (QName i)         -> return [(defaultArgInfo, i)]-    WildP r                  -> return [(defaultArgInfo, C.noName r)]-    DotP _ (Ident (QName i)) -> return [(setRelevance Irrelevant defaultArgInfo, i)]-    RawAppP _ ps             -> concat <$> mapM patternToNames ps-    _                        -> parseError $-      "Illegal name in type signature: " ++ prettyShow p--funClauseOrTypeSigs :: LHS -> RHSOrTypeSigs -> WhereClause -> Parser [Declaration]-funClauseOrTypeSigs lhs mrhs wh = do-  -- traceShowM lhs-  case mrhs of-    JustRHS rhs   -> return [FunClause lhs rhs wh False]-    TypeSigsRHS e -> case wh of-      NoWhere -> case lhs of-        LHS p _ _ | hasEllipsis p -> parseError "The ellipsis ... cannot have a type signature"-        LHS _ _ (_:_) -> parseError "Illegal: with in type signature"-        LHS _ (_:_) _ -> parseError "Illegal: rewrite in type signature"-        LHS p _ _ | hasWithPatterns p -> parseError "Illegal: with patterns in type signature"-        LHS p [] []  -> map (\ (x, y) -> TypeSig x y e) <$> patternToNames p-      _ -> parseError "A type signature cannot have a where clause"--parseDisplayPragma :: Range -> Position -> String -> Parser Pragma-parseDisplayPragma r pos s =-  case parsePosString pos defaultParseFlags [normal] funclauseParser s of-    ParseOk s [FunClause (LHS lhs [] []) (RHS rhs) NoWhere ca] | null (parseInp s) ->-      return $ DisplayPragma r lhs rhs-    _ -> parseError "Invalid DISPLAY pragma. Should have form {-# DISPLAY LHS = RHS #-}."-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "<built-in>" #-}-{-# LINE 1 "<command-line>" #-}-{-# LINE 10 "<command-line>" #-}-# 1 "/usr/include/stdc-predef.h" 1 3 4--# 17 "/usr/include/stdc-predef.h" 3 4--------------------------------------------{-# LINE 10 "<command-line>" #-}-{-# LINE 1 "/usr/local/stow/ghc-8.4.3/lib/ghc-8.4.3/include/ghcversion.h" #-}----------------{-# LINE 10 "<command-line>" #-}-{-# LINE 1 "/tmp/ghc8142_0/ghc_2.h" #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE PatternGuards #-}++{-| The parser is generated by Happy (<http://www.haskell.org/happy>).+ -+ - Ideally, ranges should be as precise as possible, to get messages that+ - emphasize precisely the faulting term(s) upon error.+ -+ - However, interactive highlighting is only applied at the end of each+ - mutual block, keywords are only highlighted once (see+ - `TypeChecking.Rules.Decl'). So if the ranges of two declarations+ - interleave, one must ensure that keyword ranges are not included in+ - the intersection. (Otherwise they are uncolored by the interactive+ - highlighting.)+ -+ -}+module Agda.Syntax.Parser.Parser (+      moduleParser+    , moduleNameParser+    , exprParser+    , exprWhereParser+    , tokensParser+    , holeContentParser+    , splitOnDots  -- only used by the internal test-suite+    ) where++import Control.Monad++import Data.Char+import Data.Functor+import Data.List+import Data.Maybe+import Data.Monoid+import qualified Data.Traversable as T++import Debug.Trace++import Agda.Syntax.Position hiding (tests)+import Agda.Syntax.Parser.Monad+import Agda.Syntax.Parser.Lexer+import Agda.Syntax.Parser.Tokens+import Agda.Syntax.Concrete as C+import Agda.Syntax.Concrete.Attribute+import Agda.Syntax.Concrete.Pattern+import Agda.Syntax.Concrete.Pretty ()+import Agda.Syntax.Common+import Agda.Syntax.Fixity+import Agda.Syntax.Notation+import Agda.Syntax.Literal++import Agda.TypeChecking.Positivity.Occurrence hiding (tests)++import Agda.Utils.Either hiding (tests)+import Agda.Utils.Functor+import Agda.Utils.Hash+import Agda.Utils.List ( spanJust, chopWhen )+import Agda.Utils.Monad+import Agda.Utils.Pretty+import Agda.Utils.Singleton+import Agda.Utils.Tuple+import qualified Agda.Utils.Maybe.Strict as Strict++import Agda.Utils.Impossible+#include "undefined.h"+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.19.9++newtype HappyAbsSyn  = HappyAbsSyn HappyAny+#if __GLASGOW_HASKELL__ >= 607+type HappyAny = Happy_GHC_Exts.Any+#else+type HappyAny = forall a . a+#endif+happyIn10 :: ([Token]) -> (HappyAbsSyn )+happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn10 #-}+happyOut10 :: (HappyAbsSyn ) -> ([Token])+happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut10 #-}+happyIn11 :: ([Token]) -> (HappyAbsSyn )+happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn11 #-}+happyOut11 :: (HappyAbsSyn ) -> ([Token])+happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut11 #-}+happyIn12 :: (Token) -> (HappyAbsSyn )+happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn12 #-}+happyOut12 :: (HappyAbsSyn ) -> (Token)+happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut12 #-}+happyIn13 :: (([Pragma], [Declaration])) -> (HappyAbsSyn )+happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn13 #-}+happyOut13 :: (HappyAbsSyn ) -> (([Pragma], [Declaration]))+happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut13 #-}+happyIn14 :: (()) -> (HappyAbsSyn )+happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn14 #-}+happyOut14 :: (HappyAbsSyn ) -> (())+happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut14 #-}+happyIn15 :: (()) -> (HappyAbsSyn )+happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn15 #-}+happyOut15 :: (HappyAbsSyn ) -> (())+happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut15 #-}+happyIn16 :: (Interval) -> (HappyAbsSyn )+happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn16 #-}+happyOut16 :: (HappyAbsSyn ) -> (Interval)+happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut16 #-}+happyIn17 :: (()) -> (HappyAbsSyn )+happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn17 #-}+happyOut17 :: (HappyAbsSyn ) -> (())+happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut17 #-}+happyIn18 :: (Integer) -> (HappyAbsSyn )+happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn18 #-}+happyOut18 :: (HappyAbsSyn ) -> (Integer)+happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut18 #-}+happyIn19 :: (Name) -> (HappyAbsSyn )+happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn19 #-}+happyOut19 :: (HappyAbsSyn ) -> (Name)+happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut19 #-}+happyIn20 :: ([Name]) -> (HappyAbsSyn )+happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn20 #-}+happyOut20 :: (HappyAbsSyn ) -> ([Name])+happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut20 #-}+happyIn21 :: (Range) -> (HappyAbsSyn )+happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn21 #-}+happyOut21 :: (HappyAbsSyn ) -> (Range)+happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut21 #-}+happyIn22 :: (Arg Name) -> (HappyAbsSyn )+happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn22 #-}+happyOut22 :: (HappyAbsSyn ) -> (Arg Name)+happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut22 #-}+happyIn23 :: ([Arg Name]) -> (HappyAbsSyn )+happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn23 #-}+happyOut23 :: (HappyAbsSyn ) -> ([Arg Name])+happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut23 #-}+happyIn24 :: ([Arg Name]) -> (HappyAbsSyn )+happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn24 #-}+happyOut24 :: (HappyAbsSyn ) -> ([Arg Name])+happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut24 #-}+happyIn25 :: ([Arg Name]) -> (HappyAbsSyn )+happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn25 #-}+happyOut25 :: (HappyAbsSyn ) -> ([Arg Name])+happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut25 #-}+happyIn26 :: (Attr) -> (HappyAbsSyn )+happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn26 #-}+happyOut26 :: (HappyAbsSyn ) -> (Attr)+happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut26 #-}+happyIn27 :: ([Attr]) -> (HappyAbsSyn )+happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn27 #-}+happyOut27 :: (HappyAbsSyn ) -> ([Attr])+happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut27 #-}+happyIn28 :: ([Attr]) -> (HappyAbsSyn )+happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn28 #-}+happyOut28 :: (HappyAbsSyn ) -> ([Attr])+happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut28 #-}+happyIn29 :: (QName) -> (HappyAbsSyn )+happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn29 #-}+happyOut29 :: (HappyAbsSyn ) -> (QName)+happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut29 #-}+happyIn30 :: (QName) -> (HappyAbsSyn )+happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn30 #-}+happyOut30 :: (HappyAbsSyn ) -> (QName)+happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut30 #-}+happyIn31 :: (Name) -> (HappyAbsSyn )+happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn31 #-}+happyOut31 :: (HappyAbsSyn ) -> (Name)+happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut31 #-}+happyIn32 :: ([Name]) -> (HappyAbsSyn )+happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn32 #-}+happyOut32 :: (HappyAbsSyn ) -> ([Name])+happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut32 #-}+happyIn33 :: ([NamedArg BoundName]) -> (HappyAbsSyn )+happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn33 #-}+happyOut33 :: (HappyAbsSyn ) -> ([NamedArg BoundName])+happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut33 #-}+happyIn34 :: (Either [NamedArg BoundName] [Expr]) -> (HappyAbsSyn )+happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn34 #-}+happyOut34 :: (HappyAbsSyn ) -> (Either [NamedArg BoundName] [Expr])+happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut34 #-}+happyIn35 :: ([NamedArg BoundName]) -> (HappyAbsSyn )+happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn35 #-}+happyOut35 :: (HappyAbsSyn ) -> ([NamedArg BoundName])+happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut35 #-}+happyIn36 :: ([String]) -> (HappyAbsSyn )+happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn36 #-}+happyOut36 :: (HappyAbsSyn ) -> ([String])+happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut36 #-}+happyIn37 :: (String) -> (HappyAbsSyn )+happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn37 #-}+happyOut37 :: (HappyAbsSyn ) -> (String)+happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut37 #-}+happyIn38 :: ([(Interval, String)]) -> (HappyAbsSyn )+happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn38 #-}+happyOut38 :: (HappyAbsSyn ) -> ([(Interval, String)])+happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut38 #-}+happyIn39 :: ([(Interval, String)]) -> (HappyAbsSyn )+happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn39 #-}+happyOut39 :: (HappyAbsSyn ) -> ([(Interval, String)])+happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut39 #-}+happyIn40 :: (Name) -> (HappyAbsSyn )+happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn40 #-}+happyOut40 :: (HappyAbsSyn ) -> (Name)+happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut40 #-}+happyIn41 :: (QName) -> (HappyAbsSyn )+happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn41 #-}+happyOut41 :: (HappyAbsSyn ) -> (QName)+happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut41 #-}+happyIn42 :: ([QName]) -> (HappyAbsSyn )+happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn42 #-}+happyOut42 :: (HappyAbsSyn ) -> ([QName])+happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut42 #-}+happyIn43 :: (Expr) -> (HappyAbsSyn )+happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn43 #-}+happyOut43 :: (HappyAbsSyn ) -> (Expr)+happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut43 #-}+happyIn44 :: (Expr) -> (HappyAbsSyn )+happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn44 #-}+happyOut44 :: (HappyAbsSyn ) -> (Expr)+happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut44 #-}+happyIn45 :: ([Expr]) -> (HappyAbsSyn )+happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn45 #-}+happyOut45 :: (HappyAbsSyn ) -> ([Expr])+happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut45 #-}+happyIn46 :: ([Expr]) -> (HappyAbsSyn )+happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn46 #-}+happyOut46 :: (HappyAbsSyn ) -> ([Expr])+happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut46 #-}+happyIn47 :: (Expr) -> (HappyAbsSyn )+happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn47 #-}+happyOut47 :: (HappyAbsSyn ) -> (Expr)+happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut47 #-}+happyIn48 :: (Maybe Expr) -> (HappyAbsSyn )+happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn48 #-}+happyOut48 :: (HappyAbsSyn ) -> (Maybe Expr)+happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut48 #-}+happyIn49 :: (Expr) -> (HappyAbsSyn )+happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn49 #-}+happyOut49 :: (HappyAbsSyn ) -> (Expr)+happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut49 #-}+happyIn50 :: ([Expr]) -> (HappyAbsSyn )+happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn50 #-}+happyOut50 :: (HappyAbsSyn ) -> ([Expr])+happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut50 #-}+happyIn51 :: ([Expr]) -> (HappyAbsSyn )+happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn51 #-}+happyOut51 :: (HappyAbsSyn ) -> ([Expr])+happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut51 #-}+happyIn52 :: (Expr) -> (HappyAbsSyn )+happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn52 #-}+happyOut52 :: (HappyAbsSyn ) -> (Expr)+happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut52 #-}+happyIn53 :: (Expr) -> (HappyAbsSyn )+happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn53 #-}+happyOut53 :: (HappyAbsSyn ) -> (Expr)+happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut53 #-}+happyIn54 :: (Expr) -> (HappyAbsSyn )+happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn54 #-}+happyOut54 :: (HappyAbsSyn ) -> (Expr)+happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut54 #-}+happyIn55 :: (Expr) -> (HappyAbsSyn )+happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn55 #-}+happyOut55 :: (HappyAbsSyn ) -> (Expr)+happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut55 #-}+happyIn56 :: (RecordAssignments) -> (HappyAbsSyn )+happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn56 #-}+happyOut56 :: (HappyAbsSyn ) -> (RecordAssignments)+happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut56 #-}+happyIn57 :: (RecordAssignments) -> (HappyAbsSyn )+happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn57 #-}+happyOut57 :: (HappyAbsSyn ) -> (RecordAssignments)+happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut57 #-}+happyIn58 :: (RecordAssignment) -> (HappyAbsSyn )+happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn58 #-}+happyOut58 :: (HappyAbsSyn ) -> (RecordAssignment)+happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut58 #-}+happyIn59 :: (ModuleAssignment) -> (HappyAbsSyn )+happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn59 #-}+happyOut59 :: (HappyAbsSyn ) -> (ModuleAssignment)+happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut59 #-}+happyIn60 :: ([FieldAssignment]) -> (HappyAbsSyn )+happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn60 #-}+happyOut60 :: (HappyAbsSyn ) -> ([FieldAssignment])+happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut60 #-}+happyIn61 :: ([FieldAssignment]) -> (HappyAbsSyn )+happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn61 #-}+happyOut61 :: (HappyAbsSyn ) -> ([FieldAssignment])+happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut61 #-}+happyIn62 :: (FieldAssignment) -> (HappyAbsSyn )+happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn62 #-}+happyOut62 :: (HappyAbsSyn ) -> (FieldAssignment)+happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut62 #-}+happyIn63 :: (Telescope) -> (HappyAbsSyn )+happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn63 #-}+happyOut63 :: (HappyAbsSyn ) -> (Telescope)+happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut63 #-}+happyIn64 :: (Telescope) -> (HappyAbsSyn )+happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn64 #-}+happyOut64 :: (HappyAbsSyn ) -> (Telescope)+happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut64 #-}+happyIn65 :: ([TypedBinding]) -> (HappyAbsSyn )+happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn65 #-}+happyOut65 :: (HappyAbsSyn ) -> ([TypedBinding])+happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut65 #-}+happyIn66 :: (TypedBinding) -> (HappyAbsSyn )+happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn66 #-}+happyOut66 :: (HappyAbsSyn ) -> (TypedBinding)+happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut66 #-}+happyIn67 :: (TypedBinding) -> (HappyAbsSyn )+happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn67 #-}+happyOut67 :: (HappyAbsSyn ) -> (TypedBinding)+happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut67 #-}+happyIn68 :: (TypedBinding) -> (HappyAbsSyn )+happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn68 #-}+happyOut68 :: (HappyAbsSyn ) -> (TypedBinding)+happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut68 #-}+happyIn69 :: (TypedBinding) -> (HappyAbsSyn )+happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn69 #-}+happyOut69 :: (HappyAbsSyn ) -> (TypedBinding)+happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut69 #-}+happyIn70 :: (TypedBinding) -> (HappyAbsSyn )+happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn70 #-}+happyOut70 :: (HappyAbsSyn ) -> (TypedBinding)+happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut70 #-}+happyIn71 :: ([LamBinding]) -> (HappyAbsSyn )+happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn71 #-}+happyOut71 :: (HappyAbsSyn ) -> ([LamBinding])+happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut71 #-}+happyIn72 :: (Either ([LamBinding], Hiding) [Expr]) -> (HappyAbsSyn )+happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn72 #-}+happyOut72 :: (HappyAbsSyn ) -> (Either ([LamBinding], Hiding) [Expr])+happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut72 #-}+happyIn73 :: ([Either Hiding LamBinding]) -> (HappyAbsSyn )+happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn73 #-}+happyOut73 :: (HappyAbsSyn ) -> ([Either Hiding LamBinding])+happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut73 #-}+happyIn74 :: (Either [Either Hiding LamBinding] [Expr]) -> (HappyAbsSyn )+happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn74 #-}+happyOut74 :: (HappyAbsSyn ) -> (Either [Either Hiding LamBinding] [Expr])+happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut74 #-}+happyIn75 :: (LamClause) -> (HappyAbsSyn )+happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn75 #-}+happyOut75 :: (HappyAbsSyn ) -> (LamClause)+happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut75 #-}+happyIn76 :: (LamClause) -> (HappyAbsSyn )+happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn76 #-}+happyOut76 :: (HappyAbsSyn ) -> (LamClause)+happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut76 #-}+happyIn77 :: (LamClause) -> (HappyAbsSyn )+happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn77 #-}+happyOut77 :: (HappyAbsSyn ) -> (LamClause)+happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut77 #-}+happyIn78 :: ([LamClause]) -> (HappyAbsSyn )+happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn78 #-}+happyOut78 :: (HappyAbsSyn ) -> ([LamClause])+happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut78 #-}+happyIn79 :: ([LamClause]) -> (HappyAbsSyn )+happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn79 #-}+happyOut79 :: (HappyAbsSyn ) -> ([LamClause])+happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut79 #-}+happyIn80 :: ([LamBinding]) -> (HappyAbsSyn )+happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn80 #-}+happyOut80 :: (HappyAbsSyn ) -> ([LamBinding])+happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut80 #-}+happyIn81 :: ([LamBinding]) -> (HappyAbsSyn )+happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn81 #-}+happyOut81 :: (HappyAbsSyn ) -> ([LamBinding])+happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut81 #-}+happyIn82 :: ([LamBinding]) -> (HappyAbsSyn )+happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn82 #-}+happyOut82 :: (HappyAbsSyn ) -> ([LamBinding])+happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut82 #-}+happyIn83 :: ([LamBinding]) -> (HappyAbsSyn )+happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn83 #-}+happyOut83 :: (HappyAbsSyn ) -> ([LamBinding])+happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut83 #-}+happyIn84 :: (Either [LamBinding] [Expr]) -> (HappyAbsSyn )+happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn84 #-}+happyOut84 :: (HappyAbsSyn ) -> (Either [LamBinding] [Expr])+happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut84 #-}+happyIn85 :: ([DoStmt]) -> (HappyAbsSyn )+happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn85 #-}+happyOut85 :: (HappyAbsSyn ) -> ([DoStmt])+happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut85 #-}+happyIn86 :: (DoStmt) -> (HappyAbsSyn )+happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn86 #-}+happyOut86 :: (HappyAbsSyn ) -> (DoStmt)+happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut86 #-}+happyIn87 :: ([LamClause]) -> (HappyAbsSyn )+happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn87 #-}+happyOut87 :: (HappyAbsSyn ) -> ([LamClause])+happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut87 #-}+happyIn88 :: (ImportDirective) -> (HappyAbsSyn )+happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn88 #-}+happyOut88 :: (HappyAbsSyn ) -> (ImportDirective)+happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut88 #-}+happyIn89 :: ([ImportDirective]) -> (HappyAbsSyn )+happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn89 #-}+happyOut89 :: (HappyAbsSyn ) -> ([ImportDirective])+happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut89 #-}+happyIn90 :: (ImportDirective) -> (HappyAbsSyn )+happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn90 #-}+happyOut90 :: (HappyAbsSyn ) -> (ImportDirective)+happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut90 #-}+happyIn91 :: ((Using, Range)) -> (HappyAbsSyn )+happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn91 #-}+happyOut91 :: (HappyAbsSyn ) -> ((Using, Range))+happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut91 #-}+happyIn92 :: (([ImportedName], Range)) -> (HappyAbsSyn )+happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn92 #-}+happyOut92 :: (HappyAbsSyn ) -> (([ImportedName], Range))+happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut92 #-}+happyIn93 :: (([Renaming] , Range)) -> (HappyAbsSyn )+happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn93 #-}+happyOut93 :: (HappyAbsSyn ) -> (([Renaming] , Range))+happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut93 #-}+happyIn94 :: ([Renaming]) -> (HappyAbsSyn )+happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn94 #-}+happyOut94 :: (HappyAbsSyn ) -> ([Renaming])+happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut94 #-}+happyIn95 :: (Renaming) -> (HappyAbsSyn )+happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn95 #-}+happyOut95 :: (HappyAbsSyn ) -> (Renaming)+happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut95 #-}+happyIn96 :: (ImportedName) -> (HappyAbsSyn )+happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn96 #-}+happyOut96 :: (HappyAbsSyn ) -> (ImportedName)+happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut96 #-}+happyIn97 :: (ImportedName) -> (HappyAbsSyn )+happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn97 #-}+happyOut97 :: (HappyAbsSyn ) -> (ImportedName)+happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut97 #-}+happyIn98 :: ([ImportedName]) -> (HappyAbsSyn )+happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn98 #-}+happyOut98 :: (HappyAbsSyn ) -> ([ImportedName])+happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut98 #-}+happyIn99 :: ([ImportedName]) -> (HappyAbsSyn )+happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn99 #-}+happyOut99 :: (HappyAbsSyn ) -> ([ImportedName])+happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut99 #-}+happyIn100 :: (LHS) -> (HappyAbsSyn )+happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn100 #-}+happyOut100 :: (HappyAbsSyn ) -> (LHS)+happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut100 #-}+happyIn101 :: ([Expr]) -> (HappyAbsSyn )+happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn101 #-}+happyOut101 :: (HappyAbsSyn ) -> ([Expr])+happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut101 #-}+happyIn102 :: ([Expr]) -> (HappyAbsSyn )+happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn102 #-}+happyOut102 :: (HappyAbsSyn ) -> ([Expr])+happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut102 #-}+happyIn103 :: (HoleContent) -> (HappyAbsSyn )+happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn103 #-}+happyOut103 :: (HappyAbsSyn ) -> (HoleContent)+happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut103 #-}+happyIn104 :: (WhereClause) -> (HappyAbsSyn )+happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn104 #-}+happyOut104 :: (HappyAbsSyn ) -> (WhereClause)+happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut104 #-}+happyIn105 :: (ExprWhere) -> (HappyAbsSyn )+happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn105 #-}+happyOut105 :: (HappyAbsSyn ) -> (ExprWhere)+happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut105 #-}+happyIn106 :: ([Declaration]) -> (HappyAbsSyn )+happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn106 #-}+happyOut106 :: (HappyAbsSyn ) -> ([Declaration])+happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut106 #-}+happyIn107 :: ([Declaration]) -> (HappyAbsSyn )+happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn107 #-}+happyOut107 :: (HappyAbsSyn ) -> ([Declaration])+happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut107 #-}+happyIn108 :: ([Arg Declaration]) -> (HappyAbsSyn )+happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn108 #-}+happyOut108 :: (HappyAbsSyn ) -> ([Arg Declaration])+happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut108 #-}+happyIn109 :: ([Declaration]) -> (HappyAbsSyn )+happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn109 #-}+happyOut109 :: (HappyAbsSyn ) -> ([Declaration])+happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut109 #-}+happyIn110 :: (RHSOrTypeSigs) -> (HappyAbsSyn )+happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn110 #-}+happyOut110 :: (HappyAbsSyn ) -> (RHSOrTypeSigs)+happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut110 #-}+happyIn111 :: (Declaration) -> (HappyAbsSyn )+happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn111 #-}+happyOut111 :: (HappyAbsSyn ) -> (Declaration)+happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut111 #-}+happyIn112 :: (Declaration) -> (HappyAbsSyn )+happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn112 #-}+happyOut112 :: (HappyAbsSyn ) -> (Declaration)+happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut112 #-}+happyIn113 :: (Declaration) -> (HappyAbsSyn )+happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn113 #-}+happyOut113 :: (HappyAbsSyn ) -> (Declaration)+happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut113 #-}+happyIn114 :: (Declaration) -> (HappyAbsSyn )+happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn114 #-}+happyOut114 :: (HappyAbsSyn ) -> (Declaration)+happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut114 #-}+happyIn115 :: ((Name, IsInstance)) -> (HappyAbsSyn )+happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn115 #-}+happyOut115 :: (HappyAbsSyn ) -> ((Name, IsInstance))+happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut115 #-}+happyIn116 :: (Declaration) -> (HappyAbsSyn )+happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn116 #-}+happyOut116 :: (HappyAbsSyn ) -> (Declaration)+happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut116 #-}+happyIn117 :: ([Declaration]) -> (HappyAbsSyn )+happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn117 #-}+happyOut117 :: (HappyAbsSyn ) -> ([Declaration])+happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut117 #-}+happyIn118 :: ([Declaration]) -> (HappyAbsSyn )+happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn118 #-}+happyOut118 :: (HappyAbsSyn ) -> ([Declaration])+happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut118 #-}+happyIn119 :: (Declaration) -> (HappyAbsSyn )+happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn119 #-}+happyOut119 :: (HappyAbsSyn ) -> (Declaration)+happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut119 #-}+happyIn120 :: (Declaration) -> (HappyAbsSyn )+happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn120 #-}+happyOut120 :: (HappyAbsSyn ) -> (Declaration)+happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut120 #-}+happyIn121 :: (Declaration) -> (HappyAbsSyn )+happyIn121 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn121 #-}+happyOut121 :: (HappyAbsSyn ) -> (Declaration)+happyOut121 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut121 #-}+happyIn122 :: (Declaration) -> (HappyAbsSyn )+happyIn122 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn122 #-}+happyOut122 :: (HappyAbsSyn ) -> (Declaration)+happyOut122 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut122 #-}+happyIn123 :: (Declaration) -> (HappyAbsSyn )+happyIn123 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn123 #-}+happyOut123 :: (HappyAbsSyn ) -> (Declaration)+happyOut123 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut123 #-}+happyIn124 :: (Declaration) -> (HappyAbsSyn )+happyIn124 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn124 #-}+happyOut124 :: (HappyAbsSyn ) -> (Declaration)+happyOut124 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut124 #-}+happyIn125 :: (Declaration) -> (HappyAbsSyn )+happyIn125 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn125 #-}+happyOut125 :: (HappyAbsSyn ) -> (Declaration)+happyOut125 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut125 #-}+happyIn126 :: (Declaration) -> (HappyAbsSyn )+happyIn126 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn126 #-}+happyOut126 :: (HappyAbsSyn ) -> (Declaration)+happyOut126 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut126 #-}+happyIn127 :: (Declaration) -> (HappyAbsSyn )+happyIn127 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn127 #-}+happyOut127 :: (HappyAbsSyn ) -> (Declaration)+happyOut127 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut127 #-}+happyIn128 :: (Declaration) -> (HappyAbsSyn )+happyIn128 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn128 #-}+happyOut128 :: (HappyAbsSyn ) -> (Declaration)+happyOut128 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut128 #-}+happyIn129 :: ([Arg Name]) -> (HappyAbsSyn )+happyIn129 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn129 #-}+happyOut129 :: (HappyAbsSyn ) -> ([Arg Name])+happyOut129 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut129 #-}+happyIn130 :: ([RString]) -> (HappyAbsSyn )+happyIn130 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn130 #-}+happyOut130 :: (HappyAbsSyn ) -> ([RString])+happyOut130 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut130 #-}+happyIn131 :: ([NamedArg HoleName]) -> (HappyAbsSyn )+happyIn131 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn131 #-}+happyOut131 :: (HappyAbsSyn ) -> ([NamedArg HoleName])+happyOut131 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut131 #-}+happyIn132 :: (NamedArg HoleName) -> (HappyAbsSyn )+happyIn132 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn132 #-}+happyOut132 :: (HappyAbsSyn ) -> (NamedArg HoleName)+happyOut132 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut132 #-}+happyIn133 :: (HoleName) -> (HappyAbsSyn )+happyIn133 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn133 #-}+happyOut133 :: (HappyAbsSyn ) -> (HoleName)+happyOut133 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut133 #-}+happyIn134 :: (HoleName) -> (HappyAbsSyn )+happyIn134 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn134 #-}+happyOut134 :: (HappyAbsSyn ) -> (HoleName)+happyOut134 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut134 #-}+happyIn135 :: (RString) -> (HappyAbsSyn )+happyIn135 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn135 #-}+happyOut135 :: (HappyAbsSyn ) -> (RString)+happyOut135 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut135 #-}+happyIn136 :: (Maybe Range) -> (HappyAbsSyn )+happyIn136 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn136 #-}+happyOut136 :: (HappyAbsSyn ) -> (Maybe Range)+happyOut136 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut136 #-}+happyIn137 :: ([Declaration]) -> (HappyAbsSyn )+happyIn137 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn137 #-}+happyOut137 :: (HappyAbsSyn ) -> ([Declaration])+happyOut137 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut137 #-}+happyIn138 :: ([Expr]) -> (HappyAbsSyn )+happyIn138 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn138 #-}+happyOut138 :: (HappyAbsSyn ) -> ([Expr])+happyOut138 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut138 #-}+happyIn139 :: (Telescope -> Parser ModuleApplication) -> (HappyAbsSyn )+happyIn139 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn139 #-}+happyOut139 :: (HappyAbsSyn ) -> (Telescope -> Parser ModuleApplication)+happyOut139 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut139 #-}+happyIn140 :: (Declaration) -> (HappyAbsSyn )+happyIn140 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn140 #-}+happyOut140 :: (HappyAbsSyn ) -> (Declaration)+happyOut140 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut140 #-}+happyIn141 :: (Declaration) -> (HappyAbsSyn )+happyIn141 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn141 #-}+happyOut141 :: (HappyAbsSyn ) -> (Declaration)+happyOut141 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut141 #-}+happyIn142 :: (Name) -> (HappyAbsSyn )+happyIn142 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn142 #-}+happyOut142 :: (HappyAbsSyn ) -> (Name)+happyOut142 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut142 #-}+happyIn143 :: ([Declaration]) -> (HappyAbsSyn )+happyIn143 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn143 #-}+happyOut143 :: (HappyAbsSyn ) -> ([Declaration])+happyOut143 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut143 #-}+happyIn144 :: (Declaration) -> (HappyAbsSyn )+happyIn144 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn144 #-}+happyOut144 :: (HappyAbsSyn ) -> (Declaration)+happyOut144 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut144 #-}+happyIn145 :: (Pragma) -> (HappyAbsSyn )+happyIn145 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn145 #-}+happyOut145 :: (HappyAbsSyn ) -> (Pragma)+happyOut145 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut145 #-}+happyIn146 :: (Pragma) -> (HappyAbsSyn )+happyIn146 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn146 #-}+happyOut146 :: (HappyAbsSyn ) -> (Pragma)+happyOut146 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut146 #-}+happyIn147 :: (Pragma) -> (HappyAbsSyn )+happyIn147 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn147 #-}+happyOut147 :: (HappyAbsSyn ) -> (Pragma)+happyOut147 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut147 #-}+happyIn148 :: (Pragma) -> (HappyAbsSyn )+happyIn148 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn148 #-}+happyOut148 :: (HappyAbsSyn ) -> (Pragma)+happyOut148 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut148 #-}+happyIn149 :: (Pragma) -> (HappyAbsSyn )+happyIn149 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn149 #-}+happyOut149 :: (HappyAbsSyn ) -> (Pragma)+happyOut149 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut149 #-}+happyIn150 :: (Pragma) -> (HappyAbsSyn )+happyIn150 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn150 #-}+happyOut150 :: (HappyAbsSyn ) -> (Pragma)+happyOut150 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut150 #-}+happyIn151 :: (Pragma) -> (HappyAbsSyn )+happyIn151 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn151 #-}+happyOut151 :: (HappyAbsSyn ) -> (Pragma)+happyOut151 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut151 #-}+happyIn152 :: (Pragma) -> (HappyAbsSyn )+happyIn152 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn152 #-}+happyOut152 :: (HappyAbsSyn ) -> (Pragma)+happyOut152 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut152 #-}+happyIn153 :: (Pragma) -> (HappyAbsSyn )+happyIn153 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn153 #-}+happyOut153 :: (HappyAbsSyn ) -> (Pragma)+happyOut153 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut153 #-}+happyIn154 :: (Pragma) -> (HappyAbsSyn )+happyIn154 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn154 #-}+happyOut154 :: (HappyAbsSyn ) -> (Pragma)+happyOut154 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut154 #-}+happyIn155 :: (Pragma) -> (HappyAbsSyn )+happyIn155 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn155 #-}+happyOut155 :: (HappyAbsSyn ) -> (Pragma)+happyOut155 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut155 #-}+happyIn156 :: (Pragma) -> (HappyAbsSyn )+happyIn156 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn156 #-}+happyOut156 :: (HappyAbsSyn ) -> (Pragma)+happyOut156 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut156 #-}+happyIn157 :: (Pragma) -> (HappyAbsSyn )+happyIn157 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn157 #-}+happyOut157 :: (HappyAbsSyn ) -> (Pragma)+happyOut157 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut157 #-}+happyIn158 :: (Pragma) -> (HappyAbsSyn )+happyIn158 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn158 #-}+happyOut158 :: (HappyAbsSyn ) -> (Pragma)+happyOut158 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut158 #-}+happyIn159 :: (Pragma) -> (HappyAbsSyn )+happyIn159 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn159 #-}+happyOut159 :: (HappyAbsSyn ) -> (Pragma)+happyOut159 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut159 #-}+happyIn160 :: (Pragma) -> (HappyAbsSyn )+happyIn160 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn160 #-}+happyOut160 :: (HappyAbsSyn ) -> (Pragma)+happyOut160 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut160 #-}+happyIn161 :: (Pragma) -> (HappyAbsSyn )+happyIn161 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn161 #-}+happyOut161 :: (HappyAbsSyn ) -> (Pragma)+happyOut161 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut161 #-}+happyIn162 :: (Pragma) -> (HappyAbsSyn )+happyIn162 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn162 #-}+happyOut162 :: (HappyAbsSyn ) -> (Pragma)+happyOut162 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut162 #-}+happyIn163 :: (Pragma) -> (HappyAbsSyn )+happyIn163 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn163 #-}+happyOut163 :: (HappyAbsSyn ) -> (Pragma)+happyOut163 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut163 #-}+happyIn164 :: (Pragma) -> (HappyAbsSyn )+happyIn164 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn164 #-}+happyOut164 :: (HappyAbsSyn ) -> (Pragma)+happyOut164 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut164 #-}+happyIn165 :: (Pragma) -> (HappyAbsSyn )+happyIn165 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn165 #-}+happyOut165 :: (HappyAbsSyn ) -> (Pragma)+happyOut165 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut165 #-}+happyIn166 :: (Pragma) -> (HappyAbsSyn )+happyIn166 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn166 #-}+happyOut166 :: (HappyAbsSyn ) -> (Pragma)+happyOut166 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut166 #-}+happyIn167 :: ([(Range, Occurrence)]) -> (HappyAbsSyn )+happyIn167 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn167 #-}+happyOut167 :: (HappyAbsSyn ) -> ([(Range, Occurrence)])+happyOut167 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut167 #-}+happyIn168 :: ((Range, Occurrence)) -> (HappyAbsSyn )+happyIn168 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn168 #-}+happyOut168 :: (HappyAbsSyn ) -> ((Range, Occurrence))+happyOut168 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut168 #-}+happyIn169 :: ([TypeSignature]) -> (HappyAbsSyn )+happyIn169 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn169 #-}+happyOut169 :: (HappyAbsSyn ) -> ([TypeSignature])+happyOut169 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut169 #-}+happyIn170 :: ([TypeSignature]) -> (HappyAbsSyn )+happyIn170 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn170 #-}+happyOut170 :: (HappyAbsSyn ) -> ([TypeSignature])+happyOut170 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut170 #-}+happyIn171 :: ([TypeSignature]) -> (HappyAbsSyn )+happyIn171 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn171 #-}+happyOut171 :: (HappyAbsSyn ) -> ([TypeSignature])+happyOut171 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut171 #-}+happyIn172 :: ([Arg TypeSignature]) -> (HappyAbsSyn )+happyIn172 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn172 #-}+happyOut172 :: (HappyAbsSyn ) -> ([Arg TypeSignature])+happyOut172 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut172 #-}+happyIn173 :: ([Arg TypeSignature]) -> (HappyAbsSyn )+happyIn173 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn173 #-}+happyOut173 :: (HappyAbsSyn ) -> ([Arg TypeSignature])+happyOut173 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut173 #-}+happyIn174 :: ([Arg TypeSignature]) -> (HappyAbsSyn )+happyIn174 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn174 #-}+happyOut174 :: (HappyAbsSyn ) -> ([Arg TypeSignature])+happyOut174 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut174 #-}+happyIn175 :: ([Arg TypeSignature]) -> (HappyAbsSyn )+happyIn175 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn175 #-}+happyOut175 :: (HappyAbsSyn ) -> ([Arg TypeSignature])+happyOut175 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut175 #-}+happyIn176 :: (((Maybe (Ranged Induction), Maybe HasEta, Maybe (Name, IsInstance)), [Declaration])) -> (HappyAbsSyn )+happyIn176 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn176 #-}+happyOut176 :: (HappyAbsSyn ) -> (((Maybe (Ranged Induction), Maybe HasEta, Maybe (Name, IsInstance)), [Declaration]))+happyOut176 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut176 #-}+happyIn177 :: ([RecordDirective]) -> (HappyAbsSyn )+happyIn177 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn177 #-}+happyOut177 :: (HappyAbsSyn ) -> ([RecordDirective])+happyOut177 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut177 #-}+happyIn178 :: (RecordDirective) -> (HappyAbsSyn )+happyIn178 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn178 #-}+happyOut178 :: (HappyAbsSyn ) -> (RecordDirective)+happyOut178 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut178 #-}+happyIn179 :: (Ranged HasEta) -> (HappyAbsSyn )+happyIn179 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn179 #-}+happyOut179 :: (HappyAbsSyn ) -> (Ranged HasEta)+happyOut179 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut179 #-}+happyIn180 :: (Ranged Induction) -> (HappyAbsSyn )+happyIn180 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn180 #-}+happyOut180 :: (HappyAbsSyn ) -> (Ranged Induction)+happyOut180 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut180 #-}+happyIn181 :: ([Declaration]) -> (HappyAbsSyn )+happyIn181 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn181 #-}+happyOut181 :: (HappyAbsSyn ) -> ([Declaration])+happyOut181 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut181 #-}+happyIn182 :: ([Declaration]) -> (HappyAbsSyn )+happyIn182 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn182 #-}+happyOut182 :: (HappyAbsSyn ) -> ([Declaration])+happyOut182 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut182 #-}+happyIn183 :: ([Declaration]) -> (HappyAbsSyn )+happyIn183 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn183 #-}+happyOut183 :: (HappyAbsSyn ) -> ([Declaration])+happyOut183 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut183 #-}+happyIn184 :: ([Declaration]) -> (HappyAbsSyn )+happyIn184 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn184 #-}+happyOut184 :: (HappyAbsSyn ) -> ([Declaration])+happyOut184 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut184 #-}+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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x02\xe8\x53\x21\x00\x00\x30\xc7\x56\x05\x16\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\x01\xf4\xa9\x10\x00\x00\x98\x63\xab\x02\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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\x20\x80\x3e\x15\x02\x00\x00\x53\x6c\x55\x60\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x10\x40\xdf\x0a\x01\x00\x80\x39\xb6\x2a\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xda\x44\x00\x00\x00\x4c\x31\x55\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x08\xa0\x4f\x85\x00\x00\xc0\x14\x4b\x15\x58\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\x04\xd0\xa7\x42\x00\x00\x60\x8e\xad\x0a\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x01\x44\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\x30\x82\x28\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x36\x11\x00\x00\x00\x53\x0c\x55\x60\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x10\x40\x9f\x0a\x01\x00\x80\x29\x96\x2a\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x26\x02\x00\x00\x60\x8a\xa1\x0a\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\xa0\x4d\x04\x00\x00\xc0\x14\x43\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x23\x88\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x80\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x40\x08\x7d\x2a\x04\x00\x00\xe6\xd8\xae\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x20\x80\x3e\x15\x02\x00\x00\x73\x6c\x55\x60\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x10\x40\x9f\x0a\x01\x00\x80\x39\xb6\x7a\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x08\xa0\x4f\x85\x00\x00\xc0\x1c\x5b\x35\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\xfa\x54\x08\x00\x00\x4c\xb1\x55\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x80\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\xd0\x26\x02\x00\x00\x60\x8a\xa1\x0a\x2c\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\x02\xe8\x53\x21\x00\x00\x30\xc7\x76\x05\x16\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\x01\xf4\xa9\x10\x00\x00\x98\x63\xab\x07\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x80\x00\xfa\x54\x08\x00\x00\xcc\xb1\x55\x83\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\xe1\xbd\xdf\xe7\x4e\x00\x00\x60\x8a\xad\x0a\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\x08\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x10\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\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\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\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\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\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\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\x10\x00\x80\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\xb4\x89\x00\x00\x00\x98\x62\xa8\x02\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\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\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\xfc\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x40\x00\x02\xe8\x53\x21\x00\x00\x30\xc7\x56\x05\x16\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\x01\xf4\xa9\x10\x00\x00\x98\x63\xab\x02\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x80\x00\xfa\x54\x08\x00\x00\x4c\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\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\x01\x08\xa0\x4f\x85\x00\x00\xc0\x14\x5b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x01\xf4\xa9\x10\x00\x00\x98\x62\xab\x02\x0b\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\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\x10\x80\x00\xfa\x54\x08\x00\x00\xcc\xb1\x55\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x82\x28\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\x01\x08\xa0\x4f\x85\x00\x00\xc0\x1c\x5b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x11\x44\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x82\x28\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\x41\x14\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\x40\x00\x42\xe8\x53\x21\x00\x00\x30\xc5\x76\x05\x16\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\x01\xf4\xa9\x10\x00\x00\x98\x62\xab\x07\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x80\x00\xfa\x54\x08\x00\x00\x4c\xb1\x55\xa3\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x40\x00\x7d\x2a\x04\x00\x00\xe6\xd8\xae\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x20\x80\x3e\x15\x02\x00\x00\x73\x6c\xf5\x60\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x10\x40\x9f\x0a\x01\x00\x80\x39\xb6\x6a\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x08\xa0\x4f\x85\x00\x00\xc0\x14\x4b\x15\x58\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\x04\xd0\xa7\x42\x00\x00\x60\x8a\xa5\x0a\x2c\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\x02\xe8\x53\x21\x00\x00\x30\xc5\x52\x05\x16\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\x01\xf4\xa9\x10\x00\x00\x98\x63\xab\x02\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x6d\x22\x00\x00\x00\xa6\x18\xaa\xc0\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\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\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\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\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\xc0\x74\x78\xef\xf7\xb9\x13\x00\x00\x98\x62\xab\x42\x0b\x00\x00\x00\x00\x00\x00\x00\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\x11\x44\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x40\x00\x7d\x2a\x04\x00\x00\xe6\xd8\xaa\xc0\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\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\x30\x82\x28\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\x80\x00\x84\xd0\xa7\x42\x00\x00\x60\x8a\xad\x0a\x2c\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\x02\xe8\x53\x21\x00\x00\x30\xc5\x56\x05\x16\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\x01\xf4\xa9\x10\x00\x00\x98\x62\xab\x02\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x20\x84\x3e\x15\x02\x00\x00\x53\x6c\x55\x60\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x10\x40\x9f\x0a\x01\x00\x80\x29\xb6\x2a\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x08\xa0\x4f\x85\x00\x00\xc0\x14\x5b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x40\x00\x7d\x2a\x04\x00\x00\xe6\xd8\xaa\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x20\x80\x3e\x15\x02\x00\x00\x73\x6c\x55\x60\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\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\xa0\x4d\x04\x00\x00\xc0\x14\x43\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x04\xd0\xa7\x42\x00\x00\x60\x8e\xad\x0a\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\xfa\x54\x08\x00\x00\x4c\xb1\x55\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x20\x80\x3e\x15\x02\x00\x00\x53\x2c\x55\x60\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x10\x40\x9f\x0a\x01\x00\x80\x29\xb6\x2a\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x04\xd0\xa7\x42\x00\x00\x60\x8a\xa5\x0a\x2c\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\x02\xe8\x53\x21\x00\x00\x30\xc5\x52\x05\x16\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\x01\xf4\xa9\x10\x00\x00\x98\x62\xa9\x02\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x80\x00\xfa\x54\x08\x00\x00\x4c\xb1\x55\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x20\x80\x3e\x15\x02\x00\x00\x53\x6c\x55\x60\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\x80\x00\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x08\xa0\x4f\x85\x00\x00\xc0\x14\x5b\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\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\x04\xd0\xa7\x42\x00\x00\x60\x8e\xad\x0a\x2c\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\x02\xe8\x53\x21\x00\x00\x30\xc7\x56\x05\x16\x00\x00\x00\x00\x00\x00\x00\x00\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\xda\x44\x00\x00\x00\x4c\x31\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\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\x01\xf4\xa9\x10\x00\x00\x98\x62\xa9\x02\x0b\x00\x00\x00\x00\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\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\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\x80\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\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\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\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\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\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x02\x10\x40\x9f\x0a\x01\x00\x80\x29\x96\x2a\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\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\x08\x00\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x01\xf4\xa9\x10\x00\x00\x98\x62\xa9\x02\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x04\xd0\xa7\x42\x00\x00\x60\x8a\xa5\x0a\x2c\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\x02\xe8\x53\x21\x00\x00\x30\xc5\x52\x05\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\xfa\x54\x08\x00\x00\x4c\xb1\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x40\x00\x7d\x2a\x04\x00\x00\xa6\x58\xaa\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x20\x80\x3e\x15\x02\x00\x00\x53\x2c\x55\x68\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\x30\x82\x28\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\x8c\x20\x0a\x04\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\x42\xe8\x53\x21\x00\x00\x30\xc5\x76\x05\x16\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\x01\xf4\xa9\x10\x00\x00\x98\x62\xab\x07\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x80\x00\xfa\x54\x08\x00\x00\x4c\xb1\x55\x83\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x4d\x04\x00\x00\xc0\x14\x43\x15\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x40\x00\x7d\x2a\x04\x00\x00\xe6\xd8\xaa\xc0\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\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\x40\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x40\x00\x7d\x2a\x04\x00\x00\xe6\xd8\xaa\xc0\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\x04\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x20\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\xe8\x53\x21\x00\x00\x30\xc7\x56\x05\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\x20\x00\x01\xf4\xa9\x10\x00\x00\x98\x63\xab\x02\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x08\xa2\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\xc3\x7b\xbf\xcf\x9d\x00\x00\xc0\x14\x5b\x95\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x10\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x08\xa2\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\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\x18\x41\x14\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\x8c\x20\x0a\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\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\x01\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\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\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x08\xa2\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\x60\x04\x51\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x74\x78\xef\xf7\xb9\x13\x00\x00\x98\x62\xab\x42\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\xda\x44\x00\x00\x00\x4c\x31\x54\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x08\xa2\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\x01\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\x30\x82\x28\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\x40\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\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\x06\x04\x05\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\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\x02\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\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\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\x20\x00\x80\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\x80\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x01\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\x30\x82\x28\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x01\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\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\x40\x00\x02\xe8\x53\x21\x00\x00\x30\xc5\x56\x05\x16\x00\x00\x00\x00\x00\x00\x00\x00\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\x88\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\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\x04\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\x10\x80\x00\xfa\x54\x08\x00\x00\xcc\xb1\x55\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x40\x00\x7d\x2a\x04\x00\x00\xe6\xd8\xaa\xc0\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\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\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\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\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\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\x20\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\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\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x80\x00\xfa\x54\x08\x00\x00\xcc\xb1\x55\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x02\xe8\x53\x21\x00\x00\x30\xc7\x56\x05\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x22\x00\x00\x00\xa6\x18\xaa\xc0\x02\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\x41\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\x02\x10\x40\x9f\x0a\x01\x00\x80\x39\xb6\x7a\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x08\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\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\x02\x40\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\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\x08\xa0\x4f\x85\x00\x00\xc0\x14\x4b\x15\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x01\xf4\xa9\x10\x00\x00\x98\x62\xa9\x42\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x40\x00\x7d\x2a\x04\x00\x00\xe6\xd8\xaa\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x80\x00\xfa\x54\x08\x00\x00\xcc\xb1\x55\x81\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x40\x10\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\x80\x00\x04\xd0\xa7\x42\x00\x00\x60\x8e\xad\x0a\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x10\x04\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x08\x40\x00\x7d\x2a\x04\x00\x00\xa6\x58\xaa\xd0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\xe8\x53\x21\x00\x00\x30\xc7\x56\x05\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\xa0\x4f\x85\x00\x00\xc0\x14\x4b\x15\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\x40\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\x20\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\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\x40\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x08\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\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\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\x01\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\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\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\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\x08\x40\x00\x7d\x2a\x04\x00\x00\xe6\xd8\xaa\xc0\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\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\x01\x08\xa0\x4f\x85\x00\x00\xc0\x1c\x5b\x15\x58\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\x04\xd0\xa7\x42\x00\x00\x60\x8e\xad\x0a\x2c\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x80\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x50\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\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\x05\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\x03\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\x80\x01\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\x08\x40\x00\x7d\x2a\x04\x00\x00\xe6\xd8\xaa\xc0\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\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\x02\x10\x40\x9f\x0a\x01\x00\x80\x39\xb6\x2a\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x40\x00\x02\xe8\x53\x21\x00\x00\x30\xc7\x56\x05\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x04\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\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\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\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\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\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\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\xe8\x53\x21\x00\x00\x30\xc7\x56\x05\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x22\x00\x00\x00\xa6\x18\xaa\xc0\x02\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\x41\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x8f\xef\xff\x3e\x77\x02\x00\x00\x53\x6c\x55\x68\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\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\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\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\x01\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\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\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\x10\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x04\x01\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\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\x40\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\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\x08\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\x04\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\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\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\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\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\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\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\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\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\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\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\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\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\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\x80\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x01\x00\x10\x04\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x40\x00\x7d\x2a\x04\x00\x00\xe6\xd8\xea\xc1\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\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\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\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\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x80\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x40\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x01\x40\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\xa0\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\x60\x00\x50\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\x30\x00\x28\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\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\xc0\x76\x78\xef\xf7\xb9\x13\x00\x00\x98\x62\xab\x52\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xc7\xf7\x7f\x9f\x3b\x01\x00\x80\x29\xb6\x2a\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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_tokensParser","%start_exprParser","%start_exprWhereParser","%start_moduleParser","%start_moduleNameParser","%start_funclauseParser","%start_holeContentParser","Tokens","TokensR","Token","File","maybe_vclose","close","semi","beginImpDir","Int","Id","SpaceIds","DoubleCloseBrace","MaybeDottedId","MaybeDottedIds","ArgIds","ModalArgIds","Attribute","Attributes","Attributes1","QId","ModuleName","BId","SpaceBIds","CommaBIds","CommaBIdAndAbsurds","BIdsWithHiding","PragmaStrings","PragmaString","Strings","ForeignCode","PragmaName","PragmaQName","PragmaQNames","Expr","Expr1","WithExprs","Application","Expr2","LetBody","ExtendedOrAbsurdLam","Application3","Application3PossiblyEmpty","Expr3Curly","Expr3NoCurly","ExprOrAttr","Expr3","RecordAssignments","RecordAssignments1","RecordAssignment","ModuleAssignment","FieldAssignments","FieldAssignments1","FieldAssignment","TeleArrow","Telescope1","TypedBindings","TypedBinding","TBind","ModalTBind","TBindWithHiding","ModalTBindWithHiding","LamBindings","AbsurdLamBindings","LamBinds","LamBindsAbsurd","NonAbsurdLamClause","AbsurdLamClause","LamClause","LamClauses","LamWhereClauses","ForallBindings","TypedUntypedBindings1","TypedUntypedBindings","DomainFreeBinding","DomainFreeBindingAbsurd","DoStmts","DoStmt","DoWhere","ImportDirective","ImportDirectives","ImportDirective1","Using","Hiding","RenamingDir","Renamings","Renaming","ImportName_","ImportName","CommaImportNames","CommaImportNames1","LHS","WithExpressions","RewriteEquations","HoleContent","WhereClause","ExprWhere","Declaration","TypeSigs","ArgTypeSigs","FunClause","RHS","Data","DataSig","Record","RecordSig","RecordConstructorName","Infix","Fields","Generalize","Mutual","Abstract","Private","Instance","Macro","Postulate","Primitive","UnquoteDecl","Syntax","PatternSyn","PatternSynArgs","SimpleIds","HoleNames","HoleName","SimpleTopHole","SimpleHole","SimpleId","MaybeOpen","Open","OpenArgs","ModuleApplication","ModuleMacro","Module","Underscore","TopLevel","Pragma","DeclarationPragma","OptionsPragma","BuiltinPragma","RewritePragma","ForeignPragma","CompilePragma","StaticPragma","InlinePragma","NoInlinePragma","InjectivePragma","DisplayPragma","EtaPragma","NoTerminationCheckPragma","NonTerminatingPragma","TerminatingPragma","MeasurePragma","CatchallPragma","ImpossiblePragma","NoPositivityCheckPragma","NoUniverseCheckPragma","PolarityPragma","WarningOnUsagePragma","Polarities","Polarity","TypeSignatures0","TypeSignatures","TypeSignatures1","ArgTypeSignatures","ArgTypeSignatures1","ArgTypeSignaturesOrEmpty","ArgTypeSignatures0","RecordDeclarations","RecordDirectives","RecordDirective","RecordEta","RecordInduction","Declarations","Declarations0","Declarations1","TopDeclarations","'abstract'","'codata'","'coinductive'","'constructor'","'data'","'eta-equality'","'field'","'forall'","'variable'","'hiding'","'import'","'in'","'inductive'","'infix'","'infixl'","'infixr'","'instance'","'overlap'","'let'","'macro'","'module'","'mutual'","'no-eta-equality'","'open'","'pattern'","'postulate'","'primitive'","'private'","'Prop'","'public'","'quote'","'quoteContext'","'quoteGoal'","'quoteTerm'","'record'","'renaming'","'rewrite'","'Set'","'syntax'","'tactic'","'to'","'unquote'","'unquoteDecl'","'unquoteDef'","'using'","'where'","'do'","'with'","'BUILTIN'","'CATCHALL'","'DISPLAY'","'ETA'","'FOREIGN'","'COMPILE'","'IMPOSSIBLE'","'INJECTIVE'","'INLINE'","'NOINLINE'","'MEASURE'","'NO_TERMINATION_CHECK'","'NO_POSITIVITY_CHECK'","'NO_UNIVERSE_CHECK'","'NON_TERMINATING'","'OPTIONS'","'POLARITY'","'WARNING_ON_USAGE'","'REWRITE'","'STATIC'","'TERMINATING'","setN","propN","tex","comment","'...'","'..'","'.'","';'","':'","'='","'_'","'?'","'->'","'\\\\'","'@'","'|'","'('","')'","'(|'","'|)'","'{{'","'}}'","'{'","'}'","vopen","vclose","vsemi","'{-#'","'#-}'","id","q_id","string","literal","%eof"]+        bit_start = st * 287+        bit_end = (st + 1) * 287+        read_bit = readArrayBit happyExpList+        bits = map read_bit [bit_start..bit_end - 1]+        bits_indexed = zip bits [0..286]+        token_strs_expected = concatMap f bits_indexed+        f (False, _) = []+        f (True, nr) = [token_strs !! nr]++happyActOffsets :: HappyAddr+happyActOffsets = HappyA# "\x00\x00\x53\x0c\x53\x0c\xb2\xff\x4d\x00\x3c\x0f\x13\x09\x00\x00\x66\x05\xc4\xff\x00\x00\x10\x14\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x9d\x0c\xe9\x0c\xeb\xff\x00\x00\xf0\x02\x00\x00\xe1\xff\x14\x06\x3c\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x5a\x14\x22\x12\x00\x00\x75\x14\x00\x00\x7d\x00\x00\x00\x00\x00\x00\x00\x11\x01\xbd\x14\x00\x00\x00\x00\xbb\x01\x49\x03\x48\x07\xe9\x0c\x92\x07\x5d\x09\x00\x00\x00\x00\x00\x00\x3c\x0f\xc4\x00\xbf\x00\x25\x02\x92\x00\xd8\x14\xaa\x09\xdf\x07\xf4\x09\x00\x00\x00\x00\x92\x00\x92\x00\xff\x04\x10\x00\x92\x00\x92\x00\x92\x00\x00\x00\xfa\x00\xde\x00\x8e\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\x63\x01\x00\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x01\x22\x01\x22\x01\x47\x01\x71\x01\x5b\x01\x5b\x01\x5b\x01\x78\x01\x78\x01\x02\x01\x78\x01\xa4\x00\x25\x01\x81\x01\xc3\x01\xc6\x01\x20\x15\xb1\x01\xc7\xff\xb1\x01\x8a\x0a\x04\x02\x00\x00\x00\x00\xe8\x00\x00\x00\x37\x02\x40\x02\x00\x00\x00\x00\x10\x00\xe9\x0c\xe9\x0c\x22\x12\x6a\x02\x00\x00\x25\x02\x86\x0f\x61\x02\x65\x02\x00\x00\xbc\xff\x5b\x02\x60\x02\x7c\x02\xe8\x00\xe8\x00\x77\x02\xd0\x0f\xa7\x02\xbe\xff\xa8\x02\xaf\x02\xb7\x02\xbe\x02\x75\x02\x00\x00\xe9\x0c\x00\x00\x00\x00\x7f\x04\xe9\x0c\x00\x00\xdf\x02\x00\x00\x17\x06\xae\x05\xe9\x02\xa6\x02\x41\x03\x00\x00\x41\x0a\x8b\x0a\xd8\x0a\x25\x0b\x2c\x08\x6f\x0b\x22\x12\x6c\x12\x6c\x12\xe9\x0c\x0c\x03\x3b\x15\x00\x00\xed\x02\x75\x02\x7e\x03\x8a\x03\xfe\x06\x7a\x06\xe9\x0c\x36\x03\x7a\x06\x00\x00\x33\x0d\x1a\x10\x1a\x10\x00\x00\xc3\x02\x7d\x0d\x1a\x10\x1a\x10\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x0d\xc7\x0d\x3e\x03\x3b\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x0d\x00\x00\x00\x00\x1a\x10\x00\x00\xb6\x12\x64\x10\x00\x00\xb6\x12\x00\x13\x00\x13\xae\x10\x3b\x03\xae\x10\x11\x02\xae\x10\x45\x03\x47\x03\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\xc7\x0d\xc7\x0d\x63\x03\x3b\x15\x5e\x03\x00\x00\x74\x03\x00\x00\x00\x00\x64\x03\x4a\x13\xac\x03\x1d\x00\x93\x01\x8c\x03\xe8\x00\x9c\x03\xa8\x03\xe8\x00\x9f\x03\x7b\x00\x8f\x03\xf8\x10\x00\x00\xaf\x01\x7d\x01\x4a\x13\xb9\x03\xdc\x03\xc7\x03\xcf\x03\x00\x00\x94\x13\x94\x13\x00\x00\x94\x13\x94\x13\x44\x11\xe0\x06\xd1\x03\xe0\x06\xbc\x0b\x06\x0c\x11\x0e\x00\x00\x00\x00\xd3\x03\x83\x15\xf8\xff\x00\x00\x00\x00\x00\x00\x5e\x0e\xd9\x03\x00\x00\x00\x00\x00\x00\x75\x01\x00\x00\x00\x00\x5e\x0e\xa1\x01\xe7\x03\x10\x00\x00\x00\x5e\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\xff\xcc\x03\xeb\x03\xfb\x03\xfe\x03\x18\x04\x1f\x04\x22\x04\x22\x04\x22\x04\x3a\x04\x2b\x04\x49\x04\x4e\x04\x55\x04\x5d\x04\x62\x04\x75\x04\x79\x04\x8d\x04\x92\x04\x98\x04\xfa\x03\x35\x04\x5e\x0e\xc8\x03\xe3\x06\x00\x00\x00\x00\x99\x04\x00\x00\x00\x00\x1a\x00\x00\x00\xd4\x09\xa6\x04\x00\x00\x21\x0a\x21\x0a\x00\x00\x00\x00\x00\x00\xb3\x01\x00\x00\xb3\x01\xb3\x01\x00\x00\xb6\x01\x00\x00\xe1\x02\x21\x0a\x21\x0a\x00\x00\x00\x00\x00\x00\xa1\x02\xfe\x06\x00\x00\x98\x06\x00\x00\x66\x04\xe3\x04\xb8\x04\xb8\x04\x00\x00\x9e\x15\x21\x0a\x7e\x00\x21\x0a\x88\x00\xcf\x04\x45\x02\x00\x00\xe1\x00\xce\x04\x00\x00\x00\x00\xe1\x00\xb3\x01\x00\x00\x00\x00\x00\x00\x09\x05\x11\x00\x21\x0a\x00\x00\xfb\x04\x00\x00\x00\x05\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x8e\x11\x53\x02\x00\x00\x00\x00\x00\x00\xfe\x04\xe9\xff\xe9\xff\x00\x00\x00\x00\x5e\x0e\x5e\x0e\x00\x00\x00\x00\xf2\x04\x00\x00\x00\x00\xf4\x04\xf3\x04\xf9\x04\x00\x00\x00\x00\xf8\x04\xfc\x04\x00\x00\x00\x00\x00\x00\x00\x00\x02\x05\x74\x05\x76\x05\x7c\x05\x00\x00\x85\x05\xe0\x02\x93\x05\x97\x05\x00\x00\x9a\x05\x9a\x05\x00\x00\x00\x00\x5e\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x0e\x00\x00\x00\x00\x9e\x15\x59\x01\x79\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x00\xe7\x00\x11\x02\x07\x01\x11\x02\x00\x00\xb1\x05\xd8\x11\x00\x00\x00\x00\xd8\x11\x00\x00\x5e\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x0e\xa8\x0e\x00\x00\x00\x00\xa9\x05\x00\x00\xc8\x05\xbe\x05\x00\x00\xd1\x05\xa1\x02\x00\x00\x59\x01\xf2\x0e\x00\x00\x00\x00\x00\x00\x00\x00\xca\x05\x00\x00\x15\x02\x00\x00\xc6\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x01\x00\x00\x00\x00\x00\x00\xcf\x05\x00\x00\xd5\x05\xd8\x05\x00\x00\xc4\x05\x00\x00\xd8\x11\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x11\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x05\xee\x05\xf9\x05\x00\x00\x06\x06\xe0\x02\xe0\x02\x04\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x01\x0d\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x06\x27\x06\xb8\x01\xd6\x05\x2c\x06\xb9\x01\x00\x00\x1a\x06\x24\x00\x23\x06\xf2\x0e\x00\x00\x21\x06\xf2\x0e\xf2\x0e\x38\x06\x2b\x06\xa1\x02\x2b\x06\x00\x00\x00\x00\x28\x03\x3d\x06\x00\x00\x00\x00\x28\x03\x00\x00\x2f\x04\x00\x00\x00\x00\xc4\x02\x2f\x03\x8e\x00\x8e\x00\xf2\x0e\x2f\x06\xf2\x0e\x00\x00\x2f\x06\xf2\x0e\x00\x00\x59\x01\x00\x00\x00\x00\x00\x00\x61\x06\x00\x00\x62\x06\x00\x00\x00\x00\x8e\x00\x34\x06\x31\x06\x31\x06\xe8\x00\x00\x00\x31\x06\x31\x06\x00\x00\x31\x06\x31\x06\x00\x00\x00\x00\xf2\x0e\x00\x00\x00\x00\xe6\x15\x59\x01\x00\x00\x01\x03\x00\x00\x00\x00\x00\x00\x69\x06\x00\x00\xcc\x05\x39\x06\x00\x00\x49\x06\x50\x06\xe9\xff\x00\x00\x52\x06\x53\x06\xe9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x06\x00\x00\x4d\x06\x00\x00\x00\x00\x00\x00\x00\x00\x59\x01\x00\x00\x00\x00\xe1\x00\x00\x00\xee\xff\xfe\xff\xee\xff\x00\x00\x00\x00\x6f\x06\x5f\x06\x00\x00\x5a\x06\x5a\x06\x71\x06\x7e\x06\xa3\x06\x00\x00\x00\x00\x76\x06\x00\x00\x00\x00\xe0\x02\x00\x00\x72\x06\x00\x00\x6b\x06\x6b\x06\x7c\x06\x75\x06\x75\x06\x00\x00\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x77\x06\x00\x00\x00\x00\x7b\x06\x00\x00\x7d\x06\x59\x01\x00\x00\x00\x00\xc6\x08\x00\x00\x7f\x06\xe8\x00\x83\x06\xe8\x00\x2f\x04\x2f\x04\x00\x00\x85\x06\x85\x06\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x04\x2f\x04\x2f\x04\x2f\x04\xe8\x00\x00\x00\x00\x00\x32\x04\x00\x00\x00\x00\x00\x00\x32\x06\x8a\x06\x8e\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x06\x84\x06\xd1\x06\x00\x00\x00\x00\x00\x00\x00\x00\xee\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x87\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x06\x00\x00\x00\x00\x00\x00"#++happyGotoOffsets :: HappyAddr+happyGotoOffsets = HappyA# "\x68\x03\x3e\x19\xe5\x03\xea\x06\x95\x01\xdf\x13\xec\x13\xf0\x06\xf1\x06\x00\x00\x00\x00\x0f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x08\x5e\x19\x00\x00\x00\x00\x35\x03\x00\x00\x00\x00\x19\x03\x4a\x06\x00\x00\x00\x00\x00\x00\xed\x06\x00\x00\xce\x01\xe8\x07\x00\x00\x4e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x27\x04\x57\x01\x08\x03\x7e\x19\xc2\x16\xed\x16\x00\x00\x00\x00\x00\x00\x28\x14\x9b\x06\x00\x00\x96\x06\x00\x00\xc2\x00\x9e\x19\x1e\x19\xbe\x19\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x9f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x29\x03\xfb\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\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\x53\x03\xf9\x06\x02\x07\x6e\x06\x78\x06\x0d\x07\x1a\x07\x1b\x07\xab\x03\xbd\x03\x27\x00\xbf\x03\x7f\x02\x1e\x07\xc3\x03\xe0\x03\xe4\x03\xeb\x02\x28\x07\x93\x04\x9c\x04\x00\x00\x00\x00\x00\x00\x00\x00\x27\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\x06\xde\x19\xfe\x19\x35\x08\xdc\x06\x00\x00\xd4\x06\xf7\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x07\x33\x07\x00\x00\x62\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x06\x7f\x02\x00\x00\x1e\x1a\x00\x00\x00\x00\x68\x02\x3e\x1a\x00\x00\x00\x00\x00\x00\x99\x03\x00\x00\x00\x00\xca\x00\xce\x00\x00\x00\xa1\x03\x3d\x17\x7c\x03\x91\x16\x22\x18\x4c\x18\x71\x02\x73\x18\x7e\x18\x31\x16\x00\x00\xd3\x01\x00\x00\x00\x00\x4a\x07\x00\x00\x21\x07\x54\x02\xba\x03\x5e\x1a\x00\x00\xdf\x03\x00\x00\xa1\x03\x81\x17\xa0\x17\x00\x00\x00\x00\xc0\x03\xbf\x17\xde\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x1a\x9e\x1a\x00\x00\xa2\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x1a\x00\x00\x00\x00\x67\x1d\x00\x00\xb3\x09\xb7\x1d\x00\x00\xa4\x07\x9b\x18\xa6\x18\x72\x1d\x00\x00\x91\x1d\x36\x07\xa1\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x07\x00\x00\xde\x1a\xfe\x1a\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x82\x08\xff\x06\x46\x07\x47\x07\x00\x00\x4c\x07\x00\x00\x00\x00\x4e\x07\x00\x00\x00\x00\x00\x00\x1c\x09\x00\x00\x4f\x07\x56\x07\x6f\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x18\xce\x18\x00\x00\xeb\x18\xf6\x18\x08\x00\xa7\x03\x00\x00\x23\x04\xa1\x03\x62\x17\xfd\x17\x00\x00\x00\x00\x00\x00\x4a\x00\x40\x07\x00\x00\x00\x00\x00\x00\x1e\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x02\x00\x00\x00\x00\x3e\x1b\x5c\x02\x00\x00\x0e\x07\x00\x00\x5e\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x07\x00\x00\x00\x00\x00\x00\x52\x07\x57\x07\x5d\x07\x5f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x53\x07\x6d\x07\x6e\x07\x8a\x02\x71\x07\x00\x00\xb4\x04\x00\x00\x00\x00\x7e\x1b\x9b\x03\xee\x02\x00\x00\x00\x00\xfc\xff\x00\x00\x00\x00\xfd\xff\x00\x00\x2a\x01\x83\x07\x00\x00\x8e\x04\xf0\x04\x00\x00\x00\x00\x00\x00\x2f\x02\x00\x00\x84\x03\xa2\x03\x00\x00\x03\x00\x00\x00\xf9\xff\xf5\x04\xf4\x05\x00\x00\x00\x00\x00\x00\xe6\x03\xe8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x04\x31\x04\x00\x00\xba\x00\x89\x06\x00\x00\xc0\x06\x00\x00\x00\x00\x21\x04\x00\x00\xfd\x04\xef\x06\x4f\x02\x00\x00\x06\x05\xc1\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x05\x00\x00\x00\x00\x00\x00\x00\x00\x18\x17\x08\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x04\x7a\x04\x00\x00\x00\x00\x9e\x1b\xbe\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x07\x00\x00\xfa\x06\x00\x00\x00\x00\x7c\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x07\x84\x07\x00\x00\x89\x07\x00\x00\x87\x07\x88\x07\x00\x00\x00\x00\xde\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x1b\x00\x00\x00\x00\xdf\x00\x24\x04\x1e\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x05\x00\x00\x9d\x07\x00\x00\x9e\x07\x00\x00\x00\x00\x2f\x01\x00\x00\x00\x00\xcb\x01\x00\x00\x1e\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x02\x00\x00\xe1\x04\x3e\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x02\xa5\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x07\x9c\x07\xa1\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x07\x00\x00\x00\x00\x43\x07\x00\x00\x27\x01\x00\x00\x24\x07\x7e\x1c\x00\x00\x3a\x00\x9e\x1c\xbe\x1c\x00\x00\x90\x04\x25\x00\xa1\x04\x00\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x43\x00\x00\x00\xb6\x03\x00\x00\x00\x00\xc3\x07\xc4\x07\x04\x01\x34\x02\xde\x1c\xb1\x04\xfe\x1c\x00\x00\x45\x05\x1e\x1d\x00\x00\xbd\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x02\x00\x00\xc9\x07\xca\x07\xcb\x07\x00\x00\x3e\x05\xf8\x05\x00\x00\xfc\x05\x0b\x06\x00\x00\x00\x00\x3e\x1d\x00\x00\x00\x00\x55\x01\x31\x07\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x01\x58\x07\x00\x00\x00\x00\x00\x00\x9d\x05\x00\x00\x00\x00\x00\x00\xad\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\x37\x07\x00\x00\x00\x00\x51\x06\x00\x00\x77\x00\xdb\x00\x44\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x07\xd1\x07\x00\x00\x00\x00\x00\x00\xcd\x07\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x07\x00\x00\x00\x00\x00\x00\x63\x07\x64\x07\x00\x00\x67\x07\x6c\x07\x00\x00\x00\x00\x60\x06\x00\x00\x00\x00\x00\x00\xe6\x07\x00\x00\xe7\x07\x00\x00\x00\x00\xc0\x05\x00\x00\x4d\x07\x74\x07\x00\x00\x00\x00\x1e\x19\x00\x00\x00\x00\xe9\x07\x00\x00\xec\x07\xd2\x03\xf4\x03\x00\x00\xc9\x05\xd4\x05\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x04\xc4\x04\xd8\x04\xe2\x04\xee\x07\x00\x00\x00\x00\xfc\xff\x00\x00\x00\x00\x00\x00\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x07\xf4\x07\x6e\x01\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x07\xfb\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#++happyAdjustOffset :: Happy_GHC_Exts.Int# -> Happy_GHC_Exts.Int#+happyAdjustOffset off = off++happyDefActions :: HappyAddr+happyDefActions = HappyA# "\xf6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\xfe\x00\x00\xf8\xff\x67\xff\x6a\xff\x00\x00\x1d\xff\xa4\xfe\x4b\xff\x4a\xff\x48\xff\x47\xff\x44\xff\x00\x00\x1a\xff\x19\xff\x1e\xff\x40\xff\x00\x00\x00\x00\x0b\xff\x09\xff\xa3\xfe\x00\x00\x00\x00\x00\x00\x2f\xff\x2d\xff\x2b\xff\x00\x00\x2c\xff\x00\x00\x00\x00\x2e\xff\x00\x00\x2a\xff\x00\x00\x29\xff\x28\xff\x1f\xff\x00\x00\x00\x00\x30\xff\x31\xff\x00\x00\x00\x00\x50\xfe\x00\x00\x00\x00\x00\x00\x86\xff\x68\xff\x1c\xff\x00\x00\xa6\xfe\x00\x00\x7f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xff\x66\xff\x00\x00\x00\x00\x50\xfe\xa2\xfe\x00\x00\x00\x00\x00\x00\x9e\xfe\x00\x00\x00\x00\xf5\xfd\x9c\xfe\x9b\xfe\x9a\xfe\x99\xfe\x98\xfe\x97\xfe\x9d\xfe\x96\xfe\x95\xfe\x94\xfe\x93\xfe\x92\xfe\x91\xfe\x90\xfe\x8f\xfe\x88\xfe\x8a\xfe\x89\xfe\x00\x00\x8e\xfe\x8d\xfe\x8c\xfe\x8e\xff\x8b\xfe\x42\xfe\x2d\xfe\x41\xfe\x40\xfe\x3e\xfe\x3f\xfe\x3d\xfe\x3b\xfe\x3a\xfe\x3c\xfe\x32\xfe\x31\xfe\x36\xfe\x37\xfe\x38\xfe\x34\xfe\x33\xfe\x39\xfe\x30\xfe\x2f\xfe\x2e\xfe\x35\xfe\xf3\xfd\x43\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\xff\x24\xff\x00\x00\x83\xff\x00\x00\x00\x00\x25\xff\x22\xff\xa2\xfe\x00\x00\x00\x00\x00\x00\xa8\xfe\x69\xff\x7f\xfe\x00\x00\x1d\xff\x00\x00\x61\xff\x60\xff\x00\x00\x00\x00\x30\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x51\xfe\x6d\xff\x00\x00\x65\xff\xd2\xfe\xea\xfe\x00\x00\x38\xff\x00\x00\xf5\xfe\xf2\xfe\xeb\xfe\x00\x00\x00\x00\x00\x00\x64\xff\x50\xfe\x00\x00\x35\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\xff\x37\xff\xa5\xfe\x00\x00\x18\xff\x00\x00\x3b\xff\x50\xfe\xd7\xfe\x00\x00\x00\x00\xd8\xfe\xd3\xfe\x50\xfe\x00\x00\x00\x00\x0a\xff\x00\x00\x50\xfe\x00\x00\x00\x00\x0c\xff\x4f\xff\x46\xff\x36\xff\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\xf5\xff\xf4\xff\xf3\xff\xf2\xff\xf1\xff\xf0\xff\xef\xff\xee\xff\xed\xff\xec\xff\xeb\xff\xea\xff\xe9\xff\xe8\xff\xe7\xff\xe6\xff\xe5\xff\xe4\xff\xe3\xff\xe2\xff\xe1\xff\xe0\xff\xdf\xff\xde\xff\xdd\xff\xdc\xff\xdb\xff\xda\xff\xd9\xff\xd8\xff\xd7\xff\xd6\xff\xd5\xff\xd4\xff\xd3\xff\xd2\xff\xd1\xff\xd0\xff\xcf\xff\xce\xff\xcd\xff\xcc\xff\xcb\xff\xca\xff\xc9\xff\xc8\xff\xc7\xff\xc6\xff\xc5\xff\xc4\xff\xc3\xff\xc2\xff\xc1\xff\xc0\xff\xbf\xff\xbe\xff\xbd\xff\xbc\xff\xbb\xff\xba\xff\xb9\xff\xb8\xff\xb7\xff\xb6\xff\xb5\xff\xb1\xff\xb4\xff\xb3\xff\xb2\xff\xb0\xff\xaf\xff\xae\xff\xad\xff\xac\xff\xab\xff\xaa\xff\xa9\xff\xa8\xff\xa7\xff\xa6\xff\xa5\xff\xa4\xff\xa3\xff\xa2\xff\xa1\xff\xa0\xff\x9f\xff\x9e\xff\x9d\xff\x9c\xff\x9b\xff\x9a\xff\x99\xff\x98\xff\x97\xff\x96\xff\x95\xff\x94\xff\x93\xff\x92\xff\x91\xff\x90\xff\x23\xff\x00\x00\x4c\xff\x4e\xff\x00\x00\x60\xff\x40\xff\x00\x00\x5b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x61\xff\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xff\xda\xfe\xdb\xfe\x43\xff\xd9\xfe\x00\x00\x42\xff\x00\x00\x00\x00\x67\xff\x4c\xfe\x00\x00\x17\xff\x16\xff\x13\xff\x14\xff\x11\xff\x00\x00\xc1\xfe\x00\x00\xc5\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\xfe\x00\x00\x40\xff\xde\xfe\x00\x00\x00\x00\x35\xff\xe8\xfe\x00\x00\xe7\xfe\xe9\xfe\xd1\xfe\x00\x00\x00\x00\xd0\xfe\x00\x00\x00\x00\x35\xff\xf1\xfe\xed\xfe\xf2\xfe\x50\xfe\x00\x00\x00\x00\xf6\xfe\x45\xff\xec\xfe\x4c\xfe\x3b\xff\xfc\xfe\x01\xff\x02\xff\x00\x00\x00\x00\x26\xff\xff\xfe\x00\xff\x00\x00\xfd\xfe\xfe\xfe\x00\x00\x00\x00\x00\x00\xa2\xfe\xa9\xfe\x00\x00\x49\xff\x81\xfe\x80\xfe\x83\xfe\x1b\xff\x82\xff\x27\xff\x33\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xff\x00\x00\x00\x00\x57\xff\x00\x00\x00\x00\x84\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd4\xfe\xf8\xfd\x6d\xfe\x00\x00\x69\xfe\x12\xfe\x00\x00\x6a\xfe\x63\xfe\x00\x00\x6f\xfe\xd4\xfe\xd4\xfe\x44\xfe\x6b\xfe\x6c\xfe\x00\x00\x87\xff\x00\x00\x00\x00\x70\xfe\x08\xfe\x71\xfe\x6c\xff\xd4\xfe\xd4\xfe\x6e\xfe\x8f\xff\x8d\xff\x00\x00\x50\xfe\x8a\xff\xf6\xfd\xa1\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xfd\x4c\xfe\xd4\xfe\x00\x00\xd4\xfe\x00\x00\x00\x00\x00\x00\x0c\xfe\x00\x00\x00\x00\x6c\xff\x09\xfe\x00\x00\x62\xff\x74\xfe\x73\xfe\x72\xfe\x00\x00\x00\x00\xd4\xfe\x62\xfe\x00\x00\x13\xfe\x00\x00\x0f\xfe\x00\x00\x8b\xff\x8c\xff\xf9\xfd\x00\x00\x11\xff\x00\x00\x5f\xfe\x5d\xfe\x58\xfe\x00\x00\x00\x00\x00\x00\x52\xfe\x68\xfe\x00\x00\x00\x00\x85\xff\x1e\xfe\x00\x00\x51\xff\x50\xff\x00\x00\x57\xff\x00\x00\x16\xfe\x52\xff\x00\x00\x5a\xff\x1f\xfe\x19\xfe\x1a\xfe\x20\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x1b\xfe\x00\x00\x55\xff\x00\x00\x5a\xff\x1c\xfe\x00\x00\x00\x00\xa7\xfe\x82\xfe\x00\x00\x5f\xff\x5d\xff\xfa\xfe\x5e\xff\x5c\xff\x00\x00\xf8\xfe\xfb\xfe\x4c\xfe\xbd\xfe\x00\x00\xef\xfe\xee\xfe\xf0\xfe\xf4\xfe\xf3\xfe\xe4\xfe\xe2\xfe\xe1\xfe\xdc\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\xfe\x00\x00\x35\xff\x3a\xff\x89\xff\x35\xff\x34\xff\x00\x00\x08\xff\x06\xff\x07\xff\x05\xff\x03\xff\x04\xff\x00\x00\xc4\xfe\x41\xff\xc2\xfe\x00\x00\x3d\xff\x00\x00\x00\x00\x10\xff\x0f\xff\x00\x00\x21\xff\xbd\xfe\x00\x00\x3f\xff\x3c\xff\xfa\xfd\xcf\xfe\x00\x00\xcb\xfe\x00\x00\xcd\xfe\x61\xff\x4d\xff\xcc\xfe\xca\xfe\xce\xfe\x0d\xff\x12\xff\xbf\xfe\xbd\xfe\xbb\xfe\xba\xfe\xb9\xfe\x00\x00\xbc\xfe\x00\x00\x00\x00\x15\xff\x00\x00\x20\xff\x35\xff\xc3\xfe\xe6\xfe\xdf\xfe\xe0\xfe\x00\x00\xc8\xfe\xc9\xfe\xc6\xfe\xc7\xfe\x39\xff\x35\xff\x1f\xff\x4e\xfe\x4b\xfe\xf7\xfe\xf9\xfe\x00\x00\x00\x00\x00\x00\x21\xfe\x00\x00\x55\xff\x55\xff\x5a\xff\x23\xfe\x25\xfe\x24\xfe\x1d\xfe\x59\xff\x2c\xfe\x00\x00\x00\x00\x56\xff\x29\xfe\x26\xfe\x66\xfe\x67\xfe\x00\x00\x55\xfe\x00\x00\x00\x00\x55\xfe\x00\x00\x5e\xfe\x00\x00\x67\xff\x00\x00\x00\x00\x11\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xff\x0b\xfe\x6c\xff\x00\x00\x84\xfe\x0e\xfe\x6c\xff\x7f\xff\x7b\xff\x6e\xff\x6b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\xfe\x00\x00\x00\x00\xd5\xfe\xbd\xfe\xa0\xfe\x9f\xfe\x4f\xfe\x00\x00\x7b\xfe\x7a\xfe\x7c\xfe\x86\xfe\x7d\xff\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\x00\x00\x00\x00\x81\xff\x00\x00\x00\x00\x7c\xff\x0d\xfe\x00\x00\x0a\xfe\x45\xfe\x4c\xfe\xbd\xfe\x46\xfe\x00\x00\x64\xfe\x87\xfe\x10\xfe\x77\xfe\x78\xfe\x04\xfe\x65\xfe\x61\xfe\x00\x00\x00\x00\x00\x00\x5b\xfe\x00\x00\x00\x00\x00\x00\x5c\xfe\x17\xfe\x15\xfe\x18\xfe\x14\xfe\x00\x00\x54\xff\x00\x00\x28\xfe\x22\xfe\x2a\xfe\x2b\xfe\xbd\xfe\xdd\xfe\xe5\xfe\x00\x00\x0e\xff\xad\xfe\x88\xff\xad\xfe\xbe\xfe\xaf\xfe\xab\xfe\x00\x00\xac\xfe\x00\x00\x00\x00\x00\x00\xb3\xfe\x00\x00\x88\xff\xb5\xfe\x00\x00\xc0\xfe\x4d\xfe\x55\xff\x27\xfe\x00\x00\x55\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xfe\x01\xfe\x00\x00\x02\xfe\xff\xfd\x00\xfe\x00\x00\xfb\xfd\x00\x00\xfe\xfd\xfc\xfd\x00\x00\xfd\xfd\x00\x00\xbd\xfe\x48\xfe\x49\xfe\x00\x00\x85\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x79\xff\x77\xff\x7e\xff\x00\x00\x00\x00\x7d\xfe\x7e\xfe\x78\xff\x7a\xff\x73\xff\x75\xff\x6f\xff\x71\xff\x1f\xff\x47\xfe\x79\xfe\x00\x00\x76\xfe\x05\xfe\x07\xfe\x50\xfe\x00\x00\x00\x00\x59\xfe\x54\xfe\x53\xfe\x5a\xfe\x53\xff\xb8\xfe\x00\x00\x00\x00\x88\xff\xb6\xfe\xb1\xfe\xae\xfe\xb7\xfe\x00\x00\xaa\xfe\xb4\xfe\xb2\xfe\xb0\xfe\x56\xfe\x57\xfe\x03\xfe\x00\x00\x00\x00\x4a\xfe\x72\xff\x70\xff\x76\xff\x74\xff\x00\x00\x06\xfe\x75\xfe"#++happyCheck :: HappyAddr+happyCheck = HappyA# "\xff\xff\x05\x00\x05\x00\x15\x00\x0c\x00\x09\x00\x09\x00\x0a\x00\x0f\x00\x43\x00\x11\x00\x4f\x00\x10\x00\x4f\x00\x12\x00\x13\x00\x5e\x00\x09\x00\x0f\x00\x15\x00\x11\x00\x57\x00\x4f\x00\x5b\x00\x54\x00\x5d\x00\x00\x00\x13\x00\x09\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x09\x00\x27\x00\x28\x00\x15\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x63\x00\x65\x00\x24\x00\x25\x00\x09\x00\x27\x00\x09\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x09\x00\x09\x00\x13\x00\x14\x00\x13\x00\x14\x00\x53\x00\x52\x00\x2e\x00\x2e\x00\x13\x00\x13\x00\x14\x00\x09\x00\x0a\x00\x32\x00\x33\x00\x34\x00\x67\x00\x41\x00\x42\x00\x43\x00\x63\x00\x45\x00\x0f\x00\x57\x00\x11\x00\x63\x00\x0f\x00\x09\x00\x11\x00\x57\x00\x5a\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x62\x00\x60\x00\x13\x00\x61\x00\x63\x00\x4f\x00\x65\x00\x66\x00\x67\x00\x68\x00\x62\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x4f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x54\x00\x5f\x00\x7e\x00\x7f\x00\x5f\x00\x63\x00\x82\x00\x83\x00\x09\x00\x4f\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x09\x00\x5e\x00\x61\x00\xa3\x00\x84\x00\xa1\x00\x97\x00\x10\x00\x62\x00\x12\x00\x13\x00\x09\x00\x62\x00\x81\x00\x09\x00\xa5\x00\xad\x00\x63\x00\x84\x00\x2e\x00\x80\x00\x13\x00\x81\x00\x63\x00\x64\x00\x22\x00\x23\x00\x24\x00\x25\x00\x2e\x00\x27\x00\x28\x00\x15\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x52\x00\x24\x00\x25\x00\x55\x00\x27\x00\x09\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x4e\x00\x80\x00\x09\x00\x4e\x00\x13\x00\x57\x00\x58\x00\x59\x00\x33\x00\x34\x00\x09\x00\x2e\x00\x13\x00\x4e\x00\x09\x00\x5d\x00\x4b\x00\x4c\x00\x5e\x00\x41\x00\x42\x00\x43\x00\x15\x00\x45\x00\x00\x00\x07\x00\x15\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x09\x00\x25\x00\x5a\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x60\x00\x63\x00\x13\x00\x63\x00\x4e\x00\x65\x00\x66\x00\x67\x00\x68\x00\x67\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x63\x00\x64\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x09\x00\x7e\x00\x7f\x00\x0c\x00\x0d\x00\x82\x00\x83\x00\x55\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x09\x00\x4d\x00\x54\x00\x55\x00\x56\x00\x97\x00\x09\x00\x10\x00\x4e\x00\x12\x00\x13\x00\x09\x00\x57\x00\x80\x00\x59\x00\x5e\x00\xad\x00\xae\x00\x15\x00\x5f\x00\x60\x00\x13\x00\x5b\x00\x5d\x00\x5d\x00\x22\x00\x23\x00\x24\x00\x25\x00\x50\x00\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x50\x00\x24\x00\x25\x00\x4e\x00\x27\x00\x09\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x63\x00\x09\x00\x80\x00\x09\x00\x13\x00\x38\x00\x0a\x00\x5d\x00\x63\x00\x64\x00\x56\x00\x13\x00\x3f\x00\x13\x00\x5a\x00\x62\x00\x5c\x00\x0b\x00\x65\x00\x41\x00\x42\x00\x43\x00\x49\x00\x4a\x00\x07\x00\x28\x00\x1e\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5f\x00\x24\x00\x5a\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2c\x00\x60\x00\x63\x00\x2d\x00\x63\x00\x63\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x57\x00\x58\x00\x59\x00\x09\x00\x78\x00\x5e\x00\x77\x00\x7e\x00\x7f\x00\x7d\x00\x5e\x00\x82\x00\x83\x00\x13\x00\x14\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x66\x00\x54\x00\x55\x00\x56\x00\x50\x00\x97\x00\x11\x00\x12\x00\x09\x00\x4d\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\x5e\x00\x10\x00\xad\x00\x12\x00\x13\x00\x09\x00\x80\x00\x5e\x00\x09\x00\x63\x00\x64\x00\x5d\x00\x4d\x00\x09\x00\x60\x00\x13\x00\x5e\x00\x4d\x00\x13\x00\x22\x00\x23\x00\x24\x00\x25\x00\x13\x00\x27\x00\x28\x00\x2e\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x60\x00\x24\x00\x25\x00\x50\x00\x27\x00\x60\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2b\x00\x2c\x00\x28\x00\x4d\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x4b\x00\x4c\x00\x50\x00\x63\x00\x64\x00\x4b\x00\x4c\x00\x50\x00\x50\x00\x54\x00\x50\x00\x41\x00\x42\x00\x43\x00\x60\x00\x5a\x00\x56\x00\x5c\x00\x09\x00\x63\x00\x5a\x00\x63\x00\x5c\x00\x09\x00\x63\x00\x5a\x00\x63\x00\x63\x00\x13\x00\x63\x00\x10\x00\x60\x00\x5e\x00\x13\x00\x63\x00\x5e\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x09\x00\x7e\x00\x7f\x00\x0c\x00\x0d\x00\x82\x00\x83\x00\x15\x00\x16\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x09\x00\x0f\x00\x4e\x00\x11\x00\x5d\x00\x97\x00\x4e\x00\x10\x00\x09\x00\x12\x00\x13\x00\xa8\x00\xa9\x00\xaa\x00\x09\x00\x5b\x00\xad\x00\x5d\x00\x13\x00\x5b\x00\x09\x00\x5d\x00\x4e\x00\x4f\x00\x13\x00\x22\x00\x23\x00\x24\x00\x25\x00\x09\x00\x27\x00\x28\x00\x15\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x7a\x00\x7b\x00\x13\x00\x7d\x00\x24\x00\x25\x00\x09\x00\x27\x00\x19\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x4b\x00\x4c\x00\x13\x00\x14\x00\x5d\x00\x24\x00\x25\x00\x57\x00\x27\x00\x54\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5a\x00\x38\x00\x5c\x00\x4f\x00\x41\x00\x42\x00\x43\x00\x1c\x00\x3f\x00\x63\x00\x56\x00\x20\x00\x09\x00\x3b\x00\x5a\x00\x5a\x00\x5c\x00\x4f\x00\x49\x00\x4a\x00\x4e\x00\x60\x00\x13\x00\x63\x00\x63\x00\x5d\x00\x65\x00\x66\x00\x67\x00\x68\x00\x5d\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x4f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x59\x00\x09\x00\x7e\x00\x7f\x00\x0c\x00\x0d\x00\x82\x00\x83\x00\x63\x00\x64\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x09\x00\x11\x00\x12\x00\x09\x00\x4e\x00\x50\x00\x09\x00\x10\x00\x97\x00\x12\x00\x13\x00\x56\x00\x09\x00\x13\x00\x57\x00\x5a\x00\xad\x00\x5c\x00\x15\x00\x63\x00\x64\x00\x57\x00\x13\x00\x14\x00\x63\x00\x22\x00\x23\x00\x24\x00\x25\x00\x57\x00\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2b\x00\x2c\x00\x10\x00\x56\x00\x12\x00\x13\x00\x5e\x00\x5a\x00\x5a\x00\x5c\x00\x5c\x00\x19\x00\x09\x00\x2f\x00\x30\x00\x31\x00\x38\x00\x63\x00\x34\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x15\x00\x27\x00\x28\x00\x52\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x48\x00\x49\x00\x4a\x00\x11\x00\x12\x00\x4b\x00\x4c\x00\x35\x00\x36\x00\x37\x00\x38\x00\x61\x00\x5a\x00\x3b\x00\x3c\x00\x65\x00\x56\x00\x5e\x00\x60\x00\x5c\x00\x5a\x00\x63\x00\x5c\x00\x65\x00\x66\x00\x67\x00\x68\x00\x38\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x46\x00\x47\x00\x55\x00\x49\x00\x4a\x00\x63\x00\x64\x00\x7e\x00\x7f\x00\x00\x00\x01\x00\x82\x00\x83\x00\x37\x00\x38\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x09\x00\x7e\x00\x7f\x00\x52\x00\x5a\x00\x0c\x00\x5c\x00\x10\x00\x09\x00\x12\x00\x13\x00\x52\x00\x50\x00\x63\x00\x17\x00\x18\x00\xad\x00\x0c\x00\x56\x00\x5d\x00\x15\x00\x16\x00\x5a\x00\x57\x00\x5c\x00\x57\x00\x56\x00\x24\x00\x25\x00\x09\x00\x27\x00\x63\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x09\x00\x09\x00\x63\x00\x64\x00\x15\x00\x66\x00\x09\x00\x10\x00\x4f\x00\x12\x00\x13\x00\x39\x00\x3a\x00\x15\x00\x16\x00\x18\x00\x19\x00\x5d\x00\x15\x00\x41\x00\x42\x00\x09\x00\x44\x00\x4d\x00\x0c\x00\x09\x00\x0e\x00\x24\x00\x25\x00\x63\x00\x27\x00\x09\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x15\x00\x10\x00\x38\x00\x12\x00\x13\x00\xab\x00\xac\x00\x15\x00\x16\x00\x3f\x00\x19\x00\x2e\x00\x09\x00\x3b\x00\x3c\x00\x0c\x00\x38\x00\x0e\x00\x52\x00\x49\x00\x4a\x00\x24\x00\x25\x00\x3f\x00\x27\x00\x09\x00\x5d\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x09\x00\x09\x00\x49\x00\x4a\x00\x38\x00\x57\x00\x15\x00\x10\x00\x57\x00\x12\x00\x13\x00\x13\x00\x14\x00\x3b\x00\x3c\x00\x09\x00\xab\x00\xac\x00\x0c\x00\x47\x00\x0e\x00\x49\x00\x4a\x00\x5d\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x52\x00\x27\x00\x28\x00\x32\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x97\x00\x79\x00\x7a\x00\x7b\x00\x38\x00\x7d\x00\x52\x00\x35\x00\x36\x00\x37\x00\x38\x00\x56\x00\x7e\x00\x7f\x00\x52\x00\x5a\x00\x52\x00\x5c\x00\x52\x00\x47\x00\x4e\x00\x49\x00\x4a\x00\x09\x00\x63\x00\x09\x00\x0c\x00\x62\x00\x0e\x00\x09\x00\x10\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x04\x00\x05\x00\x15\x00\x07\x00\x08\x00\x09\x00\x15\x00\x0b\x00\x7e\x00\x7f\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x5f\x00\x13\x00\x14\x00\x15\x00\x16\x00\x4f\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x65\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xab\x00\xac\x00\x26\x00\x27\x00\x28\x00\x38\x00\x2a\x00\x2b\x00\x2c\x00\x38\x00\x65\x00\x2f\x00\x3f\x00\x65\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xab\x00\xac\x00\xab\x00\xac\x00\x49\x00\x4a\x00\xab\x00\xac\x00\x49\x00\x4a\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x46\x00\x47\x00\x4b\x00\x4c\x00\x4a\x00\x65\x00\x4c\x00\x9f\x00\xa0\x00\x62\x00\x50\x00\x51\x00\x4f\x00\x53\x00\x54\x00\x65\x00\x56\x00\x5a\x00\x58\x00\x5c\x00\x5a\x00\x62\x00\x5c\x00\xab\x00\xac\x00\x5f\x00\x63\x00\x61\x00\x2e\x00\x63\x00\x64\x00\x09\x00\x66\x00\x00\x00\x01\x00\x02\x00\x09\x00\x0a\x00\x05\x00\x65\x00\x07\x00\x08\x00\x09\x00\x15\x00\x0b\x00\x09\x00\x0a\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x62\x00\x13\x00\x14\x00\x15\x00\x16\x00\x62\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x62\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x09\x00\x0a\x00\x26\x00\x27\x00\x28\x00\x65\x00\x2a\x00\x2b\x00\x2c\x00\x38\x00\x65\x00\x2f\x00\x09\x00\x4b\x00\x4c\x00\x0c\x00\x09\x00\x0e\x00\x50\x00\x0c\x00\x52\x00\x0e\x00\xab\x00\xac\x00\x56\x00\x48\x00\x49\x00\x4a\x00\x5a\x00\x65\x00\x5c\x00\xab\x00\xac\x00\x65\x00\x46\x00\x47\x00\x09\x00\x63\x00\x4a\x00\x0c\x00\x4c\x00\x0e\x00\x7c\x00\x7d\x00\x50\x00\x51\x00\x09\x00\x53\x00\x54\x00\x0c\x00\x56\x00\x0e\x00\x58\x00\x65\x00\x5a\x00\x62\x00\x5c\x00\x7c\x00\x7d\x00\x5f\x00\x09\x00\x61\x00\x63\x00\x63\x00\x64\x00\x09\x00\x66\x00\x01\x00\x02\x00\x05\x00\x06\x00\x05\x00\x15\x00\x07\x00\x08\x00\x09\x00\x63\x00\x15\x00\x05\x00\x06\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x2e\x00\x13\x00\x14\x00\x15\x00\x16\x00\x5e\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x4e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x05\x00\x06\x00\x26\x00\x27\x00\x28\x00\x38\x00\x2a\x00\x2b\x00\x2c\x00\x5e\x00\x38\x00\x2f\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x05\x00\x06\x00\x2e\x00\x48\x00\x49\x00\x4a\x00\xab\x00\xac\x00\x48\x00\x49\x00\x4a\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x46\x00\x47\x00\x09\x00\x0a\x00\x4a\x00\x4f\x00\x4c\x00\xab\x00\xac\x00\x4e\x00\x50\x00\x51\x00\x53\x00\x53\x00\x54\x00\x62\x00\x56\x00\x62\x00\x58\x00\x65\x00\x5a\x00\x62\x00\x5c\x00\xab\x00\xac\x00\x5f\x00\x66\x00\x61\x00\x65\x00\x63\x00\x64\x00\x62\x00\x66\x00\x67\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x62\x00\x0b\x00\x62\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x62\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x65\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xab\x00\xac\x00\x26\x00\x27\x00\x28\x00\x62\x00\x2a\x00\x2b\x00\x2c\x00\x4b\x00\x4c\x00\x2f\x00\x65\x00\x09\x00\x50\x00\x65\x00\x52\x00\x09\x00\x0a\x00\x52\x00\x56\x00\x09\x00\x0a\x00\x5e\x00\x5a\x00\x15\x00\x5c\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x63\x00\x46\x00\x47\x00\x09\x00\x0a\x00\x4a\x00\x4f\x00\x4c\x00\x7c\x00\x7d\x00\x5d\x00\x50\x00\x51\x00\x4d\x00\x53\x00\x54\x00\x57\x00\x56\x00\x5d\x00\x58\x00\x56\x00\x5a\x00\x63\x00\x5c\x00\x7c\x00\x7d\x00\x56\x00\x38\x00\x61\x00\x56\x00\x63\x00\x64\x00\x5b\x00\x66\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x48\x00\x49\x00\x4a\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x62\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x62\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x05\x00\x06\x00\x26\x00\x27\x00\x28\x00\x62\x00\x2a\x00\x2b\x00\x2c\x00\x4b\x00\x4c\x00\x2f\x00\x4b\x00\x4c\x00\x50\x00\x05\x00\x06\x00\x50\x00\x62\x00\x65\x00\x56\x00\xab\x00\xac\x00\x56\x00\x5a\x00\x62\x00\x5c\x00\x5a\x00\x5d\x00\x5c\x00\xab\x00\xac\x00\x4f\x00\x63\x00\x46\x00\x47\x00\x63\x00\x4f\x00\x4a\x00\x63\x00\x4c\x00\xab\x00\xac\x00\x5e\x00\x50\x00\x51\x00\x63\x00\x53\x00\x54\x00\x4f\x00\x56\x00\x5e\x00\x58\x00\x4e\x00\x5a\x00\x5e\x00\x5c\x00\x2e\x00\x2e\x00\x5d\x00\x09\x00\x61\x00\x63\x00\x63\x00\x64\x00\x2e\x00\x66\x00\x01\x00\x02\x00\x52\x00\x63\x00\x05\x00\x15\x00\x07\x00\x08\x00\x09\x00\x52\x00\x0b\x00\x52\x00\x52\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x62\x00\x13\x00\x14\x00\x15\x00\x16\x00\x62\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x57\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x4d\x00\x63\x00\x26\x00\x27\x00\x28\x00\x38\x00\x2a\x00\x2b\x00\x2c\x00\x4b\x00\x4c\x00\x2f\x00\x57\x00\x09\x00\x50\x00\x4d\x00\x29\x00\x57\x00\x63\x00\x5d\x00\x56\x00\x48\x00\x49\x00\x4a\x00\x5a\x00\x15\x00\x5c\x00\x5b\x00\x63\x00\x5e\x00\x63\x00\x5e\x00\x5d\x00\x63\x00\x46\x00\x47\x00\x5d\x00\x57\x00\x4a\x00\x5e\x00\x4c\x00\x57\x00\x15\x00\x63\x00\x50\x00\x51\x00\x63\x00\x53\x00\x54\x00\x03\x00\x56\x00\x5f\x00\x58\x00\x01\x00\x5a\x00\x02\x00\x5c\x00\xab\x00\x09\x00\x5c\x00\x38\x00\x61\x00\x64\x00\x63\x00\x64\x00\x5e\x00\x66\x00\x01\x00\x02\x00\x06\x00\x09\x00\x05\x00\x04\x00\x07\x00\x08\x00\x09\x00\x48\x00\x49\x00\x4a\x00\x09\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xa2\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xa4\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x08\x00\x08\x00\x26\x00\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x4b\x00\x4c\x00\x2f\x00\x4b\x00\x4c\x00\x50\x00\x09\x00\x0b\x00\x50\x00\x09\x00\x5e\x00\x56\x00\x5b\x00\x64\x00\x56\x00\x5a\x00\x0b\x00\x5c\x00\x5a\x00\x0b\x00\x5c\x00\x15\x00\x0b\x00\xab\x00\x63\x00\x46\x00\x47\x00\x63\x00\x26\x00\x4a\x00\x05\x00\x4c\x00\x05\x00\x4d\x00\x06\x00\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\x09\x00\x56\x00\x06\x00\x58\x00\x0b\x00\x5a\x00\x0b\x00\x5c\x00\x13\x00\x06\x00\x13\x00\x14\x00\x61\x00\x18\x00\x63\x00\x64\x00\x38\x00\x66\x00\x1d\x00\x26\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x5e\x00\x1a\x00\x26\x00\x1f\x00\x28\x00\x1f\x00\x2a\x00\x48\x00\x49\x00\x4a\x00\x1f\x00\x2f\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1f\x00\x1e\x00\x34\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x1e\x00\x09\x00\x1f\x00\x46\x00\x47\x00\x1f\x00\xa2\x00\x4a\x00\x4b\x00\x4c\x00\x1c\x00\x1a\x00\x9d\x00\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\x1f\x00\x56\x00\x57\x00\x58\x00\x1d\x00\x5a\x00\x1a\x00\x5c\x00\x13\x00\x1f\x00\x1f\x00\x0b\x00\x0b\x00\x0b\x00\x63\x00\x64\x00\x09\x00\x66\x00\x1d\x00\x0b\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1d\x00\x13\x00\x26\x00\x1d\x00\x28\x00\x1a\x00\x2a\x00\x19\x00\x9e\x00\x7d\x00\x7d\x00\x2f\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x24\x00\x25\x00\xa6\x00\x27\x00\x09\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x09\x00\x09\x00\x07\x00\x7d\x00\x0b\x00\x09\x00\x46\x00\x47\x00\x09\x00\x1d\x00\x4a\x00\x4b\x00\x4c\x00\x3b\x00\x7d\x00\x7d\x00\x50\x00\x51\x00\x7d\x00\x53\x00\x54\x00\x08\x00\x56\x00\x7d\x00\x58\x00\x05\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x09\x00\x09\x00\x13\x00\xa6\x00\x0b\x00\x63\x00\x64\x00\x0b\x00\x66\x00\x0b\x00\x09\x00\x13\x00\x1d\x00\x09\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x05\x00\x09\x00\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\x22\x00\x23\x00\x24\x00\x25\x00\x2f\x00\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\x53\x00\x54\x00\x08\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\x09\x00\x13\x00\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\xff\xff\xff\xff\x13\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\x23\x00\x24\x00\x25\x00\x2f\x00\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\x53\x00\x54\x00\x08\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\x09\x00\x13\x00\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\xff\xff\xff\xff\x13\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\x23\x00\x24\x00\x25\x00\x2f\x00\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\x53\x00\x54\x00\x08\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\x09\x00\x13\x00\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\xff\xff\xff\xff\x13\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\x24\x00\x25\x00\x2f\x00\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\x53\x00\x54\x00\x08\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\x09\x00\x13\x00\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\xff\xff\xff\xff\x13\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x25\x00\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\x24\x00\x25\x00\x2f\x00\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\x09\x00\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x13\x00\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\x53\x00\x54\x00\x08\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x5d\x00\xff\xff\x09\x00\x13\x00\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\xff\xff\xff\xff\x13\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\x24\x00\x25\x00\x2f\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\x2f\x00\x50\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\xff\xff\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\x53\x00\x54\x00\x08\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x5d\x00\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\x63\x00\x64\x00\x18\x00\x66\x00\xff\xff\xff\xff\xff\xff\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\x2f\x00\x50\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\xff\xff\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\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\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\x53\x00\x54\x00\x08\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\xff\xff\xff\xff\xff\xff\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\x53\x00\x54\x00\x08\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x5d\x00\xff\xff\xff\xff\x13\x00\x61\x00\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\xff\xff\xff\xff\xff\xff\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\x53\x00\x54\x00\x08\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x5d\x00\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\x63\x00\x64\x00\x18\x00\x66\x00\xff\xff\xff\xff\xff\xff\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\x53\x00\x54\x00\x08\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\xff\xff\xff\xff\xff\xff\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x08\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\xff\xff\xff\xff\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\x18\x00\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\x18\x00\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\x53\x00\x54\x00\x08\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x5d\x00\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\xff\xff\xff\xff\xff\xff\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x08\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\xff\xff\xff\xff\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x08\x00\x53\x00\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\x53\x00\x09\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\x10\x00\x5c\x00\x12\x00\x13\x00\xff\xff\xff\xff\x09\x00\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\xff\xff\x1f\x00\x20\x00\x09\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x10\x00\x5a\x00\x2a\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\x09\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\x00\x63\x00\x64\x00\x13\x00\x66\x00\x1d\x00\xff\xff\x1f\x00\x20\x00\x19\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x5a\x00\xff\xff\x2a\x00\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x1d\x00\xff\xff\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\x63\x00\x64\x00\x4a\x00\x66\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\x1d\x00\x66\x00\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\xff\xff\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\x63\x00\x64\x00\x4a\x00\x66\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\x1d\x00\x66\x00\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\xff\xff\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\x63\x00\x64\x00\x4a\x00\x66\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\x1d\x00\x66\x00\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\xff\xff\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\x63\x00\x64\x00\x4a\x00\x66\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\x63\x00\x64\x00\x1d\x00\x66\x00\x1f\x00\x20\x00\x10\x00\x22\x00\x23\x00\x13\x00\xff\xff\x26\x00\xff\xff\x17\x00\x18\x00\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\xff\xff\xff\xff\x09\x00\xff\xff\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\x10\x00\x5c\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\xff\xff\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\x09\x00\x3b\x00\x0b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x32\x00\x33\x00\x34\x00\x10\x00\xff\xff\x12\x00\x13\x00\x39\x00\x3a\x00\xff\xff\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\x39\x00\x3a\x00\xff\xff\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x09\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x09\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x09\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x09\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x09\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\x39\x00\x3a\x00\xff\xff\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x13\x00\x09\x00\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x24\x00\x25\x00\x09\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x39\x00\xff\xff\x13\x00\x09\x00\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\x39\x00\xff\xff\x13\x00\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x24\x00\x25\x00\x09\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x39\x00\xff\xff\x13\x00\x09\x00\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\x39\x00\xff\xff\x13\x00\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x24\x00\x25\x00\x09\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x39\x00\xff\xff\x13\x00\x09\x00\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\x39\x00\xff\xff\x13\x00\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x39\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x10\x00\x39\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x09\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x12\x00\x13\x00\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\x10\x00\xff\xff\xff\xff\x13\x00\x09\x00\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x09\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x10\x00\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\x13\x00\x24\x00\x25\x00\xff\xff\x27\x00\x18\x00\x19\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\x10\x00\x27\x00\xff\xff\x13\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x17\x02\x11\x02\x29\x03\x71\x01\x09\x00\xcf\x01\x12\x02\x00\x02\x40\x02\x01\x02\x48\xff\x0a\x00\x48\xff\x3b\x00\x0c\x00\x49\x00\x09\x00\x00\x02\x2e\x03\x01\x02\x48\xff\xd3\x01\x48\xff\xf0\x00\x48\xff\x16\x02\x0c\x00\x71\x02\x16\x02\x3c\x00\x0f\x00\x10\x00\x11\x00\xf6\x01\x12\x00\x3d\x00\x4f\x00\x14\x00\x15\x00\x16\x00\x17\x00\x39\x00\x41\x02\x54\x02\x11\x00\x44\x00\x12\x00\x44\x00\x85\x01\x14\x00\x15\x00\x16\x00\x86\x01\x09\x00\x44\x00\x45\x00\xfc\x02\x45\x00\xdf\x01\xbd\x02\xe9\x00\x50\x00\xcb\x02\x0c\x00\x45\x00\xfc\x02\xcf\x01\x12\x02\x72\x02\x73\x02\x74\x02\xff\xff\x55\x02\x56\x02\x57\x02\x22\x02\x58\x02\x00\x02\x4c\x02\x01\x02\x39\x00\x00\x02\x09\x00\x01\x02\x2f\x03\x3e\x00\x14\x00\x15\x00\x16\x00\x4c\x02\x02\x02\x50\x00\x0c\x00\x13\x02\x51\x00\xcc\x02\x52\x00\x53\x00\x54\x00\x55\x00\x06\x02\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x79\x02\x14\x00\x15\x00\x16\x00\x4c\x02\xf0\x00\x17\x02\x63\x00\x64\x00\x17\x02\x39\x00\x65\x00\x66\x00\x24\x03\xee\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x09\x00\xdb\x00\x02\x03\x03\x02\xf7\x01\x14\x02\x8a\x01\x0a\x00\xfa\x02\x3b\x00\x0c\x00\x09\x00\xf8\x02\xfd\x02\x71\x02\x07\x02\x6e\x01\x39\x00\xe0\x01\xe1\x02\x77\x02\x0c\x00\x49\x03\x39\x00\x3a\x00\x3c\x00\x0f\x00\x10\x00\x11\x00\xde\x02\x12\x00\x3d\x00\xde\x01\x14\x00\x15\x00\x16\x00\x17\x00\xed\x00\x54\x02\x11\x00\xa4\x00\x12\x00\x09\x00\x85\x01\x14\x00\x15\x00\x16\x00\x86\x01\x60\xff\x4d\x02\x09\x00\xe2\x02\x0c\x00\x25\x03\x2f\x03\x27\x03\x1f\x03\x74\x02\xbc\x00\xc4\x02\x0c\x00\xdf\x02\xbc\x00\x60\xff\xef\x02\xf0\x02\xd3\x00\x55\x02\x56\x02\x57\x02\x92\x01\x1e\x03\x16\x02\x29\x03\x8f\x01\x14\x00\x15\x00\x16\x00\x4c\x02\x09\x00\x27\x00\x3e\x00\x24\x03\x14\x00\x15\x00\x16\x00\x9f\x00\x50\x00\x39\x00\x0c\x00\x51\x00\xc5\x02\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x39\x00\x3a\x00\x14\x00\x15\x00\x16\x00\x4c\x02\xd4\x02\x63\x00\x64\x00\xec\x02\xf0\x02\x65\x00\x66\x00\xa4\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x09\x00\xf4\x01\x2a\x03\x2b\x03\x2c\x03\x8a\x01\xbc\x00\x0a\x00\xad\x01\x3b\x00\x0c\x00\x09\x00\x25\x03\xe3\x02\x77\x03\xd8\x01\x7f\x00\x80\x00\xbd\x00\x17\x02\x62\x02\x0c\x00\x9c\x00\x9e\x02\x9d\x00\x3c\x00\x0f\x00\x10\x00\x11\x00\xe2\x01\x12\x00\x3d\x00\x24\x03\x14\x00\x15\x00\x16\x00\x17\x00\xe2\x01\x54\x02\x11\x00\xad\x01\x12\x00\x09\x00\x85\x01\x14\x00\x15\x00\x16\x00\x86\x01\x39\x00\x09\x00\xa2\x02\x44\x00\x0c\x00\x96\x01\x8e\x02\x9c\x02\x39\x00\x3a\x00\xd0\x00\x0c\x00\x0f\x02\x0c\x00\xd1\x00\x13\x03\xd2\x00\xf2\x01\x14\x03\x55\x02\x56\x02\x98\x02\x98\x01\xdf\x00\x29\x03\xd3\x00\x8f\x02\x14\x00\x15\x00\x16\x00\xd4\x00\xf1\x01\x90\x02\x3e\x00\x14\x00\x15\x00\x16\x00\x4c\x02\xba\x00\x50\x00\x39\x00\x91\x02\x51\x00\x39\x00\x52\x00\x53\x00\x54\x00\x55\x00\x3c\x03\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x25\x03\x26\x03\x27\x03\x44\x00\x06\x03\xd8\x01\x10\x02\x63\x00\x64\x00\x07\x03\xec\x01\x65\x00\x66\x00\x45\x00\x46\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\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\xe6\x01\x78\x03\x2b\x03\x2c\x03\x49\x02\x8a\x01\x05\x02\x06\x02\x09\x00\xf4\x01\x3d\x03\x3e\x03\x3f\x03\x40\x03\xea\x01\x0a\x00\x41\x03\x3b\x00\x0c\x00\x09\x00\x4b\x03\xd8\x01\x09\x00\x39\x00\x3a\x00\x61\x02\xf4\x01\x09\x00\x62\x02\x0c\x00\xd8\x01\xf4\x01\x0c\x00\x3c\x00\x0f\x00\x10\x00\x11\x00\x0c\x00\x12\x00\x3d\x00\xc6\x00\x14\x00\x15\x00\x16\x00\x17\x00\xf5\x01\x54\x02\x11\x00\x46\x02\x12\x00\x6d\x02\x85\x01\x14\x00\x15\x00\x16\x00\x86\x01\xd6\x00\x16\x00\xeb\x00\xf4\x01\x14\x00\x15\x00\x16\x00\xd4\x00\x6c\xff\x6c\xff\xc9\x00\x39\x00\x3a\x00\xc7\x00\xc8\x00\x0e\x03\x0a\x03\x6c\xff\xc9\x00\x55\x02\x56\x02\x97\x02\x62\x02\x6c\xff\xca\x00\x6c\xff\x44\x00\x39\x00\xcb\x00\x39\x00\xcc\x00\x09\x00\x6c\xff\x3e\x00\x22\x02\x22\x02\x47\x02\x39\x00\xa5\x00\x50\x00\xdb\x01\x0c\x00\x51\x00\xd8\x01\x52\x00\x53\x00\x54\x00\x55\x00\x3c\x03\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\xee\x00\xbc\x00\x14\x00\x15\x00\x16\x00\xd4\x00\xd4\x02\x63\x00\x64\x00\xec\x02\xed\x02\x65\x00\x66\x00\x08\x02\x0b\x02\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x09\x00\xd0\x02\xad\x01\x01\x02\xba\x01\x8a\x01\x44\x02\x0a\x00\x44\x00\x3b\x00\x0c\x00\x7d\x03\x3f\x03\x40\x03\x09\x00\x9c\x00\x7e\x03\x9d\x00\x44\x02\x9c\x00\xbc\x00\x9d\x00\xa2\x00\xa3\x00\x0c\x00\x3c\x00\x0f\x00\x10\x00\x11\x00\x09\x00\x12\x00\x3d\x00\xbd\x00\x14\x00\x15\x00\x16\x00\x17\x00\xc0\x02\x1c\x02\x0c\x00\x1d\x02\x54\x02\x11\x00\x44\x00\x12\x00\xb3\x00\x85\x01\x14\x00\x15\x00\x16\x00\x86\x01\xd9\x02\xda\x02\x45\x00\x9f\x01\xb8\x01\x5f\x01\x11\x00\xb7\x01\x12\x00\x34\x00\xb2\x01\x14\x00\x15\x00\x16\x00\x5d\x01\xdb\x02\x96\x01\xdc\x02\xc2\x02\x55\x02\x56\x02\x1c\x03\x29\x02\x9e\x01\x39\x00\x1f\x02\x2a\x02\x09\x00\x80\x01\x20\x02\x3e\x00\x21\x02\xae\x01\x98\x01\xdf\x00\xad\x01\x50\x00\x0c\x00\x22\x02\x51\x00\xac\x01\x52\x00\x53\x00\x54\x00\x55\x00\xab\x01\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\xaa\x01\x14\x00\x15\x00\x16\x00\x57\x01\xa7\x01\xd4\x02\x63\x00\x64\x00\xec\x02\x54\x03\x65\x00\x66\x00\x39\x00\x3a\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x09\x00\x05\x02\x06\x02\x09\x00\xa5\x01\xc9\x00\xbc\x00\x0a\x00\x8a\x01\x3b\x00\x0c\x00\xd0\x00\x72\x01\x0c\x00\xa4\x01\x94\x01\x6e\x01\x95\x01\xbd\x00\x39\x00\x3a\x00\xa3\x01\x45\x00\x73\x01\x39\x00\x3c\x00\x0f\x00\x10\x00\x11\x00\xa2\x01\x12\x00\x3d\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\xd4\x01\x16\x00\x0a\x00\x61\x01\xb2\x00\x0c\x00\xdb\x00\x62\x01\xf6\x02\x63\x01\xf7\x02\xb3\x00\xbc\x00\x91\x02\x76\x01\x77\x01\xfc\x01\x39\x00\x78\x01\x9d\x00\x0e\x00\x0f\x00\xb4\x00\x11\x00\xbd\x00\x12\x00\x13\x00\x9d\x01\x14\x00\x15\x00\x16\x00\x17\x00\x18\x02\xfe\x01\xdf\x00\x05\x02\x06\x02\x2f\x00\xe5\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\xab\x02\x3e\x00\xb5\x00\xb6\x00\xac\x02\xe6\x00\x96\x01\x50\x00\x7a\x01\xe7\x00\x51\x00\xe8\x00\x52\x00\x53\x00\x54\x00\x55\x00\xdb\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\xdc\x00\xdd\x00\x7b\x01\xde\x00\xdf\x00\x39\x00\x3a\x00\x63\x00\x64\x00\x4c\x00\x08\x00\x65\x00\x66\x00\xe3\x00\x1b\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x09\x00\x63\x00\xb7\x00\x6c\x01\xf3\x02\x72\x01\xf4\x02\x0a\x00\xbc\x00\x63\x01\xa8\x00\x59\x01\xc9\x00\x39\x00\xa9\x00\x64\x01\xfa\x01\x71\x01\x61\x01\x81\x02\x08\x02\x0a\x02\x91\x01\x7d\x02\x92\x01\x60\xff\xbc\x00\x84\x01\x11\x00\xbc\x00\x12\x00\x39\x00\x85\x01\x14\x00\x15\x00\x16\x00\x86\x01\x09\x00\xbc\x00\x39\x00\x3a\x00\xbd\x00\x3b\x00\xbc\x00\x0a\x00\x79\x02\x67\x01\xa8\x00\xac\x00\xad\x00\x08\x02\x09\x02\x68\x01\xb3\x00\x77\x02\xbd\x00\x87\x01\x88\x01\xd4\x02\x89\x01\x76\x02\xd5\x02\xbc\x00\xf7\x02\x69\x01\x11\x00\x39\x00\x12\x00\x09\x00\xbc\x00\x14\x00\x15\x00\x16\x00\x5d\x01\xbd\x00\x0a\x00\x96\x01\x5e\x01\x0c\x00\xd5\x01\xf5\x01\x08\x02\xcd\x02\x97\x01\xb3\x00\x70\x02\xd4\x02\xb5\x00\xb6\x00\xd5\x02\x96\x01\x5a\x03\x65\x02\x98\x01\xdf\x00\x5f\x01\x11\x00\x53\x02\x12\x00\xbc\x00\x6b\x02\x14\x00\x15\x00\x16\x00\x5d\x01\x09\x00\x44\x00\x98\x01\xdf\x00\xdb\x00\x69\x02\xbd\x00\x0a\x00\x66\x02\x0b\x00\x0c\x00\x45\x00\xfb\x01\xb5\x00\xb6\x00\xd4\x02\xd5\x01\xee\x01\xd5\x02\x6d\x01\x59\x03\xde\x00\xdf\x00\x68\x02\x49\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xef\xfe\x12\x00\x13\x00\xbc\x01\x14\x00\x15\x00\x16\x00\x17\x00\x8a\x01\x1a\x02\x1b\x02\x1c\x02\xdb\x00\x1d\x02\xee\xfe\x18\x00\x19\x00\x1a\x00\x1b\x00\x1f\x02\x63\x00\xb7\x00\xf0\xfe\x20\x02\xf4\xfe\x21\x02\xf3\xfe\x6a\x01\x4a\x02\xde\x00\xdf\x00\xd4\x02\x22\x02\xbc\x00\xd5\x02\x3f\x02\xd6\x02\xbc\x00\xd7\x02\x16\x02\x82\x00\x83\x00\x44\x02\x80\x03\x84\x00\xbd\x00\x85\x00\x1f\x00\x86\x00\xbd\x00\x50\xfe\x63\x00\xb7\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x4a\x00\x20\x00\x8b\x00\x8c\x00\x8d\x00\x25\x02\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x21\x00\x3e\x02\x22\x00\x23\x00\x24\x00\x25\x00\x93\x00\xd5\x01\xe3\x01\x28\x00\x94\x00\x29\x00\x96\x01\x2a\x00\x95\x00\x96\x00\xbe\x00\x29\x02\x2b\x00\x52\x02\x3c\x02\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xd5\x01\xe2\x01\xd5\x01\xde\x01\x98\x01\xdf\x00\xd5\x01\xdb\x01\xc3\x00\xc4\x00\xa1\x02\x88\x02\x89\x02\x8a\x02\x8b\x02\x8c\x02\x2c\x00\x2d\x00\xd9\x02\xda\x02\x2e\x00\x3b\x02\x41\x00\xd8\x01\xd9\x01\x3a\x02\x31\x00\x32\x00\x24\x02\x33\x00\x34\x00\x29\x02\x42\x00\xdb\x02\x36\x00\xdc\x02\x43\x00\x35\x02\x44\x00\xd5\x01\xd6\x01\x17\x02\x39\x00\x97\x00\xfa\x01\x39\x00\x3a\x00\xbc\x00\x3b\x00\x16\x02\x82\x00\x83\x00\xcf\x01\xd1\x01\x84\x00\x2f\x02\x85\x00\x1f\x00\x86\x00\xbd\x00\x50\xfe\xcf\x01\xd0\x01\x87\x00\x88\x00\x89\x00\x8a\x00\x34\x02\x20\x00\x8b\x00\x8c\x00\x8d\x00\x33\x02\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x21\x00\x32\x02\x22\x00\x23\x00\x24\x00\x25\x00\x93\x00\xcf\x01\x25\x02\x28\x00\x94\x00\x29\x00\x31\x02\x2a\x00\x95\x00\x96\x00\xfc\x01\x2f\x02\x2b\x00\xd4\x02\xc7\x00\xc8\x00\xd5\x02\xd4\x02\x84\x03\xc9\x00\xd5\x02\xf1\xfe\x83\x03\xd5\x01\xe5\x02\x9a\x01\x0d\x02\xfe\x01\xdf\x00\x9b\x01\x29\x02\x9c\x01\xd5\x01\xe4\x02\x2c\x02\x2c\x00\x2d\x00\xd4\x02\x39\x00\x2e\x00\xd5\x02\x41\x00\x82\x03\xbd\x02\xbe\x02\x31\x00\x32\x00\xd4\x02\x33\x00\x34\x00\xd5\x02\x42\x00\x81\x03\x36\x00\x29\x02\x43\x00\x27\x02\x44\x00\xba\x02\xbb\x02\x17\x02\xbc\x00\x97\x00\x39\x00\x39\x00\x3a\x00\xbc\x00\x3b\x00\x82\x00\x83\x00\xd2\x02\xd3\x02\x84\x00\xbd\x00\x85\x00\x1f\x00\x86\x00\x39\x00\xbd\x00\xce\x02\xcf\x02\x87\x00\x88\x00\x89\x00\x8a\x00\xf9\x01\x20\x00\x8b\x00\x8c\x00\x8d\x00\xd8\x01\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x21\x00\xdd\x02\x22\x00\x23\x00\x24\x00\x25\x00\x93\x00\xc5\x02\xc6\x02\x28\x00\x94\x00\x29\x00\xfc\x01\x2a\x00\x95\x00\x96\x00\xec\x01\xfc\x01\x2b\x00\x87\x02\x88\x02\x89\x02\x8a\x02\x8b\x02\x8c\x02\x9e\x02\x9f\x02\xcd\x02\x0c\x02\xfe\x01\xdf\x00\xd5\x01\xfe\x02\xff\x01\xfe\x01\xdf\x00\x23\x03\x89\x02\x8a\x02\x8b\x02\x8c\x02\x2c\x00\x2d\x00\xcf\x01\x51\x03\x2e\x00\xc9\x02\x41\x00\xd5\x01\xfb\x02\xc8\x02\x31\x00\x32\x00\xc0\x02\x33\x00\x34\x00\xb8\x02\x42\x00\xb7\x02\x36\x00\x2c\x02\x43\x00\xb3\x02\x44\x00\xd5\x01\xea\x02\xf4\xfd\xb5\x02\x97\x00\x31\x02\x39\x00\x3a\x00\xb1\x02\x3b\x00\xf4\xfd\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\x0c\x01\x0d\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\x20\x01\x21\x01\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x34\x01\x35\x01\x36\x01\x37\x01\x38\x01\x39\x01\x3a\x01\x3b\x01\x3c\x01\x3d\x01\x3e\x01\x3f\x01\x40\x01\x41\x01\x42\x01\x43\x01\x44\x01\x45\x01\x46\x01\x47\x01\x48\x01\x49\x01\x4a\x01\x4b\x01\x4c\x01\x4d\x01\x4e\x01\x4f\x01\x50\x01\x51\x01\x52\x01\x53\x01\x54\x01\x55\x01\x56\x01\x57\x01\x82\x00\x83\x00\x43\x03\x44\x03\x84\x00\x45\x03\x85\x00\x1f\x00\x86\x00\xb0\x02\x50\xfe\xaf\x02\x46\x03\x87\x00\x88\x00\x89\x00\x47\x03\xae\x02\x20\x00\x8b\x00\x8c\x00\x8d\x00\x48\x03\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x21\x00\x29\x02\x22\x00\x23\x00\x24\x00\x25\x00\x93\x00\xd5\x01\xe8\x02\x28\x00\x94\x00\x29\x00\xa9\x02\x2a\x00\x95\x00\x96\x00\xd3\xfe\xd3\xfe\x2b\x00\x31\x02\xbc\x00\xd3\xfe\x29\x02\xd3\xfe\xcf\x01\x50\x03\x9a\x02\xd3\xfe\xcf\x01\x4f\x03\x95\x02\xd3\xfe\xbd\x00\xd3\xfe\xe6\x02\x88\x02\x89\x02\x8a\x02\x8b\x02\x8c\x02\xd3\xfe\x2c\x00\x2d\x00\xcf\x01\x4e\x03\x2e\x00\x79\x02\x41\x00\x38\x03\x35\x03\x94\x02\x31\x00\x32\x00\x93\x02\x33\x00\x34\x00\x86\x02\x42\x00\x84\x02\x36\x00\x23\x03\x43\x00\x39\x00\x44\x00\x34\x03\x35\x03\x22\x03\xfc\x01\x97\x00\x21\x03\x39\x00\x3a\x00\x0c\x03\x3b\x00\x82\x00\x83\x00\x43\x03\x44\x03\x84\x00\x45\x03\x85\x00\x1f\x00\x86\x00\xfd\x01\xfe\x01\xdf\x00\x46\x03\x87\x00\x88\x00\x89\x00\x47\x03\x1b\x03\x20\x00\x8b\x00\x8c\x00\x8d\x00\x48\x03\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x21\x00\x1a\x03\x22\x00\x23\x00\x24\x00\x25\x00\x93\x00\x30\x03\x9f\x02\x28\x00\x94\x00\x29\x00\x19\x03\x2a\x00\x95\x00\x96\x00\xc7\x00\xc8\x00\x2b\x00\xc7\x00\xc8\x00\xc9\x00\x65\x03\x66\x03\xc9\x00\x18\x03\x31\x02\xe1\x00\xd5\x01\xe3\x01\x9a\x01\xe2\x00\x11\x03\xe3\x00\x9b\x01\x10\x03\x9c\x01\xd5\x01\x58\x03\x0f\x03\x39\x00\x2c\x00\x2d\x00\x39\x00\x0b\x03\x2e\x00\x22\x02\x41\x00\xd5\x01\x57\x03\x06\x03\x31\x00\x32\x00\x39\x00\x33\x00\x34\x00\x00\x03\x42\x00\xd8\x01\x36\x00\xfa\x02\x43\x00\xd8\x01\x44\x00\x57\x03\x56\x03\x54\x03\xbc\x00\x97\x00\x39\x00\x39\x00\x3a\x00\x49\x03\x3b\x00\x89\xff\x89\xff\x3b\x03\x22\x02\x89\xff\xbd\x00\x89\xff\x89\xff\x89\xff\x3a\x03\x89\xff\x38\x03\x37\x03\x89\xff\x89\xff\x89\xff\x89\xff\x34\x03\x89\xff\x89\xff\x89\xff\x89\xff\x33\x03\x89\xff\x89\xff\x89\xff\x89\xff\x89\xff\x89\xff\x76\x03\x89\xff\x89\xff\x89\xff\x89\xff\x89\xff\x77\x03\x39\x00\x89\xff\x89\xff\x89\xff\xfc\x01\x89\xff\x89\xff\x89\xff\xc7\x00\xc8\x00\x89\xff\x73\x03\xbc\x00\xc9\x00\x72\x03\x71\x03\x6f\x03\x22\x02\x6d\x03\xe1\x00\xe2\x02\xfe\x01\xdf\x00\xe2\x00\xbd\x00\xe3\x00\x6a\x03\x22\x02\x63\x03\x39\x00\x06\x03\x5f\x03\x39\x00\x89\xff\x89\xff\x5d\x03\x7d\x03\x89\xff\xd8\x01\x89\xff\x7c\x03\x2e\x03\x39\x00\x89\xff\x89\xff\x39\x00\x89\xff\x89\xff\x47\x00\x89\xff\x88\x03\x89\xff\x08\x00\x89\xff\xf0\x00\x89\xff\xd9\x00\xd8\x00\xa4\x00\xfc\x01\x89\xff\xa0\x00\x89\xff\x89\xff\x4d\x00\x89\xff\x82\x00\x83\x00\xf2\x01\xed\x01\x84\x00\xef\x01\x85\x00\x1f\x00\x86\x00\xdf\x02\xfe\x01\xdf\x00\xec\x01\x87\x00\x88\x00\x89\x00\x8a\x00\xea\x01\x20\x00\x8b\x00\x8c\x00\x8d\x00\xe7\x01\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x21\x00\xe8\x01\x22\x00\x23\x00\x24\x00\x25\x00\x93\x00\xe6\x01\xe4\x01\x28\x00\x94\x00\x29\x00\xdc\x01\x2a\x00\x95\x00\x96\x00\xc7\x00\xc8\x00\x2b\x00\xc7\x00\xc8\x00\xc9\x00\xd3\x01\xb8\x01\xc9\x00\xbc\x00\xb5\x01\x9a\x01\xb0\x01\xaf\x01\xe1\x00\x9b\x01\xa8\x01\x9c\x01\xe2\x00\xa7\x01\x1a\x02\xbd\x00\x7e\x02\xa0\x01\x39\x00\x2c\x00\x2d\x00\x39\x00\x6f\x01\x2e\x00\x7b\x02\x41\x00\x6d\x02\x6e\x02\x6b\x02\x31\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x72\x01\x42\x00\x62\x02\x36\x00\x69\x02\x43\x00\x66\x02\x44\x00\xb9\x00\x5f\x02\x45\x00\x73\x01\x97\x00\xba\x00\x39\x00\x3a\x00\xfc\x01\x3b\x00\x21\x00\x6f\x01\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x42\x02\x2f\x02\x28\x00\x3c\x02\x29\x00\x38\x02\x2a\x00\xc9\x02\xfe\x01\xdf\x00\x37\x02\x2b\x00\x74\x01\x75\x01\x76\x01\x77\x01\x36\x02\x35\x02\x78\x01\x4a\x03\x88\x02\x89\x02\x8a\x02\x8b\x02\x8c\x02\x31\x03\x88\x02\x89\x02\x8a\x02\x8b\x02\x8c\x02\x2d\x02\x0e\x02\x2c\x02\x2c\x00\x2d\x00\x27\x02\xd1\x02\x2e\x00\x2f\x00\x30\x00\xb5\x02\xb1\x02\xb3\x02\x31\x00\x32\x00\x1f\x00\x33\x00\x34\x00\xac\x02\x35\x00\x9f\x00\x36\x00\xa9\x02\x37\x00\xa7\x02\x38\x00\x20\x00\xa6\x02\xa5\x02\x9c\x02\x9a\x02\x84\x02\x39\x00\x3a\x00\x09\x00\x3b\x00\x21\x00\x1b\x03\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x16\x03\x0c\x00\x28\x00\x15\x03\x29\x00\x14\x03\x2a\x00\xb3\x00\x11\x03\x0c\x03\x08\x03\x2b\x00\x60\x03\x88\x02\x89\x02\x8a\x02\x8b\x02\x8c\x02\x5f\x01\x11\x00\x04\x03\x12\x00\xf4\x02\xf1\x02\x14\x00\x15\x00\x16\x00\x5d\x01\xf4\x02\xf1\x02\x6f\x03\x3b\x03\x52\x03\x74\x03\x2c\x00\x2d\x00\x73\x03\x6d\x03\x2e\x00\x2f\x00\x30\x00\x83\x01\x6b\x03\x6a\x03\xaf\x00\x32\x00\x68\x03\x33\x00\x34\x00\x1f\x00\x35\x00\x67\x03\x36\x00\x64\x03\x37\x00\x9c\x00\x38\x00\x9d\x00\x63\x03\x09\x00\x20\x00\x61\x03\x5d\x03\x39\x00\x3a\x00\x5b\x03\x3b\x00\x80\x03\x7a\x03\x0c\x00\x21\x00\x79\x03\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x86\x03\x85\x03\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\xd5\x00\x0f\x00\x10\x00\x11\x00\x2b\x00\x12\x00\x3d\x00\x00\x00\x14\x00\x15\x00\x16\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\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x00\x00\x33\x00\x34\x00\x1f\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x9c\x00\x38\x00\x9d\x00\x00\x00\x09\x00\x20\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x0c\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\xb2\x01\x10\x00\x11\x00\x2b\x00\x12\x00\x3d\x00\x00\x00\x14\x00\x15\x00\x16\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\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x00\x00\x33\x00\x34\x00\x1f\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x9c\x00\x38\x00\x9d\x00\x00\x00\x09\x00\x20\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x0c\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x70\x02\x10\x00\x11\x00\x2b\x00\x12\x00\x3d\x00\x00\x00\x14\x00\x15\x00\x16\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\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\xa1\x02\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x00\x00\x33\x00\x34\x00\x1f\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x9c\x00\x38\x00\x9d\x00\x00\x00\x09\x00\x20\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x0c\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\xea\x00\x11\x00\x2b\x00\x12\x00\xeb\x00\x00\x00\x14\x00\x15\x00\x16\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\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x60\x03\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x00\x00\x33\x00\x34\x00\x1f\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x9c\x00\x38\x00\x9d\x00\x00\x00\x09\x00\x20\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x0c\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\xea\x00\x11\x00\x2b\x00\x12\x00\x00\x00\x63\x02\x14\x00\x15\x00\x16\x00\x86\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\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x09\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x0c\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x02\x11\x00\x00\x00\x12\x00\x00\x00\x5e\x02\x14\x00\x15\x00\x16\x00\x86\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x00\x00\x33\x00\x34\x00\x1f\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x99\x00\x00\x00\x09\x00\x20\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x0c\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\xea\x00\x11\x00\x2b\x00\x12\x00\x00\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\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\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x35\x00\x9f\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\xc7\x00\xc8\x00\x00\x00\x00\x00\x2b\x00\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x01\x00\x00\x00\x00\x00\x00\x9b\x01\x00\x00\x9c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x00\x00\x33\x00\x34\x00\x1f\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x99\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\x39\x00\x3a\x00\xba\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\xc7\x00\xc8\x00\x00\x00\x00\x00\x2b\x00\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x42\x00\x8f\x01\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\xbb\x01\xbc\x01\xbd\x01\xbe\x01\xbf\x01\xc0\x01\xc1\x01\xc2\x01\xc3\x01\xc4\x01\xc5\x01\xc6\x01\xc7\x01\xc8\x01\xc9\x01\xca\x01\xcb\x01\xcc\x01\xcd\x01\xce\x01\xcf\x01\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x00\x00\x33\x00\x34\x00\x1f\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x9c\x00\x44\x00\x9d\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x00\x00\x33\x00\x34\x00\x1f\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x8c\x01\x00\x00\x00\x00\x20\x00\x8d\x01\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x35\x00\x9f\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x00\x00\x33\x00\x34\x00\x1f\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x99\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\x39\x00\x3a\x00\xba\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x42\x00\x52\x02\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x00\x00\x33\x00\x34\x00\x1f\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x9c\x00\x44\x00\x9d\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x37\xff\x33\x00\x1f\x00\x37\xff\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x00\x00\x33\x00\x34\x00\x1f\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x50\x02\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x89\xff\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x89\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x89\xff\x00\x00\x89\xff\x89\xff\x89\xff\x89\xff\x89\xff\x00\x00\x00\x00\x89\xff\x00\x00\x89\xff\x00\x00\x89\xff\x00\x00\x00\x00\x00\x00\x00\x00\x89\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x89\xff\x00\x00\x00\x00\x89\xff\x89\xff\x89\xff\x00\x00\x00\x00\x00\x00\x89\xff\x89\xff\x1f\x00\x89\xff\x89\xff\x00\x00\x89\xff\x00\x00\x89\xff\x00\x00\x89\xff\x00\x00\x89\xff\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\xff\x89\xff\x00\x00\x89\xff\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x35\xff\x33\x00\x1f\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x00\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x8d\x01\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x1f\x00\x33\x00\x34\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x00\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x8d\x01\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x00\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x1f\x00\x33\x00\x00\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x00\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x1f\x00\x33\x00\x00\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x1f\x00\x33\x00\x00\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x32\x00\x00\x00\x33\x00\x09\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x0a\x00\x44\x00\x3b\x00\x0c\x00\x00\x00\x00\x00\x09\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x3c\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x3d\x00\x00\x00\x14\x00\x15\x00\x16\x00\x17\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x00\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x22\x00\x23\x00\x09\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\xa5\x00\x3e\x00\x2a\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x3c\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x3d\x00\x00\x00\x14\x00\x15\x00\x16\x00\x17\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x00\x00\x00\x00\x34\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x09\x00\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x00\x39\x00\x3a\x00\x0c\x00\x3b\x00\x21\x00\x00\x00\x22\x00\x23\x00\xa5\x01\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\xa6\x00\x00\x00\x2a\x00\x00\x00\x5f\x01\x11\x00\x00\x00\x12\x00\xee\x00\x00\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x21\x00\x00\x00\x22\x00\x23\x00\x00\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x39\x00\x3a\x00\x2e\x00\x3b\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x21\x00\x3b\x00\x22\x00\x23\x00\x00\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x22\x00\x23\x00\x00\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x00\x00\x00\x36\x00\x00\x00\xce\x00\x00\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x39\x00\x3a\x00\x2e\x00\x3b\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x21\x00\x3b\x00\x22\x00\x23\x00\x00\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x22\x00\x23\x00\x00\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x39\x00\x3a\x00\x2e\x00\x3b\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x21\x00\x3b\x00\x22\x00\x23\x00\x00\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x22\x00\x23\x00\x00\x00\x25\x00\x26\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x4f\x02\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x39\x00\x3a\x00\x2e\x00\x3b\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x39\x00\x3a\x00\x21\x00\x3b\x00\x22\x00\x23\x00\xa5\x00\x25\x00\x26\x00\xa8\x00\x00\x00\x28\x00\x00\x00\xae\x01\xaa\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x01\x11\x00\x00\x00\x12\x00\xee\x00\x00\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x31\x00\x32\x00\x00\x00\x00\x00\x09\x00\x00\x00\x42\x00\x00\x00\x36\x00\x00\x00\x4d\x03\x0a\x00\x44\x00\x0b\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x01\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x00\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x01\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x00\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x95\x02\x7d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x0e\x00\x0f\x00\xb4\x00\x11\x00\x00\x00\x12\x00\x13\x00\x00\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x09\x00\x83\x01\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\xa7\x00\xa8\x00\x00\x00\x00\x00\x00\x00\xa9\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x0e\x00\x0f\x00\xab\x00\x11\x00\x00\x00\x12\x00\x13\x00\x00\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\xaf\x00\xb0\x00\x0a\x00\x00\x00\xa7\x00\xa8\x00\x00\x00\x00\x00\x00\x00\xa9\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x0e\x00\x0f\x00\xab\x00\x11\x00\x00\x00\x12\x00\x13\x00\x00\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x02\x18\x00\x19\x00\x1a\x00\x1b\x00\xac\x00\xad\x00\x0a\x00\x00\x00\x63\x01\xa8\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x64\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x01\x11\x00\x00\x00\x12\x00\x00\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x09\x00\x00\x00\x8d\x01\x00\x00\x72\x02\x73\x02\x74\x02\x0a\x00\x00\x00\x65\x01\xa8\x00\xac\x00\xad\x00\x00\x00\x66\x01\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x01\x11\x00\x00\x00\x12\x00\x00\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x09\x00\x00\x00\x50\x02\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x65\x01\xa8\x00\xaf\x00\xb0\x00\x00\x00\x66\x01\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x01\x11\x00\x00\x00\x12\x00\x09\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x00\x00\x0a\x00\x00\x00\x65\x01\xa8\x00\x00\x00\x00\x00\x00\x00\x66\x01\xaa\x00\x00\x00\xaf\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x01\x11\x00\x00\x00\x12\x00\x09\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x00\x00\x0a\x00\x00\x00\x63\x01\xa8\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x64\x01\x00\x00\xaf\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x01\x11\x00\x00\x00\x12\x00\x09\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x00\x00\x0a\x00\x00\x00\x5b\x01\xa8\x00\x00\x00\x00\x00\x00\x00\xa9\x00\xaa\x00\x00\x00\xac\x00\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x01\x11\x00\x00\x00\x12\x00\x09\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x00\x00\x0a\x00\x00\x00\x5b\x01\xa8\x00\x00\x00\x00\x00\x00\x00\xa9\x00\xaa\x00\x00\x00\xaf\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x01\x11\x00\x00\x00\x12\x00\x09\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x00\x00\x0a\x00\x00\x00\x63\x01\xa8\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x64\x01\x00\x00\xac\x00\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x01\x11\x00\x00\x00\x12\x00\x00\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x09\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\xa8\x00\xac\x00\xad\x00\x00\x00\xa9\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x0e\x00\x0f\x00\xab\x00\x11\x00\x00\x00\x12\x00\x13\x00\x00\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x82\x01\x0a\x00\x00\x00\x0b\x00\xa8\x00\x00\x00\x00\x00\x00\x00\xa9\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x0e\x00\x0f\x00\xab\x00\x11\x00\x00\x00\x12\x00\x13\x00\x00\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x81\x01\xa8\x00\x09\x00\x00\x00\x00\x00\xa9\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\xa9\x00\xaa\x00\x5c\x01\x11\x00\x00\x00\x12\x00\x00\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x00\x00\x5c\x01\x11\x00\x09\x00\x12\x00\x00\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x7f\x01\x00\x00\xa8\x00\x09\x00\x00\x00\x00\x00\xa9\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x7e\x01\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\xa9\x00\xaa\x00\x5c\x01\x11\x00\x00\x00\x12\x00\x00\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x00\x00\x5c\x01\x11\x00\x09\x00\x12\x00\x00\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x82\x01\x00\x00\xa8\x00\x09\x00\x00\x00\x00\x00\x5c\x02\xaa\x00\x00\x00\x00\x00\x00\x00\x81\x01\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x5b\x02\xaa\x00\x5c\x01\x11\x00\x00\x00\x12\x00\x00\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x00\x00\x5c\x01\x11\x00\x09\x00\x12\x00\x00\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x82\x01\x00\x00\xa8\x00\x09\x00\x00\x00\x00\x00\x5a\x02\xaa\x00\x00\x00\x00\x00\x00\x00\x81\x01\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x59\x02\xaa\x00\x5c\x01\x11\x00\x00\x00\x12\x00\x00\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x00\x00\x5c\x01\x11\x00\x00\x00\x12\x00\x00\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x7f\x01\x00\x00\x00\x00\x09\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x7e\x01\x0b\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x01\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x01\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x01\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x01\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x01\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x01\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x03\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x03\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x03\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x12\x00\x13\x00\x00\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\xa5\x00\x00\x00\x00\x00\xa8\x00\x09\x00\x00\x00\x00\x00\xae\x01\xaa\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\xae\x01\x81\x02\x5c\x01\x11\x00\x00\x00\x12\x00\x00\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x00\x00\x5c\x01\x11\x00\x00\x00\x12\x00\x09\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x00\x00\xa5\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x7f\x02\xaa\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\xa8\x00\x5c\x01\x11\x00\x00\x00\x12\x00\x7d\x02\xa5\x01\x14\x00\x15\x00\x16\x00\x5d\x01\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x01\x11\x00\xa5\x00\x12\x00\x00\x00\x0c\x00\x14\x00\x15\x00\x16\x00\x5d\x01\x00\x00\xa5\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x01\x11\x00\x00\x00\x12\x00\x00\x00\x00\x00\x14\x00\x15\x00\x16\x00\x5d\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"#++happyReduceArr = Happy_Data_Array.array (7, 524) [+	(7 , happyReduce_7),+	(8 , happyReduce_8),+	(9 , happyReduce_9),+	(10 , happyReduce_10),+	(11 , happyReduce_11),+	(12 , happyReduce_12),+	(13 , happyReduce_13),+	(14 , happyReduce_14),+	(15 , happyReduce_15),+	(16 , happyReduce_16),+	(17 , happyReduce_17),+	(18 , happyReduce_18),+	(19 , happyReduce_19),+	(20 , happyReduce_20),+	(21 , happyReduce_21),+	(22 , happyReduce_22),+	(23 , happyReduce_23),+	(24 , happyReduce_24),+	(25 , happyReduce_25),+	(26 , happyReduce_26),+	(27 , happyReduce_27),+	(28 , happyReduce_28),+	(29 , happyReduce_29),+	(30 , happyReduce_30),+	(31 , happyReduce_31),+	(32 , happyReduce_32),+	(33 , happyReduce_33),+	(34 , happyReduce_34),+	(35 , happyReduce_35),+	(36 , happyReduce_36),+	(37 , happyReduce_37),+	(38 , happyReduce_38),+	(39 , happyReduce_39),+	(40 , happyReduce_40),+	(41 , happyReduce_41),+	(42 , happyReduce_42),+	(43 , happyReduce_43),+	(44 , happyReduce_44),+	(45 , happyReduce_45),+	(46 , happyReduce_46),+	(47 , happyReduce_47),+	(48 , happyReduce_48),+	(49 , happyReduce_49),+	(50 , happyReduce_50),+	(51 , happyReduce_51),+	(52 , happyReduce_52),+	(53 , happyReduce_53),+	(54 , happyReduce_54),+	(55 , happyReduce_55),+	(56 , happyReduce_56),+	(57 , happyReduce_57),+	(58 , happyReduce_58),+	(59 , happyReduce_59),+	(60 , happyReduce_60),+	(61 , happyReduce_61),+	(62 , happyReduce_62),+	(63 , happyReduce_63),+	(64 , happyReduce_64),+	(65 , happyReduce_65),+	(66 , happyReduce_66),+	(67 , happyReduce_67),+	(68 , happyReduce_68),+	(69 , happyReduce_69),+	(70 , happyReduce_70),+	(71 , happyReduce_71),+	(72 , happyReduce_72),+	(73 , happyReduce_73),+	(74 , happyReduce_74),+	(75 , happyReduce_75),+	(76 , happyReduce_76),+	(77 , happyReduce_77),+	(78 , happyReduce_78),+	(79 , happyReduce_79),+	(80 , happyReduce_80),+	(81 , happyReduce_81),+	(82 , happyReduce_82),+	(83 , happyReduce_83),+	(84 , happyReduce_84),+	(85 , happyReduce_85),+	(86 , happyReduce_86),+	(87 , happyReduce_87),+	(88 , happyReduce_88),+	(89 , happyReduce_89),+	(90 , happyReduce_90),+	(91 , happyReduce_91),+	(92 , happyReduce_92),+	(93 , happyReduce_93),+	(94 , happyReduce_94),+	(95 , happyReduce_95),+	(96 , happyReduce_96),+	(97 , happyReduce_97),+	(98 , happyReduce_98),+	(99 , happyReduce_99),+	(100 , happyReduce_100),+	(101 , happyReduce_101),+	(102 , happyReduce_102),+	(103 , happyReduce_103),+	(104 , happyReduce_104),+	(105 , happyReduce_105),+	(106 , happyReduce_106),+	(107 , happyReduce_107),+	(108 , happyReduce_108),+	(109 , happyReduce_109),+	(110 , happyReduce_110),+	(111 , happyReduce_111),+	(112 , happyReduce_112),+	(113 , happyReduce_113),+	(114 , happyReduce_114),+	(115 , happyReduce_115),+	(116 , happyReduce_116),+	(117 , happyReduce_117),+	(118 , happyReduce_118),+	(119 , happyReduce_119),+	(120 , happyReduce_120),+	(121 , happyReduce_121),+	(122 , happyReduce_122),+	(123 , happyReduce_123),+	(124 , happyReduce_124),+	(125 , happyReduce_125),+	(126 , happyReduce_126),+	(127 , happyReduce_127),+	(128 , happyReduce_128),+	(129 , happyReduce_129),+	(130 , happyReduce_130),+	(131 , happyReduce_131),+	(132 , happyReduce_132),+	(133 , happyReduce_133),+	(134 , happyReduce_134),+	(135 , happyReduce_135),+	(136 , happyReduce_136),+	(137 , happyReduce_137),+	(138 , happyReduce_138),+	(139 , happyReduce_139),+	(140 , happyReduce_140),+	(141 , happyReduce_141),+	(142 , happyReduce_142),+	(143 , happyReduce_143),+	(144 , happyReduce_144),+	(145 , happyReduce_145),+	(146 , happyReduce_146),+	(147 , happyReduce_147),+	(148 , happyReduce_148),+	(149 , happyReduce_149),+	(150 , happyReduce_150),+	(151 , happyReduce_151),+	(152 , happyReduce_152),+	(153 , happyReduce_153),+	(154 , happyReduce_154),+	(155 , happyReduce_155),+	(156 , happyReduce_156),+	(157 , happyReduce_157),+	(158 , happyReduce_158),+	(159 , happyReduce_159),+	(160 , happyReduce_160),+	(161 , happyReduce_161),+	(162 , happyReduce_162),+	(163 , happyReduce_163),+	(164 , happyReduce_164),+	(165 , happyReduce_165),+	(166 , happyReduce_166),+	(167 , happyReduce_167),+	(168 , happyReduce_168),+	(169 , happyReduce_169),+	(170 , happyReduce_170),+	(171 , happyReduce_171),+	(172 , happyReduce_172),+	(173 , happyReduce_173),+	(174 , happyReduce_174),+	(175 , happyReduce_175),+	(176 , happyReduce_176),+	(177 , happyReduce_177),+	(178 , happyReduce_178),+	(179 , happyReduce_179),+	(180 , happyReduce_180),+	(181 , happyReduce_181),+	(182 , happyReduce_182),+	(183 , happyReduce_183),+	(184 , happyReduce_184),+	(185 , happyReduce_185),+	(186 , happyReduce_186),+	(187 , happyReduce_187),+	(188 , happyReduce_188),+	(189 , happyReduce_189),+	(190 , happyReduce_190),+	(191 , happyReduce_191),+	(192 , happyReduce_192),+	(193 , happyReduce_193),+	(194 , happyReduce_194),+	(195 , happyReduce_195),+	(196 , happyReduce_196),+	(197 , happyReduce_197),+	(198 , happyReduce_198),+	(199 , happyReduce_199),+	(200 , happyReduce_200),+	(201 , happyReduce_201),+	(202 , happyReduce_202),+	(203 , happyReduce_203),+	(204 , happyReduce_204),+	(205 , happyReduce_205),+	(206 , happyReduce_206),+	(207 , happyReduce_207),+	(208 , happyReduce_208),+	(209 , happyReduce_209),+	(210 , happyReduce_210),+	(211 , happyReduce_211),+	(212 , happyReduce_212),+	(213 , happyReduce_213),+	(214 , happyReduce_214),+	(215 , happyReduce_215),+	(216 , happyReduce_216),+	(217 , happyReduce_217),+	(218 , happyReduce_218),+	(219 , happyReduce_219),+	(220 , happyReduce_220),+	(221 , happyReduce_221),+	(222 , happyReduce_222),+	(223 , happyReduce_223),+	(224 , happyReduce_224),+	(225 , happyReduce_225),+	(226 , happyReduce_226),+	(227 , happyReduce_227),+	(228 , happyReduce_228),+	(229 , happyReduce_229),+	(230 , happyReduce_230),+	(231 , happyReduce_231),+	(232 , happyReduce_232),+	(233 , happyReduce_233),+	(234 , happyReduce_234),+	(235 , happyReduce_235),+	(236 , happyReduce_236),+	(237 , happyReduce_237),+	(238 , happyReduce_238),+	(239 , happyReduce_239),+	(240 , happyReduce_240),+	(241 , happyReduce_241),+	(242 , happyReduce_242),+	(243 , happyReduce_243),+	(244 , happyReduce_244),+	(245 , happyReduce_245),+	(246 , happyReduce_246),+	(247 , happyReduce_247),+	(248 , happyReduce_248),+	(249 , happyReduce_249),+	(250 , happyReduce_250),+	(251 , happyReduce_251),+	(252 , happyReduce_252),+	(253 , happyReduce_253),+	(254 , happyReduce_254),+	(255 , happyReduce_255),+	(256 , happyReduce_256),+	(257 , happyReduce_257),+	(258 , happyReduce_258),+	(259 , happyReduce_259),+	(260 , happyReduce_260),+	(261 , happyReduce_261),+	(262 , happyReduce_262),+	(263 , happyReduce_263),+	(264 , happyReduce_264),+	(265 , happyReduce_265),+	(266 , happyReduce_266),+	(267 , happyReduce_267),+	(268 , happyReduce_268),+	(269 , happyReduce_269),+	(270 , happyReduce_270),+	(271 , happyReduce_271),+	(272 , happyReduce_272),+	(273 , happyReduce_273),+	(274 , happyReduce_274),+	(275 , happyReduce_275),+	(276 , happyReduce_276),+	(277 , happyReduce_277),+	(278 , happyReduce_278),+	(279 , happyReduce_279),+	(280 , happyReduce_280),+	(281 , happyReduce_281),+	(282 , happyReduce_282),+	(283 , happyReduce_283),+	(284 , happyReduce_284),+	(285 , happyReduce_285),+	(286 , happyReduce_286),+	(287 , happyReduce_287),+	(288 , happyReduce_288),+	(289 , happyReduce_289),+	(290 , happyReduce_290),+	(291 , happyReduce_291),+	(292 , happyReduce_292),+	(293 , happyReduce_293),+	(294 , happyReduce_294),+	(295 , happyReduce_295),+	(296 , happyReduce_296),+	(297 , happyReduce_297),+	(298 , happyReduce_298),+	(299 , happyReduce_299),+	(300 , happyReduce_300),+	(301 , happyReduce_301),+	(302 , happyReduce_302),+	(303 , happyReduce_303),+	(304 , happyReduce_304),+	(305 , happyReduce_305),+	(306 , happyReduce_306),+	(307 , happyReduce_307),+	(308 , happyReduce_308),+	(309 , happyReduce_309),+	(310 , happyReduce_310),+	(311 , happyReduce_311),+	(312 , happyReduce_312),+	(313 , happyReduce_313),+	(314 , happyReduce_314),+	(315 , happyReduce_315),+	(316 , happyReduce_316),+	(317 , happyReduce_317),+	(318 , happyReduce_318),+	(319 , happyReduce_319),+	(320 , happyReduce_320),+	(321 , happyReduce_321),+	(322 , happyReduce_322),+	(323 , happyReduce_323),+	(324 , happyReduce_324),+	(325 , happyReduce_325),+	(326 , happyReduce_326),+	(327 , happyReduce_327),+	(328 , happyReduce_328),+	(329 , happyReduce_329),+	(330 , happyReduce_330),+	(331 , happyReduce_331),+	(332 , happyReduce_332),+	(333 , happyReduce_333),+	(334 , happyReduce_334),+	(335 , happyReduce_335),+	(336 , happyReduce_336),+	(337 , happyReduce_337),+	(338 , happyReduce_338),+	(339 , happyReduce_339),+	(340 , happyReduce_340),+	(341 , happyReduce_341),+	(342 , happyReduce_342),+	(343 , happyReduce_343),+	(344 , happyReduce_344),+	(345 , happyReduce_345),+	(346 , happyReduce_346),+	(347 , happyReduce_347),+	(348 , happyReduce_348),+	(349 , happyReduce_349),+	(350 , happyReduce_350),+	(351 , happyReduce_351),+	(352 , happyReduce_352),+	(353 , happyReduce_353),+	(354 , happyReduce_354),+	(355 , happyReduce_355),+	(356 , happyReduce_356),+	(357 , happyReduce_357),+	(358 , happyReduce_358),+	(359 , happyReduce_359),+	(360 , happyReduce_360),+	(361 , happyReduce_361),+	(362 , happyReduce_362),+	(363 , happyReduce_363),+	(364 , happyReduce_364),+	(365 , happyReduce_365),+	(366 , happyReduce_366),+	(367 , happyReduce_367),+	(368 , happyReduce_368),+	(369 , happyReduce_369),+	(370 , happyReduce_370),+	(371 , happyReduce_371),+	(372 , happyReduce_372),+	(373 , happyReduce_373),+	(374 , happyReduce_374),+	(375 , happyReduce_375),+	(376 , happyReduce_376),+	(377 , happyReduce_377),+	(378 , happyReduce_378),+	(379 , happyReduce_379),+	(380 , happyReduce_380),+	(381 , happyReduce_381),+	(382 , happyReduce_382),+	(383 , happyReduce_383),+	(384 , happyReduce_384),+	(385 , happyReduce_385),+	(386 , happyReduce_386),+	(387 , happyReduce_387),+	(388 , happyReduce_388),+	(389 , happyReduce_389),+	(390 , happyReduce_390),+	(391 , happyReduce_391),+	(392 , happyReduce_392),+	(393 , happyReduce_393),+	(394 , happyReduce_394),+	(395 , happyReduce_395),+	(396 , happyReduce_396),+	(397 , happyReduce_397),+	(398 , happyReduce_398),+	(399 , happyReduce_399),+	(400 , happyReduce_400),+	(401 , happyReduce_401),+	(402 , happyReduce_402),+	(403 , happyReduce_403),+	(404 , happyReduce_404),+	(405 , happyReduce_405),+	(406 , happyReduce_406),+	(407 , happyReduce_407),+	(408 , happyReduce_408),+	(409 , happyReduce_409),+	(410 , happyReduce_410),+	(411 , happyReduce_411),+	(412 , happyReduce_412),+	(413 , happyReduce_413),+	(414 , happyReduce_414),+	(415 , happyReduce_415),+	(416 , happyReduce_416),+	(417 , happyReduce_417),+	(418 , happyReduce_418),+	(419 , happyReduce_419),+	(420 , happyReduce_420),+	(421 , happyReduce_421),+	(422 , happyReduce_422),+	(423 , happyReduce_423),+	(424 , happyReduce_424),+	(425 , happyReduce_425),+	(426 , happyReduce_426),+	(427 , happyReduce_427),+	(428 , happyReduce_428),+	(429 , happyReduce_429),+	(430 , happyReduce_430),+	(431 , happyReduce_431),+	(432 , happyReduce_432),+	(433 , happyReduce_433),+	(434 , happyReduce_434),+	(435 , happyReduce_435),+	(436 , happyReduce_436),+	(437 , happyReduce_437),+	(438 , happyReduce_438),+	(439 , happyReduce_439),+	(440 , happyReduce_440),+	(441 , happyReduce_441),+	(442 , happyReduce_442),+	(443 , happyReduce_443),+	(444 , happyReduce_444),+	(445 , happyReduce_445),+	(446 , happyReduce_446),+	(447 , happyReduce_447),+	(448 , happyReduce_448),+	(449 , happyReduce_449),+	(450 , happyReduce_450),+	(451 , happyReduce_451),+	(452 , happyReduce_452),+	(453 , happyReduce_453),+	(454 , happyReduce_454),+	(455 , happyReduce_455),+	(456 , happyReduce_456),+	(457 , happyReduce_457),+	(458 , happyReduce_458),+	(459 , happyReduce_459),+	(460 , happyReduce_460),+	(461 , happyReduce_461),+	(462 , happyReduce_462),+	(463 , happyReduce_463),+	(464 , happyReduce_464),+	(465 , happyReduce_465),+	(466 , happyReduce_466),+	(467 , happyReduce_467),+	(468 , happyReduce_468),+	(469 , happyReduce_469),+	(470 , happyReduce_470),+	(471 , happyReduce_471),+	(472 , happyReduce_472),+	(473 , happyReduce_473),+	(474 , happyReduce_474),+	(475 , happyReduce_475),+	(476 , happyReduce_476),+	(477 , happyReduce_477),+	(478 , happyReduce_478),+	(479 , happyReduce_479),+	(480 , happyReduce_480),+	(481 , happyReduce_481),+	(482 , happyReduce_482),+	(483 , happyReduce_483),+	(484 , happyReduce_484),+	(485 , happyReduce_485),+	(486 , happyReduce_486),+	(487 , happyReduce_487),+	(488 , happyReduce_488),+	(489 , happyReduce_489),+	(490 , happyReduce_490),+	(491 , happyReduce_491),+	(492 , happyReduce_492),+	(493 , happyReduce_493),+	(494 , happyReduce_494),+	(495 , happyReduce_495),+	(496 , happyReduce_496),+	(497 , happyReduce_497),+	(498 , happyReduce_498),+	(499 , happyReduce_499),+	(500 , happyReduce_500),+	(501 , happyReduce_501),+	(502 , happyReduce_502),+	(503 , happyReduce_503),+	(504 , happyReduce_504),+	(505 , happyReduce_505),+	(506 , happyReduce_506),+	(507 , happyReduce_507),+	(508 , happyReduce_508),+	(509 , happyReduce_509),+	(510 , happyReduce_510),+	(511 , happyReduce_511),+	(512 , happyReduce_512),+	(513 , happyReduce_513),+	(514 , happyReduce_514),+	(515 , happyReduce_515),+	(516 , happyReduce_516),+	(517 , happyReduce_517),+	(518 , happyReduce_518),+	(519 , happyReduce_519),+	(520 , happyReduce_520),+	(521 , happyReduce_521),+	(522 , happyReduce_522),+	(523 , happyReduce_523),+	(524 , happyReduce_524)+	]++happy_n_terms = 104 :: Int+happy_n_nonterms = 175 :: Int++happyReduce_7 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_7 = happySpecReduce_1  0# happyReduction_7+happyReduction_7 happy_x_1+	 =  case happyOut11 happy_x_1 of { happy_var_1 -> +	happyIn10+		 (reverse happy_var_1+	)}++happyReduce_8 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_8 = happySpecReduce_2  1# happyReduction_8+happyReduction_8 happy_x_2+	happy_x_1+	 =  case happyOut11 happy_x_1 of { happy_var_1 -> +	case happyOut12 happy_x_2 of { happy_var_2 -> +	happyIn11+		 (happy_var_2 : happy_var_1+	)}}++happyReduce_9 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_9 = happySpecReduce_0  1# happyReduction_9+happyReduction_9  =  happyIn11+		 ([]+	)++happyReduce_10 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_10 = happySpecReduce_1  2# happyReduction_10+happyReduction_10 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwAbstract happy_var_1) -> +	happyIn12+		 (TokKeyword KwAbstract happy_var_1+	)}++happyReduce_11 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_11 = happySpecReduce_1  2# happyReduction_11+happyReduction_11 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> +	happyIn12+		 (TokKeyword KwCoData happy_var_1+	)}++happyReduce_12 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_12 = happySpecReduce_1  2# happyReduction_12+happyReduction_12 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCoInductive happy_var_1) -> +	happyIn12+		 (TokKeyword KwCoInductive happy_var_1+	)}++happyReduce_13 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_13 = happySpecReduce_1  2# happyReduction_13+happyReduction_13 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwConstructor happy_var_1) -> +	happyIn12+		 (TokKeyword KwConstructor happy_var_1+	)}++happyReduce_14 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_14 = happySpecReduce_1  2# happyReduction_14+happyReduction_14 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> +	happyIn12+		 (TokKeyword KwData happy_var_1+	)}++happyReduce_15 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_15 = happySpecReduce_1  2# happyReduction_15+happyReduction_15 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwEta happy_var_1) -> +	happyIn12+		 (TokKeyword KwEta happy_var_1+	)}++happyReduce_16 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_16 = happySpecReduce_1  2# happyReduction_16+happyReduction_16 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwField happy_var_1) -> +	happyIn12+		 (TokKeyword KwField happy_var_1+	)}++happyReduce_17 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_17 = happySpecReduce_1  2# happyReduction_17+happyReduction_17 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwForall happy_var_1) -> +	happyIn12+		 (TokKeyword KwForall happy_var_1+	)}++happyReduce_18 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_18 = happySpecReduce_1  2# happyReduction_18+happyReduction_18 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwVariable happy_var_1) -> +	happyIn12+		 (TokKeyword KwVariable happy_var_1+	)}++happyReduce_19 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_19 = happySpecReduce_1  2# happyReduction_19+happyReduction_19 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwHiding happy_var_1) -> +	happyIn12+		 (TokKeyword KwHiding happy_var_1+	)}++happyReduce_20 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_20 = happySpecReduce_1  2# happyReduction_20+happyReduction_20 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwImport happy_var_1) -> +	happyIn12+		 (TokKeyword KwImport happy_var_1+	)}++happyReduce_21 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_21 = happySpecReduce_1  2# happyReduction_21+happyReduction_21 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIn happy_var_1) -> +	happyIn12+		 (TokKeyword KwIn happy_var_1+	)}++happyReduce_22 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_22 = happySpecReduce_1  2# happyReduction_22+happyReduction_22 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInductive happy_var_1) -> +	happyIn12+		 (TokKeyword KwInductive happy_var_1+	)}++happyReduce_23 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_23 = happySpecReduce_1  2# happyReduction_23+happyReduction_23 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfix happy_var_1) -> +	happyIn12+		 (TokKeyword KwInfix happy_var_1+	)}++happyReduce_24 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_24 = happySpecReduce_1  2# happyReduction_24+happyReduction_24 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixL happy_var_1) -> +	happyIn12+		 (TokKeyword KwInfixL happy_var_1+	)}++happyReduce_25 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_25 = happySpecReduce_1  2# happyReduction_25+happyReduction_25 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixR happy_var_1) -> +	happyIn12+		 (TokKeyword KwInfixR happy_var_1+	)}++happyReduce_26 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_26 = happySpecReduce_1  2# happyReduction_26+happyReduction_26 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInstance happy_var_1) -> +	happyIn12+		 (TokKeyword KwInstance happy_var_1+	)}++happyReduce_27 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_27 = happySpecReduce_1  2# happyReduction_27+happyReduction_27 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOverlap happy_var_1) -> +	happyIn12+		 (TokKeyword KwOverlap happy_var_1+	)}++happyReduce_28 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_28 = happySpecReduce_1  2# happyReduction_28+happyReduction_28 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwLet happy_var_1) -> +	happyIn12+		 (TokKeyword KwLet happy_var_1+	)}++happyReduce_29 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_29 = happySpecReduce_1  2# happyReduction_29+happyReduction_29 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMacro happy_var_1) -> +	happyIn12+		 (TokKeyword KwMacro happy_var_1+	)}++happyReduce_30 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_30 = happySpecReduce_1  2# happyReduction_30+happyReduction_30 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> +	happyIn12+		 (TokKeyword KwModule happy_var_1+	)}++happyReduce_31 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_31 = happySpecReduce_1  2# happyReduction_31+happyReduction_31 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMutual happy_var_1) -> +	happyIn12+		 (TokKeyword KwMutual happy_var_1+	)}++happyReduce_32 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_32 = happySpecReduce_1  2# happyReduction_32+happyReduction_32 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNoEta happy_var_1) -> +	happyIn12+		 (TokKeyword KwNoEta happy_var_1+	)}++happyReduce_33 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_33 = happySpecReduce_1  2# happyReduction_33+happyReduction_33 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> +	happyIn12+		 (TokKeyword KwOpen happy_var_1+	)}++happyReduce_34 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_34 = happySpecReduce_1  2# happyReduction_34+happyReduction_34 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPatternSyn happy_var_1) -> +	happyIn12+		 (TokKeyword KwPatternSyn happy_var_1+	)}++happyReduce_35 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_35 = happySpecReduce_1  2# happyReduction_35+happyReduction_35 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPostulate happy_var_1) -> +	happyIn12+		 (TokKeyword KwPostulate happy_var_1+	)}++happyReduce_36 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_36 = happySpecReduce_1  2# happyReduction_36+happyReduction_36 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrimitive happy_var_1) -> +	happyIn12+		 (TokKeyword KwPrimitive happy_var_1+	)}++happyReduce_37 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_37 = happySpecReduce_1  2# happyReduction_37+happyReduction_37 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrivate happy_var_1) -> +	happyIn12+		 (TokKeyword KwPrivate happy_var_1+	)}++happyReduce_38 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_38 = happySpecReduce_1  2# happyReduction_38+happyReduction_38 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwProp happy_var_1) -> +	happyIn12+		 (TokKeyword KwProp happy_var_1+	)}++happyReduce_39 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_39 = happySpecReduce_1  2# happyReduction_39+happyReduction_39 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPublic happy_var_1) -> +	happyIn12+		 (TokKeyword KwPublic happy_var_1+	)}++happyReduce_40 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_40 = happySpecReduce_1  2# happyReduction_40+happyReduction_40 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuote happy_var_1) -> +	happyIn12+		 (TokKeyword KwQuote happy_var_1+	)}++happyReduce_41 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_41 = happySpecReduce_1  2# happyReduction_41+happyReduction_41 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteContext happy_var_1) -> +	happyIn12+		 (TokKeyword KwQuoteContext happy_var_1+	)}++happyReduce_42 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_42 = happySpecReduce_1  2# happyReduction_42+happyReduction_42 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteGoal happy_var_1) -> +	happyIn12+		 (TokKeyword KwQuoteGoal happy_var_1+	)}++happyReduce_43 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_43 = happySpecReduce_1  2# happyReduction_43+happyReduction_43 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteTerm happy_var_1) -> +	happyIn12+		 (TokKeyword KwQuoteTerm happy_var_1+	)}++happyReduce_44 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_44 = happySpecReduce_1  2# happyReduction_44+happyReduction_44 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> +	happyIn12+		 (TokKeyword KwRecord happy_var_1+	)}++happyReduce_45 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_45 = happySpecReduce_1  2# happyReduction_45+happyReduction_45 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRenaming happy_var_1) -> +	happyIn12+		 (TokKeyword KwRenaming happy_var_1+	)}++happyReduce_46 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_46 = happySpecReduce_1  2# happyReduction_46+happyReduction_46 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRewrite happy_var_1) -> +	happyIn12+		 (TokKeyword KwRewrite happy_var_1+	)}++happyReduce_47 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_47 = happySpecReduce_1  2# happyReduction_47+happyReduction_47 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSet happy_var_1) -> +	happyIn12+		 (TokKeyword KwSet happy_var_1+	)}++happyReduce_48 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_48 = happySpecReduce_1  2# happyReduction_48+happyReduction_48 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSyntax happy_var_1) -> +	happyIn12+		 (TokKeyword KwSyntax happy_var_1+	)}++happyReduce_49 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_49 = happySpecReduce_1  2# happyReduction_49+happyReduction_49 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTactic happy_var_1) -> +	happyIn12+		 (TokKeyword KwTactic happy_var_1+	)}++happyReduce_50 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_50 = happySpecReduce_1  2# happyReduction_50+happyReduction_50 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTo happy_var_1) -> +	happyIn12+		 (TokKeyword KwTo happy_var_1+	)}++happyReduce_51 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_51 = happySpecReduce_1  2# happyReduction_51+happyReduction_51 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquote happy_var_1) -> +	happyIn12+		 (TokKeyword KwUnquote happy_var_1+	)}++happyReduce_52 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_52 = happySpecReduce_1  2# happyReduction_52+happyReduction_52 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDecl happy_var_1) -> +	happyIn12+		 (TokKeyword KwUnquoteDecl happy_var_1+	)}++happyReduce_53 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_53 = happySpecReduce_1  2# happyReduction_53+happyReduction_53 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDef happy_var_1) -> +	happyIn12+		 (TokKeyword KwUnquoteDef happy_var_1+	)}++happyReduce_54 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_54 = happySpecReduce_1  2# happyReduction_54+happyReduction_54 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUsing happy_var_1) -> +	happyIn12+		 (TokKeyword KwUsing happy_var_1+	)}++happyReduce_55 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_55 = happySpecReduce_1  2# happyReduction_55+happyReduction_55 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwWhere happy_var_1) -> +	happyIn12+		 (TokKeyword KwWhere happy_var_1+	)}++happyReduce_56 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_56 = happySpecReduce_1  2# happyReduction_56+happyReduction_56 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwDo happy_var_1) -> +	happyIn12+		 (TokKeyword KwDo happy_var_1+	)}++happyReduce_57 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_57 = happySpecReduce_1  2# happyReduction_57+happyReduction_57 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwWith happy_var_1) -> +	happyIn12+		 (TokKeyword KwWith happy_var_1+	)}++happyReduce_58 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_58 = happySpecReduce_1  2# happyReduction_58+happyReduction_58 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwBUILTIN happy_var_1) -> +	happyIn12+		 (TokKeyword KwBUILTIN happy_var_1+	)}++happyReduce_59 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_59 = happySpecReduce_1  2# happyReduction_59+happyReduction_59 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCATCHALL happy_var_1) -> +	happyIn12+		 (TokKeyword KwCATCHALL happy_var_1+	)}++happyReduce_60 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_60 = happySpecReduce_1  2# happyReduction_60+happyReduction_60 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwDISPLAY happy_var_1) -> +	happyIn12+		 (TokKeyword KwDISPLAY happy_var_1+	)}++happyReduce_61 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_61 = happySpecReduce_1  2# happyReduction_61+happyReduction_61 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwETA happy_var_1) -> +	happyIn12+		 (TokKeyword KwETA happy_var_1+	)}++happyReduce_62 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_62 = happySpecReduce_1  2# happyReduction_62+happyReduction_62 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwFOREIGN happy_var_1) -> +	happyIn12+		 (TokKeyword KwFOREIGN happy_var_1+	)}++happyReduce_63 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_63 = happySpecReduce_1  2# happyReduction_63+happyReduction_63 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILE happy_var_1) -> +	happyIn12+		 (TokKeyword KwCOMPILE happy_var_1+	)}++happyReduce_64 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_64 = happySpecReduce_1  2# happyReduction_64+happyReduction_64 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIMPOSSIBLE happy_var_1) -> +	happyIn12+		 (TokKeyword KwIMPOSSIBLE happy_var_1+	)}++happyReduce_65 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_65 = happySpecReduce_1  2# happyReduction_65+happyReduction_65 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwINJECTIVE happy_var_1) -> +	happyIn12+		 (TokKeyword KwINJECTIVE happy_var_1+	)}++happyReduce_66 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_66 = happySpecReduce_1  2# happyReduction_66+happyReduction_66 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwINLINE happy_var_1) -> +	happyIn12+		 (TokKeyword KwINLINE happy_var_1+	)}++happyReduce_67 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_67 = happySpecReduce_1  2# happyReduction_67+happyReduction_67 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNOINLINE happy_var_1) -> +	happyIn12+		 (TokKeyword KwNOINLINE happy_var_1+	)}++happyReduce_68 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_68 = happySpecReduce_1  2# happyReduction_68+happyReduction_68 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMEASURE happy_var_1) -> +	happyIn12+		 (TokKeyword KwMEASURE happy_var_1+	)}++happyReduce_69 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_69 = happySpecReduce_1  2# happyReduction_69+happyReduction_69 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNO_TERMINATION_CHECK happy_var_1) -> +	happyIn12+		 (TokKeyword KwNO_TERMINATION_CHECK happy_var_1+	)}++happyReduce_70 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_70 = happySpecReduce_1  2# happyReduction_70+happyReduction_70 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNO_POSITIVITY_CHECK happy_var_1) -> +	happyIn12+		 (TokKeyword KwNO_POSITIVITY_CHECK happy_var_1+	)}++happyReduce_71 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_71 = happySpecReduce_1  2# happyReduction_71+happyReduction_71 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNO_UNIVERSE_CHECK happy_var_1) -> +	happyIn12+		 (TokKeyword KwNO_UNIVERSE_CHECK happy_var_1+	)}++happyReduce_72 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_72 = happySpecReduce_1  2# happyReduction_72+happyReduction_72 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNON_TERMINATING happy_var_1) -> +	happyIn12+		 (TokKeyword KwNON_TERMINATING happy_var_1+	)}++happyReduce_73 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_73 = happySpecReduce_1  2# happyReduction_73+happyReduction_73 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOPTIONS happy_var_1) -> +	happyIn12+		 (TokKeyword KwOPTIONS happy_var_1+	)}++happyReduce_74 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_74 = happySpecReduce_1  2# happyReduction_74+happyReduction_74 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPOLARITY happy_var_1) -> +	happyIn12+		 (TokKeyword KwPOLARITY happy_var_1+	)}++happyReduce_75 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_75 = happySpecReduce_1  2# happyReduction_75+happyReduction_75 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwREWRITE happy_var_1) -> +	happyIn12+		 (TokKeyword KwREWRITE happy_var_1+	)}++happyReduce_76 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_76 = happySpecReduce_1  2# happyReduction_76+happyReduction_76 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSTATIC happy_var_1) -> +	happyIn12+		 (TokKeyword KwSTATIC happy_var_1+	)}++happyReduce_77 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_77 = happySpecReduce_1  2# happyReduction_77+happyReduction_77 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTERMINATING happy_var_1) -> +	happyIn12+		 (TokKeyword KwTERMINATING happy_var_1+	)}++happyReduce_78 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_78 = happySpecReduce_1  2# happyReduction_78+happyReduction_78 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwWARNING_ON_USAGE happy_var_1) -> +	happyIn12+		 (TokKeyword KwWARNING_ON_USAGE happy_var_1+	)}++happyReduce_79 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_79 = happySpecReduce_1  2# happyReduction_79+happyReduction_79 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSetN happy_var_1) -> +	happyIn12+		 (TokSetN happy_var_1+	)}++happyReduce_80 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_80 = happySpecReduce_1  2# happyReduction_80+happyReduction_80 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokPropN happy_var_1) -> +	happyIn12+		 (TokPropN happy_var_1+	)}++happyReduce_81 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_81 = happySpecReduce_1  2# happyReduction_81+happyReduction_81 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokTeX happy_var_1) -> +	happyIn12+		 (TokTeX happy_var_1+	)}++happyReduce_82 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_82 = happySpecReduce_1  2# happyReduction_82+happyReduction_82 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokComment happy_var_1) -> +	happyIn12+		 (TokComment happy_var_1+	)}++happyReduce_83 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_83 = happySpecReduce_1  2# happyReduction_83+happyReduction_83 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymEllipsis happy_var_1) -> +	happyIn12+		 (TokSymbol SymEllipsis happy_var_1+	)}++happyReduce_84 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_84 = happySpecReduce_1  2# happyReduction_84+happyReduction_84 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDotDot happy_var_1) -> +	happyIn12+		 (TokSymbol SymDotDot happy_var_1+	)}++happyReduce_85 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_85 = happySpecReduce_1  2# happyReduction_85+happyReduction_85 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDot happy_var_1) -> +	happyIn12+		 (TokSymbol SymDot happy_var_1+	)}++happyReduce_86 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_86 = happySpecReduce_1  2# happyReduction_86+happyReduction_86 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymSemi happy_var_1) -> +	happyIn12+		 (TokSymbol SymSemi happy_var_1+	)}++happyReduce_87 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_87 = happySpecReduce_1  2# happyReduction_87+happyReduction_87 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymColon happy_var_1) -> +	happyIn12+		 (TokSymbol SymColon happy_var_1+	)}++happyReduce_88 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_88 = happySpecReduce_1  2# happyReduction_88+happyReduction_88 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymEqual happy_var_1) -> +	happyIn12+		 (TokSymbol SymEqual happy_var_1+	)}++happyReduce_89 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_89 = happySpecReduce_1  2# happyReduction_89+happyReduction_89 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> +	happyIn12+		 (TokSymbol SymUnderscore happy_var_1+	)}++happyReduce_90 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_90 = happySpecReduce_1  2# happyReduction_90+happyReduction_90 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymQuestionMark happy_var_1) -> +	happyIn12+		 (TokSymbol SymQuestionMark happy_var_1+	)}++happyReduce_91 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_91 = happySpecReduce_1  2# happyReduction_91+happyReduction_91 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymArrow happy_var_1) -> +	happyIn12+		 (TokSymbol SymArrow happy_var_1+	)}++happyReduce_92 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_92 = happySpecReduce_1  2# happyReduction_92+happyReduction_92 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> +	happyIn12+		 (TokSymbol SymLambda happy_var_1+	)}++happyReduce_93 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_93 = happySpecReduce_1  2# happyReduction_93+happyReduction_93 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymAs happy_var_1) -> +	happyIn12+		 (TokSymbol SymAs happy_var_1+	)}++happyReduce_94 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_94 = happySpecReduce_1  2# happyReduction_94+happyReduction_94 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymBar happy_var_1) -> +	happyIn12+		 (TokSymbol SymBar happy_var_1+	)}++happyReduce_95 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_95 = happySpecReduce_1  2# happyReduction_95+happyReduction_95 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> +	happyIn12+		 (TokSymbol SymOpenParen happy_var_1+	)}++happyReduce_96 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_96 = happySpecReduce_1  2# happyReduction_96+happyReduction_96 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseParen happy_var_1) -> +	happyIn12+		 (TokSymbol SymCloseParen happy_var_1+	)}++happyReduce_97 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_97 = happySpecReduce_1  2# happyReduction_97+happyReduction_97 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenIdiomBracket happy_var_1) -> +	happyIn12+		 (TokSymbol SymOpenIdiomBracket happy_var_1+	)}++happyReduce_98 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_98 = happySpecReduce_1  2# happyReduction_98+happyReduction_98 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseIdiomBracket happy_var_1) -> +	happyIn12+		 (TokSymbol SymCloseIdiomBracket happy_var_1+	)}++happyReduce_99 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_99 = happySpecReduce_1  2# happyReduction_99+happyReduction_99 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> +	happyIn12+		 (TokSymbol SymDoubleOpenBrace happy_var_1+	)}++happyReduce_100 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_100 = happySpecReduce_1  2# happyReduction_100+happyReduction_100 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleCloseBrace happy_var_1) -> +	happyIn12+		 (TokSymbol SymDoubleCloseBrace happy_var_1+	)}++happyReduce_101 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_101 = happySpecReduce_1  2# happyReduction_101+happyReduction_101 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> +	happyIn12+		 (TokSymbol SymOpenBrace happy_var_1+	)}++happyReduce_102 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_102 = happySpecReduce_1  2# happyReduction_102+happyReduction_102 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseBrace happy_var_1) -> +	happyIn12+		 (TokSymbol SymCloseBrace happy_var_1+	)}++happyReduce_103 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_103 = happySpecReduce_1  2# happyReduction_103+happyReduction_103 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenVirtualBrace happy_var_1) -> +	happyIn12+		 (TokSymbol SymOpenVirtualBrace happy_var_1+	)}++happyReduce_104 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_104 = happySpecReduce_1  2# happyReduction_104+happyReduction_104 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseVirtualBrace happy_var_1) -> +	happyIn12+		 (TokSymbol SymCloseVirtualBrace happy_var_1+	)}++happyReduce_105 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_105 = happySpecReduce_1  2# happyReduction_105+happyReduction_105 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymVirtualSemi happy_var_1) -> +	happyIn12+		 (TokSymbol SymVirtualSemi happy_var_1+	)}++happyReduce_106 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_106 = happySpecReduce_1  2# happyReduction_106+happyReduction_106 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	happyIn12+		 (TokSymbol SymOpenPragma happy_var_1+	)}++happyReduce_107 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_107 = happySpecReduce_1  2# happyReduction_107+happyReduction_107 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymClosePragma happy_var_1) -> +	happyIn12+		 (TokSymbol SymClosePragma happy_var_1+	)}++happyReduce_108 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_108 = happySpecReduce_1  2# happyReduction_108+happyReduction_108 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokId happy_var_1) -> +	happyIn12+		 (TokId happy_var_1+	)}++happyReduce_109 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_109 = happySpecReduce_1  2# happyReduction_109+happyReduction_109 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokQId happy_var_1) -> +	happyIn12+		 (TokQId happy_var_1+	)}++happyReduce_110 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_110 = happySpecReduce_1  2# happyReduction_110+happyReduction_110 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> +	happyIn12+		 (TokString happy_var_1+	)}++happyReduce_111 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_111 = happySpecReduce_1  2# happyReduction_111+happyReduction_111 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> +	happyIn12+		 (TokLiteral happy_var_1+	)}++happyReduce_112 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_112 = happySpecReduce_3  3# happyReduction_112+happyReduction_112 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut143 happy_x_2 of { happy_var_2 -> +	happyIn13+		 (takeOptionsPragmas happy_var_2+	)}++happyReduce_113 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_113 = happySpecReduce_0  4# happyReduction_113+happyReduction_113  =  happyIn14+		 (()+	)++happyReduce_114 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_114 = happySpecReduce_1  4# happyReduction_114+happyReduction_114 happy_x_1+	 =  happyIn14+		 (()+	)++happyReduce_115 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_115 = happySpecReduce_1  5# happyReduction_115+happyReduction_115 happy_x_1+	 =  happyIn15+		 (()+	)++happyReduce_116 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_116 = happyMonadReduce 1# 5# happyReduction_116+happyReduction_116 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((( popContext))+	) (\r -> happyReturn (happyIn15 r))++happyReduce_117 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_117 = happySpecReduce_1  6# happyReduction_117+happyReduction_117 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymSemi happy_var_1) -> +	happyIn16+		 (happy_var_1+	)}++happyReduce_118 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_118 = happySpecReduce_1  6# happyReduction_118+happyReduction_118 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymVirtualSemi happy_var_1) -> +	happyIn16+		 (happy_var_1+	)}++happyReduce_119 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_119 = happyMonadReduce 0# 7# happyReduction_119+happyReduction_119 (happyRest) tk+	 = happyThen ((( pushLexState imp_dir))+	) (\r -> happyReturn (happyIn17 r))++happyReduce_120 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_120 = happyMonadReduce 1# 8# happyReduction_120+happyReduction_120 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> +	( case happy_var_1 of {+                     LitNat _ i -> return i;+                     _          -> parseError $ "Expected integer"+                   })})+	) (\r -> happyReturn (happyIn18 r))++happyReduce_121 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_121 = happyMonadReduce 1# 9# happyReduction_121+happyReduction_121 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokId happy_var_1) -> +	( mkName happy_var_1)})+	) (\r -> happyReturn (happyIn19 r))++happyReduce_122 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_122 = happySpecReduce_2  10# happyReduction_122+happyReduction_122 happy_x_2+	happy_x_1+	 =  case happyOut19 happy_x_1 of { happy_var_1 -> +	case happyOut20 happy_x_2 of { happy_var_2 -> +	happyIn20+		 (happy_var_1 : happy_var_2+	)}}++happyReduce_123 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_123 = happySpecReduce_1  10# happyReduction_123+happyReduction_123 happy_x_1+	 =  case happyOut19 happy_x_1 of { happy_var_1 -> +	happyIn20+		 ([happy_var_1]+	)}++happyReduce_124 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_124 = happySpecReduce_1  11# happyReduction_124+happyReduction_124 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleCloseBrace happy_var_1) -> +	happyIn21+		 (getRange happy_var_1+	)}++happyReduce_125 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_125 = happyMonadReduce 2# 11# happyReduction_125+happyReduction_125 (happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokSymbol SymCloseBrace happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokSymbol SymCloseBrace happy_var_2) -> +	(+      if posPos (fromJust (rEnd' (getRange happy_var_2))) -+         posPos (fromJust (rStart' (getRange happy_var_1))) > 2+      then parseErrorRange happy_var_2 "Expecting '}}', found separated '}'s."+      else return $ getRange (happy_var_1, happy_var_2))}})+	) (\r -> happyReturn (happyIn21 r))++happyReduce_126 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_126 = happySpecReduce_2  12# happyReduction_126+happyReduction_126 happy_x_2+	happy_x_1+	 =  case happyOut19 happy_x_2 of { happy_var_2 -> +	happyIn22+		 (setRelevance NonStrict $ defaultArg happy_var_2+	)}++happyReduce_127 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_127 = happySpecReduce_2  12# happyReduction_127+happyReduction_127 happy_x_2+	happy_x_1+	 =  case happyOut19 happy_x_2 of { happy_var_2 -> +	happyIn22+		 (setRelevance Irrelevant $ defaultArg happy_var_2+	)}++happyReduce_128 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_128 = happySpecReduce_1  12# happyReduction_128+happyReduction_128 happy_x_1+	 =  case happyOut19 happy_x_1 of { happy_var_1 -> +	happyIn22+		 (defaultArg happy_var_1+	)}++happyReduce_129 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_129 = happySpecReduce_2  13# happyReduction_129+happyReduction_129 happy_x_2+	happy_x_1+	 =  case happyOut22 happy_x_1 of { happy_var_1 -> +	case happyOut23 happy_x_2 of { happy_var_2 -> +	happyIn23+		 (happy_var_1 : happy_var_2+	)}}++happyReduce_130 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_130 = happySpecReduce_1  13# happyReduction_130+happyReduction_130 happy_x_1+	 =  case happyOut22 happy_x_1 of { happy_var_1 -> +	happyIn23+		 ([happy_var_1]+	)}++happyReduce_131 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_131 = happySpecReduce_2  14# happyReduction_131+happyReduction_131 happy_x_2+	happy_x_1+	 =  case happyOut22 happy_x_1 of { happy_var_1 -> +	case happyOut24 happy_x_2 of { happy_var_2 -> +	happyIn24+		 (happy_var_1 : happy_var_2+	)}}++happyReduce_132 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_132 = happySpecReduce_1  14# happyReduction_132+happyReduction_132 happy_x_1+	 =  case happyOut22 happy_x_1 of { happy_var_1 -> +	happyIn24+		 ([happy_var_1]+	)}++happyReduce_133 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_133 = happyReduce 4# 14# happyReduction_133+happyReduction_133 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut23 happy_x_2 of { happy_var_2 -> +	case happyOut24 happy_x_4 of { happy_var_4 -> +	happyIn24+		 (map makeInstance happy_var_2 ++ happy_var_4+	) `HappyStk` happyRest}}++happyReduce_134 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_134 = happySpecReduce_3  14# happyReduction_134+happyReduction_134 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut23 happy_x_2 of { happy_var_2 -> +	happyIn24+		 (map makeInstance happy_var_2+	)}++happyReduce_135 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_135 = happyReduce 4# 14# happyReduction_135+happyReduction_135 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut23 happy_x_2 of { happy_var_2 -> +	case happyOut24 happy_x_4 of { happy_var_4 -> +	happyIn24+		 (map hide happy_var_2 ++ happy_var_4+	) `HappyStk` happyRest}}++happyReduce_136 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_136 = happySpecReduce_3  14# happyReduction_136+happyReduction_136 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut23 happy_x_2 of { happy_var_2 -> +	happyIn24+		 (map hide happy_var_2+	)}++happyReduce_137 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_137 = happyReduce 5# 14# happyReduction_137+happyReduction_137 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut20 happy_x_3 of { happy_var_3 -> +	case happyOut24 happy_x_5 of { happy_var_5 -> +	happyIn24+		 (map (hide . setRelevance Irrelevant . defaultArg) happy_var_3 ++ happy_var_5+	) `HappyStk` happyRest}}++happyReduce_138 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_138 = happyReduce 4# 14# happyReduction_138+happyReduction_138 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut20 happy_x_3 of { happy_var_3 -> +	happyIn24+		 (map (hide . setRelevance Irrelevant . defaultArg) happy_var_3+	) `HappyStk` happyRest}++happyReduce_139 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_139 = happyReduce 5# 14# happyReduction_139+happyReduction_139 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut20 happy_x_3 of { happy_var_3 -> +	case happyOut24 happy_x_5 of { happy_var_5 -> +	happyIn24+		 (map (makeInstance . setRelevance Irrelevant . defaultArg) happy_var_3 ++ happy_var_5+	) `HappyStk` happyRest}}++happyReduce_140 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_140 = happyReduce 4# 14# happyReduction_140+happyReduction_140 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut20 happy_x_3 of { happy_var_3 -> +	happyIn24+		 (map (makeInstance . setRelevance Irrelevant . defaultArg) happy_var_3+	) `HappyStk` happyRest}++happyReduce_141 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_141 = happyReduce 5# 14# happyReduction_141+happyReduction_141 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut20 happy_x_3 of { happy_var_3 -> +	case happyOut24 happy_x_5 of { happy_var_5 -> +	happyIn24+		 (map (hide . setRelevance NonStrict . defaultArg) happy_var_3 ++ happy_var_5+	) `HappyStk` happyRest}}++happyReduce_142 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_142 = happyReduce 4# 14# happyReduction_142+happyReduction_142 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut20 happy_x_3 of { happy_var_3 -> +	happyIn24+		 (map (hide . setRelevance NonStrict . defaultArg) happy_var_3+	) `HappyStk` happyRest}++happyReduce_143 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_143 = happyReduce 5# 14# happyReduction_143+happyReduction_143 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut20 happy_x_3 of { happy_var_3 -> +	case happyOut24 happy_x_5 of { happy_var_5 -> +	happyIn24+		 (map (makeInstance . setRelevance NonStrict . defaultArg) happy_var_3 ++ happy_var_5+	) `HappyStk` happyRest}}++happyReduce_144 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_144 = happyReduce 4# 14# happyReduction_144+happyReduction_144 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut20 happy_x_3 of { happy_var_3 -> +	happyIn24+		 (map (makeInstance . setRelevance NonStrict . defaultArg) happy_var_3+	) `HappyStk` happyRest}++happyReduce_145 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_145 = happyMonadReduce 2# 15# happyReduction_145+happyReduction_145 (happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut27 happy_x_1 of { happy_var_1 -> +	case happyOut24 happy_x_2 of { happy_var_2 -> +	( mapM (applyAttrs happy_var_1) happy_var_2)}})+	) (\r -> happyReturn (happyIn25 r))++happyReduce_146 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_146 = happyMonadReduce 2# 16# happyReduction_146+happyReduction_146 (happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokSymbol SymAs happy_var_1) -> +	case happyOut54 happy_x_2 of { happy_var_2 -> +	( setRange (getRange (happy_var_1,happy_var_2)) `fmap` toAttribute happy_var_2)}})+	) (\r -> happyReturn (happyIn26 r))++happyReduce_147 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_147 = happySpecReduce_0  17# happyReduction_147+happyReduction_147  =  happyIn27+		 ([]+	)++happyReduce_148 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_148 = happySpecReduce_2  17# happyReduction_148+happyReduction_148 happy_x_2+	happy_x_1+	 =  case happyOut27 happy_x_1 of { happy_var_1 -> +	case happyOut26 happy_x_2 of { happy_var_2 -> +	happyIn27+		 (happy_var_2 : happy_var_1+	)}}++happyReduce_149 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_149 = happySpecReduce_1  18# happyReduction_149+happyReduction_149 happy_x_1+	 =  case happyOut26 happy_x_1 of { happy_var_1 -> +	happyIn28+		 ([happy_var_1]+	)}++happyReduce_150 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_150 = happySpecReduce_2  18# happyReduction_150+happyReduction_150 happy_x_2+	happy_x_1+	 =  case happyOut28 happy_x_1 of { happy_var_1 -> +	case happyOut26 happy_x_2 of { happy_var_2 -> +	happyIn28+		 (happy_var_2 : happy_var_1+	)}}++happyReduce_151 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_151 = happyMonadReduce 1# 19# happyReduction_151+happyReduction_151 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokQId happy_var_1) -> +	( mkQName happy_var_1)})+	) (\r -> happyReturn (happyIn29 r))++happyReduce_152 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_152 = happySpecReduce_1  19# happyReduction_152+happyReduction_152 happy_x_1+	 =  case happyOut19 happy_x_1 of { happy_var_1 -> +	happyIn29+		 (QName happy_var_1+	)}++happyReduce_153 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_153 = happySpecReduce_1  20# happyReduction_153+happyReduction_153 happy_x_1+	 =  case happyOut29 happy_x_1 of { happy_var_1 -> +	happyIn30+		 (happy_var_1+	)}++happyReduce_154 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_154 = happySpecReduce_1  21# happyReduction_154+happyReduction_154 happy_x_1+	 =  case happyOut19 happy_x_1 of { happy_var_1 -> +	happyIn31+		 (happy_var_1+	)}++happyReduce_155 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_155 = happySpecReduce_1  21# happyReduction_155+happyReduction_155 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> +	happyIn31+		 (Name (getRange happy_var_1) InScope [Hole]+	)}++happyReduce_156 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_156 = happySpecReduce_2  22# happyReduction_156+happyReduction_156 happy_x_2+	happy_x_1+	 =  case happyOut31 happy_x_1 of { happy_var_1 -> +	case happyOut32 happy_x_2 of { happy_var_2 -> +	happyIn32+		 (happy_var_1 : happy_var_2+	)}}++happyReduce_157 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_157 = happySpecReduce_1  22# happyReduction_157+happyReduction_157 happy_x_1+	 =  case happyOut31 happy_x_1 of { happy_var_1 -> +	happyIn32+		 ([happy_var_1]+	)}++happyReduce_158 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_158 = happyMonadReduce 1# 23# happyReduction_158+happyReduction_158 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut34 happy_x_1 of { happy_var_1 -> +	(+    case happy_var_1 of+      Left ns -> return ns+      Right _ -> parseError $ "expected sequence of bound identifiers, not absurd pattern")})+	) (\r -> happyReturn (happyIn33 r))++happyReduce_159 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_159 = happyMonadReduce 1# 24# happyReduction_159+happyReduction_159 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut46 happy_x_1 of { happy_var_1 -> +	( boundNamesOrAbsurd happy_var_1)})+	) (\r -> happyReturn (happyIn34 r))++happyReduce_160 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_160 = happyMonadReduce 3# 24# happyReduction_160+happyReduction_160 (happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut29 happy_x_1 of { happy_var_1 -> +	case happyOut29 happy_x_3 of { happy_var_3 -> +	( fmap (Left . (:[])) $ mkNamedArg (Just happy_var_1) (Left happy_var_3))}})+	) (\r -> happyReturn (happyIn34 r))++happyReduce_161 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_161 = happyMonadReduce 3# 24# happyReduction_161+happyReduction_161 (happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut29 happy_x_3 of { happy_var_3 -> +	( fmap (Left . (:[])) $ mkNamedArg Nothing   (Left happy_var_3))})+	) (\r -> happyReturn (happyIn34 r))++happyReduce_162 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_162 = happyMonadReduce 3# 24# happyReduction_162+happyReduction_162 (happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut29 happy_x_1 of { happy_var_1 -> +	case happyOutTok happy_x_3 of { (TokSymbol SymUnderscore happy_var_3) -> +	( fmap (Left . (:[])) $ mkNamedArg (Just happy_var_1) (Right $ getRange happy_var_3))}})+	) (\r -> happyReturn (happyIn34 r))++happyReduce_163 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_163 = happyMonadReduce 3# 24# happyReduction_163+happyReduction_163 (happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_3 of { (TokSymbol SymUnderscore happy_var_3) -> +	( fmap (Left . (:[])) $ mkNamedArg Nothing   (Right $ getRange happy_var_3))})+	) (\r -> happyReturn (happyIn34 r))++happyReduce_164 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_164 = happyMonadReduce 1# 25# happyReduction_164+happyReduction_164 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut46 happy_x_1 of { happy_var_1 -> +	(+    let -- interpret an expression as name+        getName :: Expr -> Maybe Name+        getName (Ident (QName x)) = Just x+        getName (Underscore r _)  = Just (Name r InScope [Hole])+        getName _                 = Nothing++        getNames :: Expr -> Maybe [Name]+        getNames (RawApp _ es) = mapM getName es+        getNames e             = singleton `fmap` getName e++        -- interpret an expression as name or list of hidden names+        getName1 :: Expr -> Maybe [Arg Name]+        getName1 (Ident (QName x)) = Just [defaultArg x]+        getName1 (Underscore r _)  = Just [defaultArg $ Name r InScope [Hole]]+        getName1 (HiddenArg _ (Named Nothing e))+                                   = map (setHiding Hidden . defaultArg) `fmap` getNames e+        getName1 _                 = Nothing++    in+    case mapM getName1 happy_var_1 of+        Just good -> return $ (map . fmap) (unnamed . mkBoundName_) $ concat good+        Nothing   -> parseError $ "expected sequence of possibly hidden bound identifiers")})+	) (\r -> happyReturn (happyIn35 r))++happyReduce_165 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_165 = happySpecReduce_0  26# happyReduction_165+happyReduction_165  =  happyIn36+		 ([]+	)++happyReduce_166 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_166 = happySpecReduce_2  26# happyReduction_166+happyReduction_166 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> +	case happyOut36 happy_x_2 of { happy_var_2 -> +	happyIn36+		 (snd happy_var_1 : happy_var_2+	)}}++happyReduce_167 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_167 = happySpecReduce_1  27# happyReduction_167+happyReduction_167 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> +	happyIn37+		 (snd happy_var_1+	)}++happyReduce_168 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_168 = happySpecReduce_0  28# happyReduction_168+happyReduction_168  =  happyIn38+		 ([]+	)++happyReduce_169 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_169 = happySpecReduce_2  28# happyReduction_169+happyReduction_169 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> +	case happyOut38 happy_x_2 of { happy_var_2 -> +	happyIn38+		 (happy_var_1 : happy_var_2+	)}}++happyReduce_170 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_170 = happySpecReduce_0  29# happyReduction_170+happyReduction_170  =  happyIn39+		 ([]+	)++happyReduce_171 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_171 = happySpecReduce_2  29# happyReduction_171+happyReduction_171 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> +	case happyOut39 happy_x_2 of { happy_var_2 -> +	happyIn39+		 (happy_var_1 : happy_var_2+	)}}++happyReduce_172 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_172 = happyReduce 4# 29# happyReduction_172+happyReduction_172 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOut39 happy_x_2 of { happy_var_2 -> +	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> +	case happyOut39 happy_x_4 of { happy_var_4 -> +	happyIn39+		 ([(happy_var_1, "{-#")] ++ happy_var_2 ++ [(happy_var_3, "#-}")] ++ happy_var_4+	) `HappyStk` happyRest}}}}++happyReduce_173 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_173 = happyMonadReduce 1# 30# happyReduction_173+happyReduction_173 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokString happy_var_1) -> +	( mkName happy_var_1)})+	) (\r -> happyReturn (happyIn40 r))++happyReduce_174 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_174 = happyMonadReduce 1# 31# happyReduction_174+happyReduction_174 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokString happy_var_1) -> +	( pragmaQName happy_var_1)})+	) (\r -> happyReturn (happyIn41 r))++happyReduce_175 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_175 = happyMonadReduce 1# 32# happyReduction_175+happyReduction_175 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut38 happy_x_1 of { happy_var_1 -> +	( mapM pragmaQName happy_var_1)})+	) (\r -> happyReturn (happyIn42 r))++happyReduce_176 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_176 = happySpecReduce_2  33# happyReduction_176+happyReduction_176 happy_x_2+	happy_x_1+	 =  case happyOut63 happy_x_1 of { happy_var_1 -> +	case happyOut43 happy_x_2 of { happy_var_2 -> +	happyIn43+		 (Pi happy_var_1 happy_var_2+	)}}++happyReduce_177 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_177 = happySpecReduce_3  33# happyReduction_177+happyReduction_177 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut50 happy_x_1 of { happy_var_1 -> +	case happyOutTok happy_x_2 of { (TokSymbol SymArrow happy_var_2) -> +	case happyOut43 happy_x_3 of { happy_var_3 -> +	happyIn43+		 (Fun (getRange (happy_var_1,happy_var_2,happy_var_3))+                                              (defaultArg $ RawApp (getRange happy_var_1) happy_var_1)+                                              happy_var_3+	)}}}++happyReduce_178 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_178 = happyMonadReduce 4# 33# happyReduction_178+happyReduction_178 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut28 happy_x_1 of { happy_var_1 -> +	case happyOut50 happy_x_2 of { happy_var_2 -> +	case happyOutTok happy_x_3 of { (TokSymbol SymArrow happy_var_3) -> +	case happyOut43 happy_x_4 of { happy_var_4 -> +	( applyAttrs happy_var_1 (defaultArg $ RawApp (getRange (happy_var_1,happy_var_2)) happy_var_2) <&> \ dom ->+                                             Fun (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) dom happy_var_4)}}}})+	) (\r -> happyReturn (happyIn43 r))++happyReduce_179 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_179 = happySpecReduce_3  33# happyReduction_179+happyReduction_179 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut44 happy_x_1 of { happy_var_1 -> +	case happyOutTok happy_x_2 of { (TokSymbol SymEqual happy_var_2) -> +	case happyOut43 happy_x_3 of { happy_var_3 -> +	happyIn43+		 (Equal (getRange (happy_var_1, happy_var_2, happy_var_3)) happy_var_1 happy_var_3+	)}}}++happyReduce_180 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_180 = happySpecReduce_1  33# happyReduction_180+happyReduction_180 happy_x_1+	 =  case happyOut44 happy_x_1 of { happy_var_1 -> +	happyIn43+		 (happy_var_1+	)}++happyReduce_181 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_181 = happyMonadReduce 1# 34# happyReduction_181+happyReduction_181 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut45 happy_x_1 of { happy_var_1 -> +	( case happy_var_1 of+                      { [e]    -> return e+                      ; e : es -> return $ WithApp (fuseRange e es) e es+                      ; []     -> parseError "impossible: empty with expressions"+                      })})+	) (\r -> happyReturn (happyIn44 r))++happyReduce_182 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_182 = happySpecReduce_3  35# happyReduction_182+happyReduction_182 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut50 happy_x_1 of { happy_var_1 -> +	case happyOut45 happy_x_3 of { happy_var_3 -> +	happyIn45+		 (RawApp (getRange happy_var_1) happy_var_1 :  happy_var_3+	)}}++happyReduce_183 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_183 = happySpecReduce_1  35# happyReduction_183+happyReduction_183 happy_x_1+	 =  case happyOut46 happy_x_1 of { happy_var_1 -> +	happyIn45+		 ([RawApp (getRange happy_var_1) happy_var_1]+	)}++happyReduce_184 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_184 = happySpecReduce_1  36# happyReduction_184+happyReduction_184 happy_x_1+	 =  case happyOut47 happy_x_1 of { happy_var_1 -> +	happyIn46+		 ([happy_var_1]+	)}++happyReduce_185 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_185 = happySpecReduce_2  36# happyReduction_185+happyReduction_185 happy_x_2+	happy_x_1+	 =  case happyOut55 happy_x_1 of { happy_var_1 -> +	case happyOut46 happy_x_2 of { happy_var_2 -> +	happyIn46+		 (happy_var_1 : happy_var_2+	)}}++happyReduce_186 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_186 = happySpecReduce_3  37# happyReduction_186+happyReduction_186 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> +	case happyOut71 happy_x_2 of { happy_var_2 -> +	case happyOut43 happy_x_3 of { happy_var_3 -> +	happyIn47+		 (Lam (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2 happy_var_3+	)}}}++happyReduce_187 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_187 = happySpecReduce_1  37# happyReduction_187+happyReduction_187 happy_x_1+	 =  case happyOut49 happy_x_1 of { happy_var_1 -> +	happyIn47+		 (happy_var_1+	)}++happyReduce_188 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_188 = happySpecReduce_3  37# happyReduction_188+happyReduction_188 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut80 happy_x_2 of { happy_var_2 -> +	case happyOut43 happy_x_3 of { happy_var_3 -> +	happyIn47+		 (forallPi happy_var_2 happy_var_3+	)}}++happyReduce_189 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_189 = happySpecReduce_3  37# happyReduction_189+happyReduction_189 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwLet happy_var_1) -> +	case happyOut181 happy_x_2 of { happy_var_2 -> +	case happyOut48 happy_x_3 of { happy_var_3 -> +	happyIn47+		 (Let (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2 happy_var_3+	)}}}++happyReduce_190 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_190 = happyReduce 4# 37# happyReduction_190+happyReduction_190 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwDo happy_var_1) -> +	case happyOut85 happy_x_3 of { happy_var_3 -> +	happyIn47+		 (DoBlock (getRange (happy_var_1, happy_var_3)) happy_var_3+	) `HappyStk` happyRest}}++happyReduce_191 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_191 = happySpecReduce_1  37# happyReduction_191+happyReduction_191 happy_x_1+	 =  case happyOut55 happy_x_1 of { happy_var_1 -> +	happyIn47+		 (happy_var_1+	)}++happyReduce_192 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_192 = happyReduce 4# 37# happyReduction_192+happyReduction_192 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwQuoteGoal happy_var_1) -> +	case happyOut19 happy_x_2 of { happy_var_2 -> +	case happyOutTok happy_x_3 of { (TokKeyword KwIn happy_var_3) -> +	case happyOut43 happy_x_4 of { happy_var_4 -> +	happyIn47+		 (QuoteGoal (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_2 happy_var_4+	) `HappyStk` happyRest}}}}++happyReduce_193 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_193 = happySpecReduce_2  37# happyReduction_193+happyReduction_193 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTactic happy_var_1) -> +	case happyOut50 happy_x_2 of { happy_var_2 -> +	happyIn47+		 (Tactic (getRange (happy_var_1, happy_var_2)) (RawApp (getRange happy_var_2) happy_var_2) []+	)}}++happyReduce_194 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_194 = happyReduce 4# 37# happyReduction_194+happyReduction_194 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwTactic happy_var_1) -> +	case happyOut50 happy_x_2 of { happy_var_2 -> +	case happyOutTok happy_x_3 of { (TokSymbol SymBar happy_var_3) -> +	case happyOut45 happy_x_4 of { happy_var_4 -> +	happyIn47+		 (Tactic (getRange (happy_var_1, happy_var_2, happy_var_3, happy_var_4)) (RawApp (getRange happy_var_2) happy_var_2) happy_var_4+	) `HappyStk` happyRest}}}}++happyReduce_195 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_195 = happySpecReduce_2  38# happyReduction_195+happyReduction_195 happy_x_2+	happy_x_1+	 =  case happyOut43 happy_x_2 of { happy_var_2 -> +	happyIn48+		 (Just happy_var_2+	)}++happyReduce_196 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_196 = happySpecReduce_0  38# happyReduction_196+happyReduction_196  =  happyIn48+		 (Nothing+	)++happyReduce_197 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_197 = happyReduce 4# 39# happyReduction_197+happyReduction_197 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokSymbol SymOpenBrace happy_var_2) -> +	case happyOut78 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> +	happyIn49+		 (ExtendedLam (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) (reverse happy_var_3)+	) `HappyStk` happyRest}}}}++happyReduce_198 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_198 = happyReduce 5# 39# happyReduction_198+happyReduction_198 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwWhere happy_var_2) -> +	case happyOut79 happy_x_4 of { happy_var_4 -> +	happyIn49+		 (ExtendedLam (getRange (happy_var_1, happy_var_2, happy_var_4)) (reverse happy_var_4)+	) `HappyStk` happyRest}}}++happyReduce_199 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_199 = happyMonadReduce 2# 39# happyReduction_199+happyReduction_199 (happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> +	case happyOut72 happy_x_2 of { happy_var_2 -> +	( case happy_var_2 of+                                       Left (bs, h) -> if null bs then return $ AbsurdLam r h else+                                                       return $ Lam r bs (AbsurdLam r h)+                                                         where r = fuseRange happy_var_1 bs+                                       Right es -> do -- it is of the form @\ { p1 ... () }@+                                                     p <- exprToLHS (RawApp (getRange es) es);+                                                     return $ ExtendedLam (fuseRange happy_var_1 es)+                                                                     [LamClause (p [] []) AbsurdRHS NoWhere False])}})+	) (\r -> happyReturn (happyIn49 r))++happyReduce_200 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_200 = happySpecReduce_1  40# happyReduction_200+happyReduction_200 happy_x_1+	 =  case happyOut55 happy_x_1 of { happy_var_1 -> +	happyIn50+		 ([happy_var_1]+	)}++happyReduce_201 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_201 = happySpecReduce_2  40# happyReduction_201+happyReduction_201 happy_x_2+	happy_x_1+	 =  case happyOut55 happy_x_1 of { happy_var_1 -> +	case happyOut50 happy_x_2 of { happy_var_2 -> +	happyIn50+		 (happy_var_1 : happy_var_2+	)}}++happyReduce_202 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_202 = happySpecReduce_0  41# happyReduction_202+happyReduction_202  =  happyIn51+		 ([]+	)++happyReduce_203 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_203 = happySpecReduce_2  41# happyReduction_203+happyReduction_203 happy_x_2+	happy_x_1+	 =  case happyOut55 happy_x_1 of { happy_var_1 -> +	case happyOut51 happy_x_2 of { happy_var_2 -> +	happyIn51+		 (happy_var_1 : happy_var_2+	)}}++happyReduce_204 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_204 = happySpecReduce_3  42# happyReduction_204+happyReduction_204 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> +	case happyOut43 happy_x_2 of { happy_var_2 -> +	case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) -> +	happyIn52+		 (HiddenArg (getRange (happy_var_1,happy_var_2,happy_var_3)) (maybeNamed happy_var_2)+	)}}}++happyReduce_205 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_205 = happySpecReduce_2  42# happyReduction_205+happyReduction_205 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokSymbol SymCloseBrace happy_var_2) -> +	happyIn52+		 (let r = fuseRange happy_var_1 happy_var_2 in HiddenArg r $ unnamed $ Absurd r+	)}}++happyReduce_206 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_206 = happySpecReduce_1  43# happyReduction_206+happyReduction_206 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymQuestionMark happy_var_1) -> +	happyIn53+		 (QuestionMark (getRange happy_var_1) Nothing+	)}++happyReduce_207 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_207 = happySpecReduce_1  43# happyReduction_207+happyReduction_207 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> +	happyIn53+		 (Underscore (getRange happy_var_1) Nothing+	)}++happyReduce_208 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_208 = happySpecReduce_1  43# happyReduction_208+happyReduction_208 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwProp happy_var_1) -> +	happyIn53+		 (Prop (getRange happy_var_1)+	)}++happyReduce_209 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_209 = happySpecReduce_1  43# happyReduction_209+happyReduction_209 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSet happy_var_1) -> +	happyIn53+		 (Set (getRange happy_var_1)+	)}++happyReduce_210 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_210 = happySpecReduce_1  43# happyReduction_210+happyReduction_210 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuote happy_var_1) -> +	happyIn53+		 (Quote (getRange happy_var_1)+	)}++happyReduce_211 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_211 = happySpecReduce_1  43# happyReduction_211+happyReduction_211 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteTerm happy_var_1) -> +	happyIn53+		 (QuoteTerm (getRange happy_var_1)+	)}++happyReduce_212 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_212 = happySpecReduce_1  43# happyReduction_212+happyReduction_212 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteContext happy_var_1) -> +	happyIn53+		 (QuoteContext (getRange happy_var_1)+	)}++happyReduce_213 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_213 = happySpecReduce_1  43# happyReduction_213+happyReduction_213 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquote happy_var_1) -> +	happyIn53+		 (Unquote (getRange happy_var_1)+	)}++happyReduce_214 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_214 = happySpecReduce_1  43# happyReduction_214+happyReduction_214 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSetN happy_var_1) -> +	happyIn53+		 (SetN (getRange (fst happy_var_1)) (snd happy_var_1)+	)}++happyReduce_215 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_215 = happySpecReduce_1  43# happyReduction_215+happyReduction_215 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokPropN happy_var_1) -> +	happyIn53+		 (PropN (getRange (fst happy_var_1)) (snd happy_var_1)+	)}++happyReduce_216 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_216 = happySpecReduce_3  43# happyReduction_216+happyReduction_216 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> +	case happyOut43 happy_x_2 of { happy_var_2 -> +	case happyOut21 happy_x_3 of { happy_var_3 -> +	happyIn53+		 (InstanceArg (getRange (happy_var_1,happy_var_2,happy_var_3)) (maybeNamed happy_var_2)+	)}}}++happyReduce_217 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_217 = happySpecReduce_3  43# happyReduction_217+happyReduction_217 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenIdiomBracket happy_var_1) -> +	case happyOut43 happy_x_2 of { happy_var_2 -> +	case happyOutTok happy_x_3 of { (TokSymbol SymCloseIdiomBracket happy_var_3) -> +	happyIn53+		 (IdiomBrackets (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2+	)}}}++happyReduce_218 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_218 = happySpecReduce_2  43# happyReduction_218+happyReduction_218 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokSymbol SymCloseParen happy_var_2) -> +	happyIn53+		 (Absurd (fuseRange happy_var_1 happy_var_2)+	)}}++happyReduce_219 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_219 = happySpecReduce_2  43# happyReduction_219+happyReduction_219 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> +	case happyOut21 happy_x_2 of { happy_var_2 -> +	happyIn53+		 (let r = fuseRange happy_var_1 happy_var_2 in InstanceArg r $ unnamed $ Absurd r+	)}}++happyReduce_220 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_220 = happySpecReduce_3  43# happyReduction_220+happyReduction_220 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut19 happy_x_1 of { happy_var_1 -> +	case happyOutTok happy_x_2 of { (TokSymbol SymAs happy_var_2) -> +	case happyOut55 happy_x_3 of { happy_var_3 -> +	happyIn53+		 (As (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_1 happy_var_3+	)}}}++happyReduce_221 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_221 = happySpecReduce_2  43# happyReduction_221+happyReduction_221 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDot happy_var_1) -> +	case happyOut55 happy_x_2 of { happy_var_2 -> +	happyIn53+		 (Dot (fuseRange happy_var_1 happy_var_2) happy_var_2+	)}}++happyReduce_222 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_222 = happyReduce 4# 43# happyReduction_222+happyReduction_222 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokSymbol SymOpenBrace happy_var_2) -> +	case happyOut56 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> +	happyIn53+		 (Rec (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3+	) `HappyStk` happyRest}}}}++happyReduce_223 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_223 = happyReduce 5# 43# happyReduction_223+happyReduction_223 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> +	case happyOut53 happy_x_2 of { happy_var_2 -> +	case happyOutTok happy_x_3 of { (TokSymbol SymOpenBrace happy_var_3) -> +	case happyOut60 happy_x_4 of { happy_var_4 -> +	case happyOutTok happy_x_5 of { (TokSymbol SymCloseBrace happy_var_5) -> +	happyIn53+		 (RecUpdate (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) happy_var_2 happy_var_4+	) `HappyStk` happyRest}}}}}++happyReduce_224 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_224 = happySpecReduce_1  43# happyReduction_224+happyReduction_224 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymEllipsis happy_var_1) -> +	happyIn53+		 (Ellipsis (getRange happy_var_1)+	)}++happyReduce_225 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_225 = happySpecReduce_1  43# happyReduction_225+happyReduction_225 happy_x_1+	 =  case happyOut54 happy_x_1 of { happy_var_1 -> +	happyIn53+		 (happy_var_1+	)}++happyReduce_226 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_226 = happySpecReduce_1  44# happyReduction_226+happyReduction_226 happy_x_1+	 =  case happyOut29 happy_x_1 of { happy_var_1 -> +	happyIn54+		 (Ident happy_var_1+	)}++happyReduce_227 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_227 = happySpecReduce_1  44# happyReduction_227+happyReduction_227 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> +	happyIn54+		 (Lit happy_var_1+	)}++happyReduce_228 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_228 = happySpecReduce_3  44# happyReduction_228+happyReduction_228 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> +	case happyOut43 happy_x_2 of { happy_var_2 -> +	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> +	happyIn54+		 (Paren (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2+	)}}}++happyReduce_229 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_229 = happySpecReduce_1  45# happyReduction_229+happyReduction_229 happy_x_1+	 =  case happyOut52 happy_x_1 of { happy_var_1 -> +	happyIn55+		 (happy_var_1+	)}++happyReduce_230 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_230 = happySpecReduce_1  45# happyReduction_230+happyReduction_230 happy_x_1+	 =  case happyOut53 happy_x_1 of { happy_var_1 -> +	happyIn55+		 (happy_var_1+	)}++happyReduce_231 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_231 = happySpecReduce_0  46# happyReduction_231+happyReduction_231  =  happyIn56+		 ([]+	)++happyReduce_232 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_232 = happySpecReduce_1  46# happyReduction_232+happyReduction_232 happy_x_1+	 =  case happyOut57 happy_x_1 of { happy_var_1 -> +	happyIn56+		 (happy_var_1+	)}++happyReduce_233 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_233 = happySpecReduce_1  47# happyReduction_233+happyReduction_233 happy_x_1+	 =  case happyOut58 happy_x_1 of { happy_var_1 -> +	happyIn57+		 ([happy_var_1]+	)}++happyReduce_234 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_234 = happySpecReduce_3  47# happyReduction_234+happyReduction_234 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut58 happy_x_1 of { happy_var_1 -> +	case happyOut57 happy_x_3 of { happy_var_3 -> +	happyIn57+		 (happy_var_1 : happy_var_3+	)}}++happyReduce_235 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_235 = happySpecReduce_1  48# happyReduction_235+happyReduction_235 happy_x_1+	 =  case happyOut62 happy_x_1 of { happy_var_1 -> +	happyIn58+		 (Left  happy_var_1+	)}++happyReduce_236 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_236 = happySpecReduce_1  48# happyReduction_236+happyReduction_236 happy_x_1+	 =  case happyOut59 happy_x_1 of { happy_var_1 -> +	happyIn58+		 (Right happy_var_1+	)}++happyReduce_237 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_237 = happySpecReduce_3  49# happyReduction_237+happyReduction_237 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut30 happy_x_1 of { happy_var_1 -> +	case happyOut138 happy_x_2 of { happy_var_2 -> +	case happyOut88 happy_x_3 of { happy_var_3 -> +	happyIn59+		 (ModuleAssignment happy_var_1 happy_var_2 happy_var_3+	)}}}++happyReduce_238 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_238 = happySpecReduce_0  50# happyReduction_238+happyReduction_238  =  happyIn60+		 ([]+	)++happyReduce_239 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_239 = happySpecReduce_1  50# happyReduction_239+happyReduction_239 happy_x_1+	 =  case happyOut61 happy_x_1 of { happy_var_1 -> +	happyIn60+		 (happy_var_1+	)}++happyReduce_240 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_240 = happySpecReduce_1  51# happyReduction_240+happyReduction_240 happy_x_1+	 =  case happyOut62 happy_x_1 of { happy_var_1 -> +	happyIn61+		 ([happy_var_1]+	)}++happyReduce_241 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_241 = happySpecReduce_3  51# happyReduction_241+happyReduction_241 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut62 happy_x_1 of { happy_var_1 -> +	case happyOut61 happy_x_3 of { happy_var_3 -> +	happyIn61+		 (happy_var_1 : happy_var_3+	)}}++happyReduce_242 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_242 = happySpecReduce_3  52# happyReduction_242+happyReduction_242 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut19 happy_x_1 of { happy_var_1 -> +	case happyOut43 happy_x_3 of { happy_var_3 -> +	happyIn62+		 (FieldAssignment happy_var_1 happy_var_3+	)}}++happyReduce_243 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_243 = happySpecReduce_2  53# happyReduction_243+happyReduction_243 happy_x_2+	happy_x_1+	 =  case happyOut64 happy_x_1 of { happy_var_1 -> +	happyIn63+		 (happy_var_1+	)}++happyReduce_244 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_244 = happySpecReduce_1  54# happyReduction_244+happyReduction_244 happy_x_1+	 =  case happyOut65 happy_x_1 of { happy_var_1 -> +	happyIn64+		 (happy_var_1+	)}++happyReduce_245 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_245 = happySpecReduce_2  55# happyReduction_245+happyReduction_245 happy_x_2+	happy_x_1+	 =  case happyOut66 happy_x_1 of { happy_var_1 -> +	case happyOut65 happy_x_2 of { happy_var_2 -> +	happyIn65+		 (happy_var_1 : happy_var_2+	)}}++happyReduce_246 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_246 = happySpecReduce_1  55# happyReduction_246+happyReduction_246 happy_x_1+	 =  case happyOut66 happy_x_1 of { happy_var_1 -> +	happyIn65+		 ([happy_var_1]+	)}++happyReduce_247 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_247 = happyReduce 4# 56# happyReduction_247+happyReduction_247 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) -> +	case happyOut69 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> +	happyIn66+		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $+                             setRelevance Irrelevant happy_var_3+	) `HappyStk` happyRest}}}++happyReduce_248 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_248 = happyReduce 4# 56# happyReduction_248+happyReduction_248 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_2 of { (TokSymbol SymOpenBrace happy_var_2) -> +	case happyOut67 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> +	happyIn66+		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $+                             setHiding Hidden $+                             setRelevance Irrelevant happy_var_3+	) `HappyStk` happyRest}}}++happyReduce_249 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_249 = happyReduce 4# 56# happyReduction_249+happyReduction_249 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_2 of { (TokSymbol SymDoubleOpenBrace happy_var_2) -> +	case happyOut67 happy_x_3 of { happy_var_3 -> +	case happyOut21 happy_x_4 of { happy_var_4 -> +	happyIn66+		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $+                             makeInstance $+                             setRelevance Irrelevant happy_var_3+	) `HappyStk` happyRest}}}++happyReduce_250 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_250 = happyReduce 4# 56# happyReduction_250+happyReduction_250 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) -> +	case happyOut69 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> +	happyIn66+		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $+                             setRelevance NonStrict happy_var_3+	) `HappyStk` happyRest}}}++happyReduce_251 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_251 = happyReduce 4# 56# happyReduction_251+happyReduction_251 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_2 of { (TokSymbol SymOpenBrace happy_var_2) -> +	case happyOut67 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> +	happyIn66+		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $+                             setHiding Hidden $+                             setRelevance NonStrict happy_var_3+	) `HappyStk` happyRest}}}++happyReduce_252 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_252 = happyReduce 4# 56# happyReduction_252+happyReduction_252 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_2 of { (TokSymbol SymDoubleOpenBrace happy_var_2) -> +	case happyOut67 happy_x_3 of { happy_var_3 -> +	case happyOut21 happy_x_4 of { happy_var_4 -> +	happyIn66+		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $+                             makeInstance $+                             setRelevance NonStrict happy_var_3+	) `HappyStk` happyRest}}}++happyReduce_253 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_253 = happySpecReduce_3  56# happyReduction_253+happyReduction_253 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> +	case happyOut69 happy_x_2 of { happy_var_2 -> +	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> +	happyIn66+		 (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2+	)}}}++happyReduce_254 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_254 = happySpecReduce_3  56# happyReduction_254+happyReduction_254 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> +	case happyOut70 happy_x_2 of { happy_var_2 -> +	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> +	happyIn66+		 (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2+	)}}}++happyReduce_255 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_255 = happySpecReduce_3  56# happyReduction_255+happyReduction_255 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> +	case happyOut67 happy_x_2 of { happy_var_2 -> +	case happyOut21 happy_x_3 of { happy_var_3 -> +	happyIn66+		 (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) $+                             makeInstance happy_var_2+	)}}}++happyReduce_256 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_256 = happySpecReduce_3  56# happyReduction_256+happyReduction_256 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> +	case happyOut68 happy_x_2 of { happy_var_2 -> +	case happyOut21 happy_x_3 of { happy_var_3 -> +	happyIn66+		 (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) $+                             makeInstance happy_var_2+	)}}}++happyReduce_257 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_257 = happySpecReduce_3  56# happyReduction_257+happyReduction_257 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> +	case happyOut67 happy_x_2 of { happy_var_2 -> +	case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) -> +	happyIn66+		 (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) $+                             setHiding Hidden happy_var_2+	)}}}++happyReduce_258 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_258 = happySpecReduce_3  56# happyReduction_258+happyReduction_258 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> +	case happyOut68 happy_x_2 of { happy_var_2 -> +	case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) -> +	happyIn66+		 (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) $+                             setHiding Hidden happy_var_2+	)}}}++happyReduce_259 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_259 = happySpecReduce_3  56# happyReduction_259+happyReduction_259 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> +	case happyOut137 happy_x_2 of { happy_var_2 -> +	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> +	happyIn66+		 (TLet (getRange (happy_var_1,happy_var_3)) happy_var_2+	)}}}++happyReduce_260 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_260 = happyReduce 4# 56# happyReduction_260+happyReduction_260 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> +	case happyOut181 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> +	happyIn66+		 (TLet (getRange (happy_var_1,happy_var_4)) happy_var_3+	) `HappyStk` happyRest}}}++happyReduce_261 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_261 = happySpecReduce_3  57# happyReduction_261+happyReduction_261 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut33 happy_x_1 of { happy_var_1 -> +	case happyOutTok happy_x_2 of { (TokSymbol SymColon happy_var_2) -> +	case happyOut43 happy_x_3 of { happy_var_3 -> +	happyIn67+		 (let r = getRange (happy_var_1,happy_var_2,happy_var_3) -- the range is approximate only for TypedBindings+    in TBind r happy_var_1 happy_var_3+	)}}}++happyReduce_262 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_262 = happyMonadReduce 4# 58# happyReduction_262+happyReduction_262 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut28 happy_x_1 of { happy_var_1 -> +	case happyOut33 happy_x_2 of { happy_var_2 -> +	case happyOutTok happy_x_3 of { (TokSymbol SymColon happy_var_3) -> +	case happyOut43 happy_x_4 of { happy_var_4 -> +	( do+    let r = getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4) -- the range is approximate only for TypedBindings+    xs <- mapM (applyAttrs happy_var_1) happy_var_2+    return $ TBind r xs happy_var_4)}}}})+	) (\r -> happyReturn (happyIn68 r))++happyReduce_263 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_263 = happySpecReduce_3  59# happyReduction_263+happyReduction_263 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut35 happy_x_1 of { happy_var_1 -> +	case happyOutTok happy_x_2 of { (TokSymbol SymColon happy_var_2) -> +	case happyOut43 happy_x_3 of { happy_var_3 -> +	happyIn69+		 (let r = getRange (happy_var_1,happy_var_2,happy_var_3) -- the range is approximate only for TypedBindings+    in TBind r happy_var_1 happy_var_3+	)}}}++happyReduce_264 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_264 = happyMonadReduce 4# 60# happyReduction_264+happyReduction_264 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut28 happy_x_1 of { happy_var_1 -> +	case happyOut35 happy_x_2 of { happy_var_2 -> +	case happyOutTok happy_x_3 of { (TokSymbol SymColon happy_var_3) -> +	case happyOut43 happy_x_4 of { happy_var_4 -> +	( do+    let r = getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4) -- the range is approximate only for TypedBindings+    xs <- mapM (applyAttrs happy_var_1) happy_var_2+    return $ TBind r xs happy_var_4)}}}})+	) (\r -> happyReturn (happyIn70 r))++happyReduce_265 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_265 = happyMonadReduce 2# 61# happyReduction_265+happyReduction_265 (happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut73 happy_x_1 of { happy_var_1 -> +	(+      case reverse happy_var_1 of+        Left _ : _ -> parseError "Absurd lambda cannot have a body."+        _ : _      -> return [ b | Right b <- happy_var_1 ]+        []         -> parsePanic "Empty LamBinds")})+	) (\r -> happyReturn (happyIn71 r))++happyReduce_266 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_266 = happyMonadReduce 1# 62# happyReduction_266+happyReduction_266 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut74 happy_x_1 of { happy_var_1 -> +	(+    case happy_var_1 of+      Left lb -> case reverse lb of+                   Right _ : _ -> parseError "Missing body for lambda"+                   Left h  : _ -> return $ Left ([ b | Right b <- init lb], h)+                   _           -> parseError "Unsupported variant of lambda"+      Right es -> return $ Right es)})+	) (\r -> happyReturn (happyIn72 r))++happyReduce_267 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_267 = happySpecReduce_2  63# happyReduction_267+happyReduction_267 happy_x_2+	happy_x_1+	 =  case happyOut83 happy_x_1 of { happy_var_1 -> +	case happyOut73 happy_x_2 of { happy_var_2 -> +	happyIn73+		 (map Right happy_var_1 ++ happy_var_2+	)}}++happyReduce_268 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_268 = happySpecReduce_2  63# happyReduction_268+happyReduction_268 happy_x_2+	happy_x_1+	 =  case happyOut66 happy_x_1 of { happy_var_1 -> +	case happyOut73 happy_x_2 of { happy_var_2 -> +	happyIn73+		 (Right (DomainFull happy_var_1) : happy_var_2+	)}}++happyReduce_269 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_269 = happySpecReduce_1  63# happyReduction_269+happyReduction_269 happy_x_1+	 =  case happyOut83 happy_x_1 of { happy_var_1 -> +	happyIn73+		 (map Right happy_var_1+	)}++happyReduce_270 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_270 = happySpecReduce_1  63# happyReduction_270+happyReduction_270 happy_x_1+	 =  case happyOut66 happy_x_1 of { happy_var_1 -> +	happyIn73+		 ([Right $ DomainFull happy_var_1]+	)}++happyReduce_271 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_271 = happySpecReduce_2  63# happyReduction_271+happyReduction_271 happy_x_2+	happy_x_1+	 =  happyIn73+		 ([Left NotHidden]+	)++happyReduce_272 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_272 = happySpecReduce_2  63# happyReduction_272+happyReduction_272 happy_x_2+	happy_x_1+	 =  happyIn73+		 ([Left Hidden]+	)++happyReduce_273 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_273 = happySpecReduce_2  63# happyReduction_273+happyReduction_273 happy_x_2+	happy_x_1+	 =  happyIn73+		 ([Left (Instance NoOverlap)]+	)++happyReduce_274 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_274 = happySpecReduce_2  64# happyReduction_274+happyReduction_274 happy_x_2+	happy_x_1+	 =  case happyOut83 happy_x_1 of { happy_var_1 -> +	case happyOut73 happy_x_2 of { happy_var_2 -> +	happyIn74+		 (Left $ map Right happy_var_1 ++ happy_var_2+	)}}++happyReduce_275 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_275 = happySpecReduce_2  64# happyReduction_275+happyReduction_275 happy_x_2+	happy_x_1+	 =  case happyOut66 happy_x_1 of { happy_var_1 -> +	case happyOut73 happy_x_2 of { happy_var_2 -> +	happyIn74+		 (Left $ Right (DomainFull happy_var_1) : happy_var_2+	)}}++happyReduce_276 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_276 = happySpecReduce_1  64# happyReduction_276+happyReduction_276 happy_x_1+	 =  case happyOut84 happy_x_1 of { happy_var_1 -> +	happyIn74+		 (case happy_var_1 of+                                    Left lb -> Left $ map Right lb+                                    Right es -> Right es+	)}++happyReduce_277 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_277 = happySpecReduce_1  64# happyReduction_277+happyReduction_277 happy_x_1+	 =  case happyOut66 happy_x_1 of { happy_var_1 -> +	happyIn74+		 (Left [Right $ DomainFull happy_var_1]+	)}++happyReduce_278 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_278 = happySpecReduce_2  64# happyReduction_278+happyReduction_278 happy_x_2+	happy_x_1+	 =  happyIn74+		 (Left [Left NotHidden]+	)++happyReduce_279 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_279 = happySpecReduce_2  64# happyReduction_279+happyReduction_279 happy_x_2+	happy_x_1+	 =  happyIn74+		 (Left [Left Hidden]+	)++happyReduce_280 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_280 = happySpecReduce_2  64# happyReduction_280+happyReduction_280 happy_x_2+	happy_x_1+	 =  happyIn74+		 (Left [Left (Instance NoOverlap)]+	)++happyReduce_281 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_281 = happyMonadReduce 3# 65# happyReduction_281+happyReduction_281 (happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut51 happy_x_1 of { happy_var_1 -> +	case happyOut43 happy_x_3 of { happy_var_3 -> +	( do+      p <- exprToLHS (RawApp (getRange happy_var_1) happy_var_1) ;+      return LamClause{ lamLHS      = p [] []+                      , lamRHS      = RHS happy_var_3+                      , lamWhere    = NoWhere+                      , lamCatchAll = False })}})+	) (\r -> happyReturn (happyIn75 r))++happyReduce_282 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_282 = happyMonadReduce 4# 65# happyReduction_282+happyReduction_282 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut51 happy_x_2 of { happy_var_2 -> +	case happyOut43 happy_x_4 of { happy_var_4 -> +	( do+      p <- exprToLHS (RawApp (getRange happy_var_2) happy_var_2) ;+      return LamClause{ lamLHS      = p [] []+                      , lamRHS      = RHS happy_var_4+                      , lamWhere    = NoWhere+                      , lamCatchAll = True })}})+	) (\r -> happyReturn (happyIn75 r))++happyReduce_283 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_283 = happyMonadReduce 1# 66# happyReduction_283+happyReduction_283 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut46 happy_x_1 of { happy_var_1 -> +	( do+      p <- exprToLHS (RawApp (getRange happy_var_1) happy_var_1);+      return LamClause{ lamLHS      = p [] []+                      , lamRHS      = AbsurdRHS+                      , lamWhere    = NoWhere+                      , lamCatchAll = False })})+	) (\r -> happyReturn (happyIn76 r))++happyReduce_284 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_284 = happyMonadReduce 2# 66# happyReduction_284+happyReduction_284 (happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut46 happy_x_2 of { happy_var_2 -> +	( do+      p <- exprToLHS (RawApp (getRange happy_var_2) happy_var_2);+      return LamClause{ lamLHS      = p [] []+                      , lamRHS      = AbsurdRHS+                      , lamWhere    = NoWhere+                      , lamCatchAll = True })})+	) (\r -> happyReturn (happyIn76 r))++happyReduce_285 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_285 = happySpecReduce_1  67# happyReduction_285+happyReduction_285 happy_x_1+	 =  case happyOut75 happy_x_1 of { happy_var_1 -> +	happyIn77+		 (happy_var_1+	)}++happyReduce_286 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_286 = happySpecReduce_1  67# happyReduction_286+happyReduction_286 happy_x_1+	 =  case happyOut76 happy_x_1 of { happy_var_1 -> +	happyIn77+		 (happy_var_1+	)}++happyReduce_287 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_287 = happySpecReduce_3  68# happyReduction_287+happyReduction_287 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut78 happy_x_1 of { happy_var_1 -> +	case happyOut77 happy_x_3 of { happy_var_3 -> +	happyIn78+		 (happy_var_3 : happy_var_1+	)}}++happyReduce_288 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_288 = happySpecReduce_3  68# happyReduction_288+happyReduction_288 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut76 happy_x_1 of { happy_var_1 -> +	case happyOut77 happy_x_3 of { happy_var_3 -> +	happyIn78+		 ([happy_var_3, happy_var_1]+	)}}++happyReduce_289 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_289 = happySpecReduce_1  68# happyReduction_289+happyReduction_289 happy_x_1+	 =  case happyOut75 happy_x_1 of { happy_var_1 -> +	happyIn78+		 ([happy_var_1]+	)}++happyReduce_290 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_290 = happySpecReduce_3  69# happyReduction_290+happyReduction_290 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut79 happy_x_1 of { happy_var_1 -> +	case happyOut77 happy_x_3 of { happy_var_3 -> +	happyIn79+		 (happy_var_3 : happy_var_1+	)}}++happyReduce_291 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_291 = happySpecReduce_1  69# happyReduction_291+happyReduction_291 happy_x_1+	 =  case happyOut77 happy_x_1 of { happy_var_1 -> +	happyIn79+		 ([happy_var_1]+	)}++happyReduce_292 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_292 = happySpecReduce_2  70# happyReduction_292+happyReduction_292 happy_x_2+	happy_x_1+	 =  case happyOut81 happy_x_1 of { happy_var_1 -> +	happyIn80+		 (happy_var_1+	)}++happyReduce_293 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_293 = happySpecReduce_2  71# happyReduction_293+happyReduction_293 happy_x_2+	happy_x_1+	 =  case happyOut83 happy_x_1 of { happy_var_1 -> +	case happyOut81 happy_x_2 of { happy_var_2 -> +	happyIn81+		 (happy_var_1 ++ happy_var_2+	)}}++happyReduce_294 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_294 = happySpecReduce_2  71# happyReduction_294+happyReduction_294 happy_x_2+	happy_x_1+	 =  case happyOut66 happy_x_1 of { happy_var_1 -> +	case happyOut81 happy_x_2 of { happy_var_2 -> +	happyIn81+		 (DomainFull happy_var_1 : happy_var_2+	)}}++happyReduce_295 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_295 = happySpecReduce_1  71# happyReduction_295+happyReduction_295 happy_x_1+	 =  case happyOut83 happy_x_1 of { happy_var_1 -> +	happyIn81+		 (happy_var_1+	)}++happyReduce_296 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_296 = happySpecReduce_1  71# happyReduction_296+happyReduction_296 happy_x_1+	 =  case happyOut66 happy_x_1 of { happy_var_1 -> +	happyIn81+		 ([DomainFull happy_var_1]+	)}++happyReduce_297 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_297 = happySpecReduce_2  72# happyReduction_297+happyReduction_297 happy_x_2+	happy_x_1+	 =  case happyOut83 happy_x_1 of { happy_var_1 -> +	case happyOut82 happy_x_2 of { happy_var_2 -> +	happyIn82+		 (happy_var_1 ++ happy_var_2+	)}}++happyReduce_298 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_298 = happySpecReduce_2  72# happyReduction_298+happyReduction_298 happy_x_2+	happy_x_1+	 =  case happyOut66 happy_x_1 of { happy_var_1 -> +	case happyOut82 happy_x_2 of { happy_var_2 -> +	happyIn82+		 (DomainFull happy_var_1 : happy_var_2+	)}}++happyReduce_299 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_299 = happySpecReduce_0  72# happyReduction_299+happyReduction_299  =  happyIn82+		 ([]+	)++happyReduce_300 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_300 = happyMonadReduce 1# 73# happyReduction_300+happyReduction_300 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut84 happy_x_1 of { happy_var_1 -> +	( case happy_var_1 of+                             Left lbs -> return lbs+                             Right _ -> parseError "expected sequence of bound identifiers, not absurd pattern")})+	) (\r -> happyReturn (happyIn83 r))++happyReduce_301 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_301 = happySpecReduce_1  74# happyReduction_301+happyReduction_301 happy_x_1+	 =  case happyOut31 happy_x_1 of { happy_var_1 -> +	happyIn84+		 (Left [DomainFree $ defaultNamedArg $ mkBoundName_ happy_var_1]+	)}++happyReduce_302 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_302 = happySpecReduce_2  74# happyReduction_302+happyReduction_302 happy_x_2+	happy_x_1+	 =  case happyOut31 happy_x_2 of { happy_var_2 -> +	happyIn84+		 (Left [DomainFree $ setRelevance Irrelevant $ defaultNamedArg $ mkBoundName_ happy_var_2]+	)}++happyReduce_303 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_303 = happySpecReduce_2  74# happyReduction_303+happyReduction_303 happy_x_2+	happy_x_1+	 =  case happyOut31 happy_x_2 of { happy_var_2 -> +	happyIn84+		 (Left [DomainFree $ setRelevance NonStrict $ defaultNamedArg $ mkBoundName_ happy_var_2]+	)}++happyReduce_304 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_304 = happySpecReduce_3  74# happyReduction_304+happyReduction_304 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut34 happy_x_2 of { happy_var_2 -> +	happyIn84+		 (mapLeft (map DomainFree) happy_var_2+	)}++happyReduce_305 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_305 = happyMonadReduce 4# 74# happyReduction_305+happyReduction_305 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut28 happy_x_2 of { happy_var_2 -> +	case happyOut34 happy_x_3 of { happy_var_3 -> +	( applyAttrs happy_var_2 defaultArgInfo <&> \ ai ->+              mapLeft (map (DomainFree . setArgInfo ai)) happy_var_3)}})+	) (\r -> happyReturn (happyIn84 r))++happyReduce_306 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_306 = happySpecReduce_3  74# happyReduction_306+happyReduction_306 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut34 happy_x_2 of { happy_var_2 -> +	happyIn84+		 (mapLeft (map (DomainFree . setHiding Hidden)) happy_var_2+	)}++happyReduce_307 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_307 = happyMonadReduce 4# 74# happyReduction_307+happyReduction_307 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut28 happy_x_2 of { happy_var_2 -> +	case happyOut34 happy_x_3 of { happy_var_3 -> +	( applyAttrs happy_var_2 defaultArgInfo <&> \ ai ->+              mapLeft (map (DomainFree . setHiding Hidden . setArgInfo ai)) happy_var_3)}})+	) (\r -> happyReturn (happyIn84 r))++happyReduce_308 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_308 = happySpecReduce_3  74# happyReduction_308+happyReduction_308 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut33 happy_x_2 of { happy_var_2 -> +	happyIn84+		 (Left $ map (DomainFree . makeInstance) happy_var_2+	)}++happyReduce_309 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_309 = happyMonadReduce 4# 74# happyReduction_309+happyReduction_309 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut28 happy_x_2 of { happy_var_2 -> +	case happyOut33 happy_x_3 of { happy_var_3 -> +	( applyAttrs happy_var_2 defaultArgInfo <&> \ ai ->+              Left $ map (DomainFree . makeInstance . setArgInfo ai) happy_var_3)}})+	) (\r -> happyReturn (happyIn84 r))++happyReduce_310 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_310 = happyReduce 4# 74# happyReduction_310+happyReduction_310 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut33 happy_x_3 of { happy_var_3 -> +	happyIn84+		 (Left $ map (DomainFree . setHiding Hidden . setRelevance Irrelevant) happy_var_3+	) `HappyStk` happyRest}++happyReduce_311 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_311 = happyReduce 4# 74# happyReduction_311+happyReduction_311 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut33 happy_x_3 of { happy_var_3 -> +	happyIn84+		 (Left $ map (DomainFree . makeInstance . setRelevance Irrelevant) happy_var_3+	) `HappyStk` happyRest}++happyReduce_312 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_312 = happyReduce 4# 74# happyReduction_312+happyReduction_312 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut33 happy_x_3 of { happy_var_3 -> +	happyIn84+		 (Left $ map (DomainFree . setHiding Hidden . setRelevance NonStrict) happy_var_3+	) `HappyStk` happyRest}++happyReduce_313 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_313 = happyReduce 4# 74# happyReduction_313+happyReduction_313 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut33 happy_x_3 of { happy_var_3 -> +	happyIn84+		 (Left $ map (DomainFree . makeInstance . setRelevance NonStrict) happy_var_3+	) `HappyStk` happyRest}++happyReduce_314 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_314 = happySpecReduce_1  75# happyReduction_314+happyReduction_314 happy_x_1+	 =  case happyOut86 happy_x_1 of { happy_var_1 -> +	happyIn85+		 ([happy_var_1]+	)}++happyReduce_315 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_315 = happySpecReduce_2  75# happyReduction_315+happyReduction_315 happy_x_2+	happy_x_1+	 =  case happyOut86 happy_x_1 of { happy_var_1 -> +	happyIn85+		 ([happy_var_1]+	)}++happyReduce_316 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_316 = happySpecReduce_3  75# happyReduction_316+happyReduction_316 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut86 happy_x_1 of { happy_var_1 -> +	case happyOut85 happy_x_3 of { happy_var_3 -> +	happyIn85+		 (happy_var_1 : happy_var_3+	)}}++happyReduce_317 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_317 = happyMonadReduce 2# 76# happyReduction_317+happyReduction_317 (happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut43 happy_x_1 of { happy_var_1 -> +	case happyOut87 happy_x_2 of { happy_var_2 -> +	( buildDoStmt happy_var_1 happy_var_2)}})+	) (\r -> happyReturn (happyIn86 r))++happyReduce_318 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_318 = happySpecReduce_0  77# happyReduction_318+happyReduction_318  =  happyIn87+		 ([]+	)++happyReduce_319 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_319 = happyReduce 4# 77# happyReduction_319+happyReduction_319 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut79 happy_x_3 of { happy_var_3 -> +	happyIn87+		 (reverse happy_var_3+	) `HappyStk` happyRest}++happyReduce_320 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_320 = happyMonadReduce 1# 78# happyReduction_320+happyReduction_320 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut89 happy_x_1 of { happy_var_1 -> +	( mergeImportDirectives happy_var_1)})+	) (\r -> happyReturn (happyIn88 r))++happyReduce_321 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_321 = happySpecReduce_2  79# happyReduction_321+happyReduction_321 happy_x_2+	happy_x_1+	 =  case happyOut90 happy_x_1 of { happy_var_1 -> +	case happyOut89 happy_x_2 of { happy_var_2 -> +	happyIn89+		 (happy_var_1 : happy_var_2+	)}}++happyReduce_322 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_322 = happySpecReduce_0  79# happyReduction_322+happyReduction_322  =  happyIn89+		 ([]+	)++happyReduce_323 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_323 = happySpecReduce_1  80# happyReduction_323+happyReduction_323 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPublic happy_var_1) -> +	happyIn90+		 (defaultImportDir { importDirRange = getRange happy_var_1, publicOpen = True }+	)}++happyReduce_324 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_324 = happySpecReduce_1  80# happyReduction_324+happyReduction_324 happy_x_1+	 =  case happyOut91 happy_x_1 of { happy_var_1 -> +	happyIn90+		 (defaultImportDir { importDirRange = snd happy_var_1, using    = fst happy_var_1 }+	)}++happyReduce_325 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_325 = happySpecReduce_1  80# happyReduction_325+happyReduction_325 happy_x_1+	 =  case happyOut92 happy_x_1 of { happy_var_1 -> +	happyIn90+		 (defaultImportDir { importDirRange = snd happy_var_1, hiding   = fst happy_var_1 }+	)}++happyReduce_326 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_326 = happySpecReduce_1  80# happyReduction_326+happyReduction_326 happy_x_1+	 =  case happyOut93 happy_x_1 of { happy_var_1 -> +	happyIn90+		 (defaultImportDir { importDirRange = snd happy_var_1, impRenaming = fst happy_var_1 }+	)}++happyReduce_327 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_327 = happyReduce 4# 81# happyReduction_327+happyReduction_327 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwUsing happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) -> +	case happyOut98 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> +	happyIn91+		 ((Using happy_var_3 , getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4))+	) `HappyStk` happyRest}}}}++happyReduce_328 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_328 = happyReduce 4# 82# happyReduction_328+happyReduction_328 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwHiding happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) -> +	case happyOut98 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> +	happyIn92+		 ((happy_var_3 , getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4))+	) `HappyStk` happyRest}}}}++happyReduce_329 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_329 = happyReduce 4# 83# happyReduction_329+happyReduction_329 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwRenaming happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) -> +	case happyOut94 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> +	happyIn93+		 ((happy_var_3 , getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4))+	) `HappyStk` happyRest}}}}++happyReduce_330 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_330 = happySpecReduce_3  83# happyReduction_330+happyReduction_330 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRenaming happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) -> +	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> +	happyIn93+		 (([] , getRange (happy_var_1,happy_var_2,happy_var_3))+	)}}}++happyReduce_331 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_331 = happySpecReduce_3  84# happyReduction_331+happyReduction_331 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut95 happy_x_1 of { happy_var_1 -> +	case happyOut94 happy_x_3 of { happy_var_3 -> +	happyIn94+		 (happy_var_1 : happy_var_3+	)}}++happyReduce_332 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_332 = happySpecReduce_1  84# happyReduction_332+happyReduction_332 happy_x_1+	 =  case happyOut95 happy_x_1 of { happy_var_1 -> +	happyIn94+		 ([happy_var_1]+	)}++happyReduce_333 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_333 = happySpecReduce_3  85# happyReduction_333+happyReduction_333 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut96 happy_x_1 of { happy_var_1 -> +	case happyOutTok happy_x_2 of { (TokKeyword KwTo happy_var_2) -> +	case happyOut19 happy_x_3 of { happy_var_3 -> +	happyIn95+		 (Renaming happy_var_1 (setImportedName happy_var_1 happy_var_3) (getRange happy_var_2)+	)}}}++happyReduce_334 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_334 = happySpecReduce_2  86# happyReduction_334+happyReduction_334 happy_x_2+	happy_x_1+	 =  case happyOut19 happy_x_2 of { happy_var_2 -> +	happyIn96+		 (ImportedName happy_var_2+	)}++happyReduce_335 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_335 = happySpecReduce_3  86# happyReduction_335+happyReduction_335 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut19 happy_x_3 of { happy_var_3 -> +	happyIn96+		 (ImportedModule happy_var_3+	)}++happyReduce_336 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_336 = happySpecReduce_1  87# happyReduction_336+happyReduction_336 happy_x_1+	 =  case happyOut19 happy_x_1 of { happy_var_1 -> +	happyIn97+		 (ImportedName happy_var_1+	)}++happyReduce_337 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_337 = happySpecReduce_2  87# happyReduction_337+happyReduction_337 happy_x_2+	happy_x_1+	 =  case happyOut19 happy_x_2 of { happy_var_2 -> +	happyIn97+		 (ImportedModule happy_var_2+	)}++happyReduce_338 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_338 = happySpecReduce_0  88# happyReduction_338+happyReduction_338  =  happyIn98+		 ([]+	)++happyReduce_339 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_339 = happySpecReduce_1  88# happyReduction_339+happyReduction_339 happy_x_1+	 =  case happyOut99 happy_x_1 of { happy_var_1 -> +	happyIn98+		 (happy_var_1+	)}++happyReduce_340 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_340 = happySpecReduce_1  89# happyReduction_340+happyReduction_340 happy_x_1+	 =  case happyOut97 happy_x_1 of { happy_var_1 -> +	happyIn99+		 ([happy_var_1]+	)}++happyReduce_341 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_341 = happySpecReduce_3  89# happyReduction_341+happyReduction_341 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut97 happy_x_1 of { happy_var_1 -> +	case happyOut99 happy_x_3 of { happy_var_3 -> +	happyIn99+		 (happy_var_1 : happy_var_3+	)}}++happyReduce_342 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_342 = happyMonadReduce 3# 90# happyReduction_342+happyReduction_342 (happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut44 happy_x_1 of { happy_var_1 -> +	case happyOut102 happy_x_2 of { happy_var_2 -> +	case happyOut101 happy_x_3 of { happy_var_3 -> +	( exprToLHS happy_var_1 >>= \p -> return (p happy_var_2 happy_var_3))}}})+	) (\r -> happyReturn (happyIn100 r))++happyReduce_343 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_343 = happySpecReduce_0  91# happyReduction_343+happyReduction_343  =  happyIn101+		 ([]+	)++happyReduce_344 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_344 = happySpecReduce_2  91# happyReduction_344+happyReduction_344 happy_x_2+	happy_x_1+	 =  case happyOut43 happy_x_2 of { happy_var_2 -> +	happyIn101+		 (case happy_var_2 of { WithApp _ e es -> e : es; e -> [e] }+	)}++happyReduce_345 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_345 = happySpecReduce_0  92# happyReduction_345+happyReduction_345  =  happyIn102+		 ([]+	)++happyReduce_346 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_346 = happySpecReduce_2  92# happyReduction_346+happyReduction_346 happy_x_2+	happy_x_1+	 =  case happyOut44 happy_x_2 of { happy_var_2 -> +	happyIn102+		 (case happy_var_2 of { WithApp _ e es -> e : es; e -> [e] }+	)}++happyReduce_347 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_347 = happySpecReduce_1  93# happyReduction_347+happyReduction_347 happy_x_1+	 =  case happyOut43 happy_x_1 of { happy_var_1 -> +	happyIn103+		 (HoleContentExpr    happy_var_1+	)}++happyReduce_348 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_348 = happySpecReduce_1  93# happyReduction_348+happyReduction_348 happy_x_1+	 =  case happyOut102 happy_x_1 of { happy_var_1 -> +	happyIn103+		 (HoleContentRewrite happy_var_1+	)}++happyReduce_349 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_349 = happySpecReduce_0  94# happyReduction_349+happyReduction_349  =  happyIn104+		 (NoWhere+	)++happyReduce_350 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_350 = happySpecReduce_2  94# happyReduction_350+happyReduction_350 happy_x_2+	happy_x_1+	 =  case happyOut182 happy_x_2 of { happy_var_2 -> +	happyIn104+		 (AnyWhere happy_var_2+	)}++happyReduce_351 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_351 = happyReduce 4# 94# happyReduction_351+happyReduction_351 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut19 happy_x_2 of { happy_var_2 -> +	case happyOut182 happy_x_4 of { happy_var_4 -> +	happyIn104+		 (SomeWhere happy_var_2 PublicAccess happy_var_4+	) `HappyStk` happyRest}}++happyReduce_352 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_352 = happyReduce 4# 94# happyReduction_352+happyReduction_352 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut142 happy_x_2 of { happy_var_2 -> +	case happyOut182 happy_x_4 of { happy_var_4 -> +	happyIn104+		 (SomeWhere happy_var_2 PublicAccess happy_var_4+	) `HappyStk` happyRest}}++happyReduce_353 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_353 = happySpecReduce_2  95# happyReduction_353+happyReduction_353 happy_x_2+	happy_x_1+	 =  case happyOut43 happy_x_1 of { happy_var_1 -> +	case happyOut104 happy_x_2 of { happy_var_2 -> +	happyIn105+		 (ExprWhere happy_var_1 happy_var_2+	)}}++happyReduce_354 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_354 = happySpecReduce_1  96# happyReduction_354+happyReduction_354 happy_x_1+	 =  case happyOut117 happy_x_1 of { happy_var_1 -> +	happyIn106+		 (happy_var_1+	)}++happyReduce_355 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_355 = happySpecReduce_1  96# happyReduction_355+happyReduction_355 happy_x_1+	 =  case happyOut109 happy_x_1 of { happy_var_1 -> +	happyIn106+		 (happy_var_1+	)}++happyReduce_356 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_356 = happySpecReduce_1  96# happyReduction_356+happyReduction_356 happy_x_1+	 =  case happyOut111 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_357 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_357 = happySpecReduce_1  96# happyReduction_357+happyReduction_357 happy_x_1+	 =  case happyOut112 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_358 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_358 = happySpecReduce_1  96# happyReduction_358+happyReduction_358 happy_x_1+	 =  case happyOut113 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_359 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_359 = happySpecReduce_1  96# happyReduction_359+happyReduction_359 happy_x_1+	 =  case happyOut114 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_360 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_360 = happySpecReduce_1  96# happyReduction_360+happyReduction_360 happy_x_1+	 =  case happyOut116 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_361 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_361 = happySpecReduce_1  96# happyReduction_361+happyReduction_361 happy_x_1+	 =  case happyOut118 happy_x_1 of { happy_var_1 -> +	happyIn106+		 (happy_var_1+	)}++happyReduce_362 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_362 = happySpecReduce_1  96# happyReduction_362+happyReduction_362 happy_x_1+	 =  case happyOut119 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_363 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_363 = happySpecReduce_1  96# happyReduction_363+happyReduction_363 happy_x_1+	 =  case happyOut120 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_364 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_364 = happySpecReduce_1  96# happyReduction_364+happyReduction_364 happy_x_1+	 =  case happyOut121 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_365 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_365 = happySpecReduce_1  96# happyReduction_365+happyReduction_365 happy_x_1+	 =  case happyOut122 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_366 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_366 = happySpecReduce_1  96# happyReduction_366+happyReduction_366 happy_x_1+	 =  case happyOut123 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_367 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_367 = happySpecReduce_1  96# happyReduction_367+happyReduction_367 happy_x_1+	 =  case happyOut124 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_368 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_368 = happySpecReduce_1  96# happyReduction_368+happyReduction_368 happy_x_1+	 =  case happyOut125 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_369 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_369 = happySpecReduce_1  96# happyReduction_369+happyReduction_369 happy_x_1+	 =  case happyOut137 happy_x_1 of { happy_var_1 -> +	happyIn106+		 (happy_var_1+	)}++happyReduce_370 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_370 = happySpecReduce_1  96# happyReduction_370+happyReduction_370 happy_x_1+	 =  case happyOut140 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_371 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_371 = happySpecReduce_1  96# happyReduction_371+happyReduction_371 happy_x_1+	 =  case happyOut141 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_372 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_372 = happySpecReduce_1  96# happyReduction_372+happyReduction_372 happy_x_1+	 =  case happyOut144 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_373 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_373 = happySpecReduce_1  96# happyReduction_373+happyReduction_373 happy_x_1+	 =  case happyOut127 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_374 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_374 = happySpecReduce_1  96# happyReduction_374+happyReduction_374 happy_x_1+	 =  case happyOut128 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_375 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_375 = happySpecReduce_1  96# happyReduction_375+happyReduction_375 happy_x_1+	 =  case happyOut126 happy_x_1 of { happy_var_1 -> +	happyIn106+		 ([happy_var_1]+	)}++happyReduce_376 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_376 = happySpecReduce_3  97# happyReduction_376+happyReduction_376 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut20 happy_x_1 of { happy_var_1 -> +	case happyOut43 happy_x_3 of { happy_var_3 -> +	happyIn107+		 (map (\ x -> typeSig defaultArgInfo x happy_var_3) happy_var_1+	)}}++happyReduce_377 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_377 = happySpecReduce_3  98# happyReduction_377+happyReduction_377 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut25 happy_x_1 of { happy_var_1 -> +	case happyOut43 happy_x_3 of { happy_var_3 -> +	happyIn108+		 (map (fmap (\ x -> typeSig defaultArgInfo x happy_var_3)) happy_var_1+	)}}++happyReduce_378 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_378 = happyMonadReduce 4# 98# happyReduction_378+happyReduction_378 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokKeyword KwOverlap happy_var_1) -> +	case happyOut25 happy_x_2 of { happy_var_2 -> +	case happyOut43 happy_x_4 of { happy_var_4 -> +	(+      let setOverlap x =+            case getHiding x of+              Instance _ -> return $ makeInstance' YesOverlap x+              _          -> parseErrorRange happy_var_1+                             "The 'overlap' keyword only applies to instance fields (fields marked with {{ }})"+      in T.traverse (setOverlap . fmap (\ x -> typeSig defaultArgInfo x happy_var_4)) happy_var_2)}}})+	) (\r -> happyReturn (happyIn108 r))++happyReduce_379 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_379 = happySpecReduce_2  98# happyReduction_379+happyReduction_379 happy_x_2+	happy_x_1+	 =  case happyOut172 happy_x_2 of { happy_var_2 -> +	happyIn108+		 (let+      setInstance (TypeSig info x t) = TypeSig (makeInstance info) x t+      setInstance _ = __IMPOSSIBLE__ in+    map (fmap setInstance) happy_var_2+	)}++happyReduce_380 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_380 = happyMonadReduce 3# 99# happyReduction_380+happyReduction_380 (happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut100 happy_x_1 of { happy_var_1 -> +	case happyOut110 happy_x_2 of { happy_var_2 -> +	case happyOut104 happy_x_3 of { happy_var_3 -> +	( funClauseOrTypeSigs [] happy_var_1 happy_var_2 happy_var_3)}}})+	) (\r -> happyReturn (happyIn109 r))++happyReduce_381 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_381 = happyMonadReduce 4# 99# happyReduction_381+happyReduction_381 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut28 happy_x_1 of { happy_var_1 -> +	case happyOut100 happy_x_2 of { happy_var_2 -> +	case happyOut110 happy_x_3 of { happy_var_3 -> +	case happyOut104 happy_x_4 of { happy_var_4 -> +	( funClauseOrTypeSigs happy_var_1 happy_var_2 happy_var_3 happy_var_4)}}}})+	) (\r -> happyReturn (happyIn109 r))++happyReduce_382 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_382 = happySpecReduce_2  100# happyReduction_382+happyReduction_382 happy_x_2+	happy_x_1+	 =  case happyOut43 happy_x_2 of { happy_var_2 -> +	happyIn110+		 (JustRHS (RHS happy_var_2)+	)}++happyReduce_383 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_383 = happySpecReduce_2  100# happyReduction_383+happyReduction_383 happy_x_2+	happy_x_1+	 =  case happyOut43 happy_x_2 of { happy_var_2 -> +	happyIn110+		 (TypeSigsRHS happy_var_2+	)}++happyReduce_384 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_384 = happySpecReduce_0  100# happyReduction_384+happyReduction_384  =  happyIn110+		 (JustRHS AbsurdRHS+	)++happyReduce_385 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_385 = happyReduce 7# 101# happyReduction_385+happyReduction_385 (happy_x_7 `HappyStk`+	happy_x_6 `HappyStk`+	happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> +	case happyOut19 happy_x_2 of { happy_var_2 -> +	case happyOut82 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> +	case happyOut43 happy_x_5 of { happy_var_5 -> +	case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> +	case happyOut182 happy_x_7 of { happy_var_7 -> +	happyIn111+		 (Data (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5,happy_var_6,happy_var_7)) Inductive happy_var_2 happy_var_3 happy_var_5 happy_var_7+	) `HappyStk` happyRest}}}}}}}++happyReduce_386 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_386 = happyReduce 7# 101# happyReduction_386+happyReduction_386 (happy_x_7 `HappyStk`+	happy_x_6 `HappyStk`+	happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> +	case happyOut19 happy_x_2 of { happy_var_2 -> +	case happyOut82 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> +	case happyOut43 happy_x_5 of { happy_var_5 -> +	case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> +	case happyOut182 happy_x_7 of { happy_var_7 -> +	happyIn111+		 (Data (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5,happy_var_6,happy_var_7)) CoInductive happy_var_2 happy_var_3 happy_var_5 happy_var_7+	) `HappyStk` happyRest}}}}}}}++happyReduce_387 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_387 = happyReduce 5# 101# happyReduction_387+happyReduction_387 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> +	case happyOut19 happy_x_2 of { happy_var_2 -> +	case happyOut82 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> +	case happyOut182 happy_x_5 of { happy_var_5 -> +	happyIn111+		 (DataDef (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) Inductive happy_var_2 happy_var_3 happy_var_5+	) `HappyStk` happyRest}}}}}++happyReduce_388 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_388 = happyReduce 5# 101# happyReduction_388+happyReduction_388 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> +	case happyOut19 happy_x_2 of { happy_var_2 -> +	case happyOut82 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> +	case happyOut182 happy_x_5 of { happy_var_5 -> +	happyIn111+		 (DataDef (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) CoInductive happy_var_2 happy_var_3 happy_var_5+	) `HappyStk` happyRest}}}}}++happyReduce_389 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_389 = happyReduce 5# 102# happyReduction_389+happyReduction_389 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> +	case happyOut19 happy_x_2 of { happy_var_2 -> +	case happyOut82 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> +	case happyOut43 happy_x_5 of { happy_var_5 -> +	happyIn112+		 (DataSig (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) Inductive happy_var_2 happy_var_3 happy_var_5+	) `HappyStk` happyRest}}}}}++happyReduce_390 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_390 = happyMonadReduce 7# 103# happyReduction_390+happyReduction_390 (happy_x_7 `HappyStk`+	happy_x_6 `HappyStk`+	happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> +	case happyOut53 happy_x_2 of { happy_var_2 -> +	case happyOut82 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> +	case happyOut43 happy_x_5 of { happy_var_5 -> +	case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> +	case happyOut176 happy_x_7 of { happy_var_7 -> +	( exprToName happy_var_2 >>= \ n -> let ((x,y,z),ds) = happy_var_7 in return $ Record (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5,happy_var_6,happy_var_7)) n x y z happy_var_3 happy_var_5 ds)}}}}}}})+	) (\r -> happyReturn (happyIn113 r))++happyReduce_391 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_391 = happyMonadReduce 5# 103# happyReduction_391+happyReduction_391 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> +	case happyOut53 happy_x_2 of { happy_var_2 -> +	case happyOut82 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> +	case happyOut176 happy_x_5 of { happy_var_5 -> +	( exprToName happy_var_2 >>= \ n -> let ((x,y,z),ds) = happy_var_5 in return $ RecordDef (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) n x y z happy_var_3 ds)}}}}})+	) (\r -> happyReturn (happyIn113 r))++happyReduce_392 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_392 = happyMonadReduce 5# 104# happyReduction_392+happyReduction_392 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> +	case happyOut53 happy_x_2 of { happy_var_2 -> +	case happyOut82 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> +	case happyOut43 happy_x_5 of { happy_var_5 -> +	( exprToName happy_var_2 >>= \ n -> return $ RecordSig (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) n happy_var_3 happy_var_5)}}}}})+	) (\r -> happyReturn (happyIn114 r))++happyReduce_393 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_393 = happySpecReduce_2  105# happyReduction_393+happyReduction_393 happy_x_2+	happy_x_1+	 =  case happyOut19 happy_x_2 of { happy_var_2 -> +	happyIn115+		 ((happy_var_2, NotInstanceDef)+	)}++happyReduce_394 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_394 = happyReduce 5# 105# happyReduction_394+happyReduction_394 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut19 happy_x_4 of { happy_var_4 -> +	happyIn115+		 ((happy_var_4, InstanceDef)+	) `HappyStk` happyRest}++happyReduce_395 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_395 = happySpecReduce_3  106# happyReduction_395+happyReduction_395 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfix happy_var_1) -> +	case happyOut18 happy_x_2 of { happy_var_2 -> +	case happyOut32 happy_x_3 of { happy_var_3 -> +	happyIn116+		 (Infix (Fixity (getRange (happy_var_1,happy_var_3)) (Related happy_var_2) NonAssoc)   happy_var_3+	)}}}++happyReduce_396 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_396 = happySpecReduce_3  106# happyReduction_396+happyReduction_396 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixL happy_var_1) -> +	case happyOut18 happy_x_2 of { happy_var_2 -> +	case happyOut32 happy_x_3 of { happy_var_3 -> +	happyIn116+		 (Infix (Fixity (getRange (happy_var_1,happy_var_3)) (Related happy_var_2) LeftAssoc)  happy_var_3+	)}}}++happyReduce_397 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_397 = happySpecReduce_3  106# happyReduction_397+happyReduction_397 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixR happy_var_1) -> +	case happyOut18 happy_x_2 of { happy_var_2 -> +	case happyOut32 happy_x_3 of { happy_var_3 -> +	happyIn116+		 (Infix (Fixity (getRange (happy_var_1,happy_var_3)) (Related happy_var_2) RightAssoc) happy_var_3+	)}}}++happyReduce_398 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_398 = happySpecReduce_2  107# happyReduction_398+happyReduction_398 happy_x_2+	happy_x_1+	 =  case happyOut172 happy_x_2 of { happy_var_2 -> +	happyIn117+		 (let+                inst i = case getHiding i of+                           Instance _ -> InstanceDef+                           _          -> NotInstanceDef+                toField (Arg info (TypeSig info' x t)) = Field (inst info') x (Arg info t)+              in map toField happy_var_2+	)}++happyReduce_399 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_399 = happySpecReduce_2  108# happyReduction_399+happyReduction_399 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwVariable happy_var_1) -> +	case happyOut174 happy_x_2 of { happy_var_2 -> +	happyIn118+		 (let+                toGeneralize (Arg info (TypeSig _ x t)) = TypeSig info x t+              in [ Generalize (fuseRange happy_var_1 happy_var_2) (map toGeneralize happy_var_2) ]+	)}}++happyReduce_400 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_400 = happySpecReduce_2  109# happyReduction_400+happyReduction_400 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMutual happy_var_1) -> +	case happyOut182 happy_x_2 of { happy_var_2 -> +	happyIn119+		 (Mutual (fuseRange happy_var_1 happy_var_2) happy_var_2+	)}}++happyReduce_401 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_401 = happySpecReduce_2  110# happyReduction_401+happyReduction_401 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwAbstract happy_var_1) -> +	case happyOut182 happy_x_2 of { happy_var_2 -> +	happyIn120+		 (Abstract (fuseRange happy_var_1 happy_var_2) happy_var_2+	)}}++happyReduce_402 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_402 = happySpecReduce_2  111# happyReduction_402+happyReduction_402 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrivate happy_var_1) -> +	case happyOut182 happy_x_2 of { happy_var_2 -> +	happyIn121+		 (Private (fuseRange happy_var_1 happy_var_2) UserWritten happy_var_2+	)}}++happyReduce_403 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_403 = happySpecReduce_2  112# happyReduction_403+happyReduction_403 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInstance happy_var_1) -> +	case happyOut182 happy_x_2 of { happy_var_2 -> +	happyIn122+		 (InstanceB (fuseRange happy_var_1 happy_var_2) happy_var_2+	)}}++happyReduce_404 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_404 = happySpecReduce_2  113# happyReduction_404+happyReduction_404 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMacro happy_var_1) -> +	case happyOut182 happy_x_2 of { happy_var_2 -> +	happyIn123+		 (Macro (fuseRange happy_var_1 happy_var_2) happy_var_2+	)}}++happyReduce_405 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_405 = happySpecReduce_2  114# happyReduction_405+happyReduction_405 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPostulate happy_var_1) -> +	case happyOut182 happy_x_2 of { happy_var_2 -> +	happyIn124+		 (Postulate (fuseRange happy_var_1 happy_var_2) happy_var_2+	)}}++happyReduce_406 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_406 = happySpecReduce_2  115# happyReduction_406+happyReduction_406 happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrimitive happy_var_1) -> +	case happyOut169 happy_x_2 of { happy_var_2 -> +	happyIn125+		 (Primitive (fuseRange happy_var_1 happy_var_2) happy_var_2+	)}}++happyReduce_407 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_407 = happySpecReduce_3  116# happyReduction_407+happyReduction_407 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDecl happy_var_1) -> +	case happyOut43 happy_x_3 of { happy_var_3 -> +	happyIn126+		 (UnquoteDecl (fuseRange happy_var_1 happy_var_3) [] happy_var_3+	)}}++happyReduce_408 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_408 = happyReduce 4# 116# happyReduction_408+happyReduction_408 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDecl happy_var_1) -> +	case happyOut20 happy_x_2 of { happy_var_2 -> +	case happyOut43 happy_x_4 of { happy_var_4 -> +	happyIn126+		 (UnquoteDecl (fuseRange happy_var_1 happy_var_4) happy_var_2 happy_var_4+	) `HappyStk` happyRest}}}++happyReduce_409 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_409 = happyReduce 4# 116# happyReduction_409+happyReduction_409 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDef happy_var_1) -> +	case happyOut20 happy_x_2 of { happy_var_2 -> +	case happyOut43 happy_x_4 of { happy_var_4 -> +	happyIn126+		 (UnquoteDef (fuseRange happy_var_1 happy_var_4) happy_var_2 happy_var_4+	) `HappyStk` happyRest}}}++happyReduce_410 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_410 = happyMonadReduce 5# 117# happyReduction_410+happyReduction_410 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut19 happy_x_2 of { happy_var_2 -> +	case happyOut131 happy_x_3 of { happy_var_3 -> +	case happyOut130 happy_x_5 of { happy_var_5 -> +	(+  case happy_var_2 of+    Name _ _ [_] -> case mkNotation happy_var_3 happy_var_5 of+      Left err -> parseError $ "Malformed syntax declaration: " ++ err+      Right n -> return $ Syntax happy_var_2 n+    _ -> parseError "Syntax declarations are allowed only for simple names (without holes)")}}})+	) (\r -> happyReturn (happyIn127 r))++happyReduce_411 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_411 = happyMonadReduce 5# 118# happyReduction_411+happyReduction_411 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokKeyword KwPatternSyn happy_var_1) -> +	case happyOut19 happy_x_2 of { happy_var_2 -> +	case happyOut129 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymEqual happy_var_4) -> +	case happyOut43 happy_x_5 of { happy_var_5 -> +	( do+  p <- exprToPattern happy_var_5+  return (PatternSyn (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) happy_var_2 happy_var_3 p))}}}}})+	) (\r -> happyReturn (happyIn128 r))++happyReduce_412 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_412 = happySpecReduce_0  119# happyReduction_412+happyReduction_412  =  happyIn129+		 ([]+	)++happyReduce_413 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_413 = happyMonadReduce 1# 119# happyReduction_413+happyReduction_413 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut73 happy_x_1 of { happy_var_1 -> +	( patternSynArgs happy_var_1)})+	) (\r -> happyReturn (happyIn129 r))++happyReduce_414 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_414 = happySpecReduce_1  120# happyReduction_414+happyReduction_414 happy_x_1+	 =  case happyOut135 happy_x_1 of { happy_var_1 -> +	happyIn130+		 ([happy_var_1]+	)}++happyReduce_415 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_415 = happySpecReduce_2  120# happyReduction_415+happyReduction_415 happy_x_2+	happy_x_1+	 =  case happyOut130 happy_x_1 of { happy_var_1 -> +	case happyOut135 happy_x_2 of { happy_var_2 -> +	happyIn130+		 (happy_var_1 ++ [happy_var_2]+	)}}++happyReduce_416 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_416 = happySpecReduce_1  121# happyReduction_416+happyReduction_416 happy_x_1+	 =  case happyOut132 happy_x_1 of { happy_var_1 -> +	happyIn131+		 ([happy_var_1]+	)}++happyReduce_417 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_417 = happySpecReduce_2  121# happyReduction_417+happyReduction_417 happy_x_2+	happy_x_1+	 =  case happyOut131 happy_x_1 of { happy_var_1 -> +	case happyOut132 happy_x_2 of { happy_var_2 -> +	happyIn131+		 (happy_var_1 ++ [happy_var_2]+	)}}++happyReduce_418 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_418 = happySpecReduce_1  122# happyReduction_418+happyReduction_418 happy_x_1+	 =  case happyOut133 happy_x_1 of { happy_var_1 -> +	happyIn132+		 (defaultNamedArg happy_var_1+	)}++happyReduce_419 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_419 = happySpecReduce_3  122# happyReduction_419+happyReduction_419 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut134 happy_x_2 of { happy_var_2 -> +	happyIn132+		 (hide         $ defaultNamedArg happy_var_2+	)}++happyReduce_420 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_420 = happySpecReduce_3  122# happyReduction_420+happyReduction_420 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut134 happy_x_2 of { happy_var_2 -> +	happyIn132+		 (makeInstance $ defaultNamedArg happy_var_2+	)}++happyReduce_421 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_421 = happyReduce 5# 122# happyReduction_421+happyReduction_421 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut135 happy_x_2 of { happy_var_2 -> +	case happyOut134 happy_x_4 of { happy_var_4 -> +	happyIn132+		 (hide         $ defaultArg $ named happy_var_2 happy_var_4+	) `HappyStk` happyRest}}++happyReduce_422 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_422 = happyReduce 5# 122# happyReduction_422+happyReduction_422 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut135 happy_x_2 of { happy_var_2 -> +	case happyOut134 happy_x_4 of { happy_var_4 -> +	happyIn132+		 (makeInstance $ defaultArg $ named happy_var_2 happy_var_4+	) `HappyStk` happyRest}}++happyReduce_423 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_423 = happySpecReduce_1  123# happyReduction_423+happyReduction_423 happy_x_1+	 =  case happyOut135 happy_x_1 of { happy_var_1 -> +	happyIn133+		 (ExprHole happy_var_1+	)}++happyReduce_424 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_424 = happyReduce 6# 123# happyReduction_424+happyReduction_424 (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 happyOut135 happy_x_3 of { happy_var_3 -> +	case happyOut135 happy_x_5 of { happy_var_5 -> +	happyIn133+		 (LambdaHole happy_var_3 happy_var_5+	) `HappyStk` happyRest}}++happyReduce_425 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_425 = happyReduce 6# 123# happyReduction_425+happyReduction_425 (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_3 of { (TokSymbol SymUnderscore happy_var_3) -> +	case happyOut135 happy_x_5 of { happy_var_5 -> +	happyIn133+		 (LambdaHole (Ranged (getRange happy_var_3) "_") happy_var_5+	) `HappyStk` happyRest}}++happyReduce_426 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_426 = happySpecReduce_1  124# happyReduction_426+happyReduction_426 happy_x_1+	 =  case happyOut135 happy_x_1 of { happy_var_1 -> +	happyIn134+		 (ExprHole happy_var_1+	)}++happyReduce_427 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_427 = happyReduce 4# 124# happyReduction_427+happyReduction_427 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut135 happy_x_2 of { happy_var_2 -> +	case happyOut135 happy_x_4 of { happy_var_4 -> +	happyIn134+		 (LambdaHole happy_var_2 happy_var_4+	) `HappyStk` happyRest}}++happyReduce_428 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_428 = happyReduce 4# 124# happyReduction_428+happyReduction_428 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_3 of { (TokSymbol SymArrow happy_var_3) -> +	case happyOut135 happy_x_4 of { happy_var_4 -> +	happyIn134+		 (LambdaHole (Ranged (getRange happy_var_3) "_") happy_var_4+	) `HappyStk` happyRest}}++happyReduce_429 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_429 = happySpecReduce_1  125# happyReduction_429+happyReduction_429 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokId happy_var_1) -> +	happyIn135+		 (Ranged (getRange $ fst happy_var_1) (stringToRawName $ snd happy_var_1)+	)}++happyReduce_430 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_430 = happySpecReduce_1  126# happyReduction_430+happyReduction_430 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> +	happyIn136+		 (Just (getRange happy_var_1)+	)}++happyReduce_431 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_431 = happySpecReduce_0  126# happyReduction_431+happyReduction_431  =  happyIn136+		 (Nothing+	)++happyReduce_432 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_432 = happyMonadReduce 5# 127# happyReduction_432+happyReduction_432 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut136 happy_x_1 of { happy_var_1 -> +	case happyOutTok happy_x_2 of { (TokKeyword KwImport happy_var_2) -> +	case happyOut30 happy_x_3 of { happy_var_3 -> +	case happyOut138 happy_x_4 of { happy_var_4 -> +	case happyOut88 happy_x_5 of { happy_var_5 -> +	(+    let+    { doOpen = maybe DontOpen (const DoOpen) happy_var_1+    ; m   = happy_var_3+    ; es  = happy_var_4+    ; dir = happy_var_5+    ; r   = getRange (happy_var_1, happy_var_2, m, es, dir)+    ; mr  = getRange m+    ; unique = hashString $ prettyShow $ (Strict.Nothing :: Strict.Maybe ()) <$ r+         -- turn range into unique id, but delete file path+         -- which is absolute and messes up suite of failing tests+         -- (different hashs on different installations)+         -- TODO: Don't use (insecure) hashes in this way.+    ; fresh  = Name mr NotInScope [ Id $ stringToRawName $ ".#" ++ prettyShow m ++ "-" ++ show unique ]+    ; fresh' = Name mr NotInScope [ Id $ stringToRawName $ ".#" ++ prettyShow m ++ "-" ++ show (unique + 1) ]+    ; impStm asR = Import r m (Just (AsName (Right fresh) asR)) DontOpen defaultImportDir+    ; appStm m' es =+        Private r Inserted+          [ ModuleMacro r m'+             (SectionApp (getRange es) []+               (RawApp (getRange es) (Ident (QName fresh) : es)))+             doOpen dir+          ]+    ; (initArgs, last2Args) = splitAt (length es - 2) es+    ; parseAsClause = case last2Args of+      { [ Ident (QName (Name asR InScope [Id x]))+        , e+          -- Andreas, 2018-11-03, issue #3364, accept anything after 'as'+          -- but require it to be a 'Name' in the scope checker.+        ] | rawNameToString x == "as" -> Just . (asR,) $+          if | Ident (QName m') <- e -> Right m'+             | otherwise             -> Left e+      ; _ -> Nothing+      }+    } in+    case es of+      { [] -> return [Import r m Nothing doOpen dir]+      ; _ | Just (asR, m') <- parseAsClause ->+              if null initArgs then return+                 [ Import (getRange (m, asR, m', dir)) m+                     (Just (AsName m' asR)) doOpen dir+                 ]+              else return [ impStm asR, appStm (fromRight (const fresh') m') initArgs ]+          -- Andreas, 2017-05-13, issue #2579+          -- Nisse reports that importing with instantation but without open+          -- could be usefule for bringing instances into scope.+          -- Ulf, 2018-12-6: Not since fixes of #1913 and #2489 which require+          -- instances to be in scope.+          | DontOpen <- doOpen -> parseErrorRange happy_var_2 "An import statement with module instantiation is useless without either an `open' keyword or an `as` binding giving a name to the instantiated module."+          | otherwise -> return+              [ impStm noRange+              , appStm (noName $ beginningOf $ getRange m) es+              ]+      })}}}}})+	) (\r -> happyReturn (happyIn137 r))++happyReduce_433 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_433 = happyReduce 4# 127# happyReduction_433+happyReduction_433 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> +	case happyOut30 happy_x_2 of { happy_var_2 -> +	case happyOut138 happy_x_3 of { happy_var_3 -> +	case happyOut88 happy_x_4 of { happy_var_4 -> +	happyIn137+		 (let+    { m   = happy_var_2+    ; es  = happy_var_3+    ; dir = happy_var_4+    ; r   = getRange (happy_var_1, m, es, dir)+    } in+    [ case es of+      { []  -> Open r m dir+      ; _   -> Private r Inserted+                 [ ModuleMacro r (noName $ beginningOf $ getRange m)+                             (SectionApp (getRange (m , es)) [] (RawApp (fuseRange m es) (Ident m : es)))+                             DoOpen dir+                 ]+      }+    ]+	) `HappyStk` happyRest}}}}++happyReduce_434 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_434 = happyReduce 6# 127# happyReduction_434+happyReduction_434 (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 happyOut30 happy_x_2 of { happy_var_2 -> +	case happyOut88 happy_x_6 of { happy_var_6 -> +	happyIn137+		 (let r = getRange happy_var_2 in+    [ Private r Inserted+      [ ModuleMacro r (noName $ beginningOf $ getRange happy_var_2) (RecordModuleInstance r happy_var_2) DoOpen happy_var_6+      ]+    ]+	) `HappyStk` happyRest}}++happyReduce_435 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_435 = happySpecReduce_0  128# happyReduction_435+happyReduction_435  =  happyIn138+		 ([]+	)++happyReduce_436 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_436 = happySpecReduce_2  128# happyReduction_436+happyReduction_436 happy_x_2+	happy_x_1+	 =  case happyOut55 happy_x_1 of { happy_var_1 -> +	case happyOut138 happy_x_2 of { happy_var_2 -> +	happyIn138+		 (happy_var_1 : happy_var_2+	)}}++happyReduce_437 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_437 = happyReduce 4# 129# happyReduction_437+happyReduction_437 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOut30 happy_x_1 of { happy_var_1 -> +	case happyOutTok happy_x_2 of { (TokSymbol SymDoubleOpenBrace happy_var_2) -> +	case happyOutTok happy_x_3 of { (TokSymbol SymEllipsis happy_var_3) -> +	case happyOut21 happy_x_4 of { happy_var_4 -> +	happyIn139+		 ((\ts ->+                    if null ts then return $ RecordModuleInstance (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_1+                    else parseError "No bindings allowed for record module with non-canonical implicits" )+	) `HappyStk` happyRest}}}}++happyReduce_438 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_438 = happySpecReduce_2  129# happyReduction_438+happyReduction_438 happy_x_2+	happy_x_1+	 =  case happyOut30 happy_x_1 of { happy_var_1 -> +	case happyOut138 happy_x_2 of { happy_var_2 -> +	happyIn139+		 ((\ts -> return $ SectionApp (getRange (happy_var_1, happy_var_2)) ts (RawApp (fuseRange happy_var_1 happy_var_2) (Ident happy_var_1 : happy_var_2)) )+	)}}++happyReduce_439 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_439 = happyMonadReduce 6# 130# happyReduction_439+happyReduction_439 (happy_x_6 `HappyStk`+	happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> +	case happyOut30 happy_x_2 of { happy_var_2 -> +	case happyOut82 happy_x_3 of { happy_var_3 -> +	case happyOut139 happy_x_5 of { happy_var_5 -> +	case happyOut88 happy_x_6 of { happy_var_6 -> +	( do { ma <- happy_var_5 (map addType happy_var_3)+                          ; name <- ensureUnqual happy_var_2+                          ; return $ ModuleMacro (getRange (happy_var_1, happy_var_2, ma, happy_var_6)) name ma DontOpen happy_var_6 })}}}}})+	) (\r -> happyReturn (happyIn140 r))++happyReduce_440 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_440 = happyMonadReduce 7# 130# happyReduction_440+happyReduction_440 (happy_x_7 `HappyStk`+	happy_x_6 `HappyStk`+	happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwModule happy_var_2) -> +	case happyOut19 happy_x_3 of { happy_var_3 -> +	case happyOut82 happy_x_4 of { happy_var_4 -> +	case happyOut139 happy_x_6 of { happy_var_6 -> +	case happyOut88 happy_x_7 of { happy_var_7 -> +	( do {ma <- happy_var_6 (map addType happy_var_4); return $ ModuleMacro (getRange (happy_var_1, happy_var_2, happy_var_3, ma, happy_var_7)) happy_var_3 ma DoOpen happy_var_7 })}}}}}})+	) (\r -> happyReturn (happyIn140 r))++happyReduce_441 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_441 = happyReduce 5# 131# happyReduction_441+happyReduction_441 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> +	case happyOut30 happy_x_2 of { happy_var_2 -> +	case happyOut82 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> +	case happyOut182 happy_x_5 of { happy_var_5 -> +	happyIn141+		 (Module (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) happy_var_2 (map addType happy_var_3) happy_var_5+	) `HappyStk` happyRest}}}}}++happyReduce_442 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_442 = happyReduce 5# 131# happyReduction_442+happyReduction_442 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> +	case happyOut142 happy_x_2 of { happy_var_2 -> +	case happyOut82 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> +	case happyOut182 happy_x_5 of { happy_var_5 -> +	happyIn141+		 (Module (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) (QName happy_var_2) (map addType happy_var_3) happy_var_5+	) `HappyStk` happyRest}}}}}++happyReduce_443 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_443 = happySpecReduce_1  132# happyReduction_443+happyReduction_443 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> +	happyIn142+		 (noName (getRange happy_var_1)+	)}++happyReduce_444 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_444 = happySpecReduce_1  133# happyReduction_444+happyReduction_444 happy_x_1+	 =  case happyOut184 happy_x_1 of { happy_var_1 -> +	happyIn143+		 (figureOutTopLevelModule happy_var_1+	)}++happyReduce_445 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_445 = happySpecReduce_1  134# happyReduction_445+happyReduction_445 happy_x_1+	 =  case happyOut145 happy_x_1 of { happy_var_1 -> +	happyIn144+		 (Pragma happy_var_1+	)}++happyReduce_446 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_446 = happySpecReduce_1  135# happyReduction_446+happyReduction_446 happy_x_1+	 =  case happyOut147 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_447 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_447 = happySpecReduce_1  135# happyReduction_447+happyReduction_447 happy_x_1+	 =  case happyOut148 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_448 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_448 = happySpecReduce_1  135# happyReduction_448+happyReduction_448 happy_x_1+	 =  case happyOut150 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_449 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_449 = happySpecReduce_1  135# happyReduction_449+happyReduction_449 happy_x_1+	 =  case happyOut149 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_450 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_450 = happySpecReduce_1  135# happyReduction_450+happyReduction_450 happy_x_1+	 =  case happyOut151 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_451 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_451 = happySpecReduce_1  135# happyReduction_451+happyReduction_451 happy_x_1+	 =  case happyOut154 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_452 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_452 = happySpecReduce_1  135# happyReduction_452+happyReduction_452 happy_x_1+	 =  case happyOut152 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_453 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_453 = happySpecReduce_1  135# happyReduction_453+happyReduction_453 happy_x_1+	 =  case happyOut153 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_454 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_454 = happySpecReduce_1  135# happyReduction_454+happyReduction_454 happy_x_1+	 =  case happyOut162 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_455 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_455 = happySpecReduce_1  135# happyReduction_455+happyReduction_455 happy_x_1+	 =  case happyOut159 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_456 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_456 = happySpecReduce_1  135# happyReduction_456+happyReduction_456 happy_x_1+	 =  case happyOut158 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_457 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_457 = happySpecReduce_1  135# happyReduction_457+happyReduction_457 happy_x_1+	 =  case happyOut157 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_458 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_458 = happySpecReduce_1  135# happyReduction_458+happyReduction_458 happy_x_1+	 =  case happyOut166 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_459 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_459 = happySpecReduce_1  135# happyReduction_459+happyReduction_459 happy_x_1+	 =  case happyOut160 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_460 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_460 = happySpecReduce_1  135# happyReduction_460+happyReduction_460 happy_x_1+	 =  case happyOut161 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_461 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_461 = happySpecReduce_1  135# happyReduction_461+happyReduction_461 happy_x_1+	 =  case happyOut155 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_462 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_462 = happySpecReduce_1  135# happyReduction_462+happyReduction_462 happy_x_1+	 =  case happyOut156 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_463 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_463 = happySpecReduce_1  135# happyReduction_463+happyReduction_463 happy_x_1+	 =  case happyOut163 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_464 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_464 = happySpecReduce_1  135# happyReduction_464+happyReduction_464 happy_x_1+	 =  case happyOut164 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_465 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_465 = happySpecReduce_1  135# happyReduction_465+happyReduction_465 happy_x_1+	 =  case happyOut165 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_466 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_466 = happySpecReduce_1  135# happyReduction_466+happyReduction_466 happy_x_1+	 =  case happyOut146 happy_x_1 of { happy_var_1 -> +	happyIn145+		 (happy_var_1+	)}++happyReduce_467 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_467 = happyReduce 4# 136# happyReduction_467+happyReduction_467 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwOPTIONS happy_var_2) -> +	case happyOut36 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> +	happyIn146+		 (OptionsPragma (getRange (happy_var_1,happy_var_2,happy_var_4)) happy_var_3+	) `HappyStk` happyRest}}}}++happyReduce_468 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_468 = happyReduce 5# 137# happyReduction_468+happyReduction_468 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwBUILTIN happy_var_2) -> +	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> +	case happyOut41 happy_x_4 of { happy_var_4 -> +	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> +	happyIn147+		 (BuiltinPragma (getRange (happy_var_1,happy_var_2,fst happy_var_3,happy_var_4,happy_var_5)) (snd happy_var_3) happy_var_4+	) `HappyStk` happyRest}}}}}++happyReduce_469 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_469 = happyReduce 5# 137# happyReduction_469+happyReduction_469 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwBUILTIN happy_var_2) -> +	case happyOutTok happy_x_3 of { (TokKeyword KwREWRITE happy_var_3) -> +	case happyOut41 happy_x_4 of { happy_var_4 -> +	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> +	happyIn147+		 (BuiltinPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) "REWRITE" happy_var_4+	) `HappyStk` happyRest}}}}}++happyReduce_470 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_470 = happyReduce 4# 138# happyReduction_470+happyReduction_470 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwREWRITE happy_var_2) -> +	case happyOut42 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> +	happyIn148+		 (RewritePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3+	) `HappyStk` happyRest}}}}++happyReduce_471 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_471 = happyReduce 5# 139# happyReduction_471+happyReduction_471 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwFOREIGN happy_var_2) -> +	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> +	case happyOut39 happy_x_4 of { happy_var_4 -> +	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> +	happyIn149+		 (ForeignPragma (getRange (happy_var_1, happy_var_2, fst happy_var_3, happy_var_5)) (snd happy_var_3) (recoverLayout happy_var_4)+	) `HappyStk` happyRest}}}}}++happyReduce_472 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_472 = happyReduce 6# 140# happyReduction_472+happyReduction_472 (happy_x_6 `HappyStk`+	happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILE happy_var_2) -> +	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> +	case happyOut41 happy_x_4 of { happy_var_4 -> +	case happyOut36 happy_x_5 of { happy_var_5 -> +	case happyOutTok happy_x_6 of { (TokSymbol SymClosePragma happy_var_6) -> +	happyIn150+		 (CompilePragma (getRange (happy_var_1,happy_var_2,fst happy_var_3,happy_var_4,happy_var_6)) (snd happy_var_3) happy_var_4 (unwords happy_var_5)+	) `HappyStk` happyRest}}}}}}++happyReduce_473 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_473 = happyReduce 4# 141# happyReduction_473+happyReduction_473 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwSTATIC happy_var_2) -> +	case happyOut41 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> +	happyIn151+		 (StaticPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3+	) `HappyStk` happyRest}}}}++happyReduce_474 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_474 = happyReduce 4# 142# happyReduction_474+happyReduction_474 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwINLINE happy_var_2) -> +	case happyOut41 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> +	happyIn152+		 (InlinePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) True happy_var_3+	) `HappyStk` happyRest}}}}++happyReduce_475 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_475 = happyReduce 4# 143# happyReduction_475+happyReduction_475 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwNOINLINE happy_var_2) -> +	case happyOut41 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> +	happyIn153+		 (InlinePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) False happy_var_3+	) `HappyStk` happyRest}}}}++happyReduce_476 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_476 = happyReduce 4# 144# happyReduction_476+happyReduction_476 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwINJECTIVE happy_var_2) -> +	case happyOut41 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> +	happyIn154+		 (InjectivePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3+	) `HappyStk` happyRest}}}}++happyReduce_477 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_477 = happyMonadReduce 5# 145# happyReduction_477+happyReduction_477 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> +	case happyOut36 happy_x_4 of { happy_var_4 -> +	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> +	(+      let (r, s) = happy_var_3 in+      parseDisplayPragma (fuseRange happy_var_1 happy_var_5) (iStart r) (unwords (s : happy_var_4)))}}}})+	) (\r -> happyReturn (happyIn155 r))++happyReduce_478 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_478 = happyReduce 4# 146# happyReduction_478+happyReduction_478 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwETA happy_var_2) -> +	case happyOut41 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> +	happyIn156+		 (EtaPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3+	) `HappyStk` happyRest}}}}++happyReduce_479 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_479 = happySpecReduce_3  147# happyReduction_479+happyReduction_479 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwNO_TERMINATION_CHECK happy_var_2) -> +	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> +	happyIn157+		 (TerminationCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3)) NoTerminationCheck+	)}}}++happyReduce_480 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_480 = happySpecReduce_3  148# happyReduction_480+happyReduction_480 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwNON_TERMINATING happy_var_2) -> +	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> +	happyIn158+		 (TerminationCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3)) NonTerminating+	)}}}++happyReduce_481 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_481 = happySpecReduce_3  149# happyReduction_481+happyReduction_481 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwTERMINATING happy_var_2) -> +	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> +	happyIn159+		 (TerminationCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3)) Terminating+	)}}}++happyReduce_482 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_482 = happyReduce 4# 150# happyReduction_482+happyReduction_482 (happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwMEASURE happy_var_2) -> +	case happyOut40 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> +	happyIn160+		 (let r = getRange (happy_var_1, happy_var_2, happy_var_3, happy_var_4) in+      TerminationCheckPragma r (TerminationMeasure r happy_var_3)+	) `HappyStk` happyRest}}}}++happyReduce_483 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_483 = happySpecReduce_3  151# happyReduction_483+happyReduction_483 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwCATCHALL happy_var_2) -> +	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> +	happyIn161+		 (CatchallPragma (getRange (happy_var_1,happy_var_2,happy_var_3))+	)}}}++happyReduce_484 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_484 = happySpecReduce_3  152# happyReduction_484+happyReduction_484 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwIMPOSSIBLE happy_var_2) -> +	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> +	happyIn162+		 (ImpossiblePragma (getRange (happy_var_1,happy_var_2,happy_var_3))+	)}}}++happyReduce_485 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_485 = happySpecReduce_3  153# happyReduction_485+happyReduction_485 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwNO_POSITIVITY_CHECK happy_var_2) -> +	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> +	happyIn163+		 (NoPositivityCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3))+	)}}}++happyReduce_486 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_486 = happySpecReduce_3  154# happyReduction_486+happyReduction_486 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwNO_UNIVERSE_CHECK happy_var_2) -> +	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> +	happyIn164+		 (NoUniverseCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3))+	)}}}++happyReduce_487 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_487 = happyReduce 5# 155# happyReduction_487+happyReduction_487 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest)+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwPOLARITY happy_var_2) -> +	case happyOut40 happy_x_3 of { happy_var_3 -> +	case happyOut167 happy_x_4 of { happy_var_4 -> +	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> +	happyIn165+		 (let (rs, occs) = unzip (reverse happy_var_4) in+      PolarityPragma (getRange (happy_var_1,happy_var_2,happy_var_3,rs,happy_var_5)) happy_var_3 occs+	) `HappyStk` happyRest}}}}}++happyReduce_488 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_488 = happyMonadReduce 5# 156# happyReduction_488+happyReduction_488 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> +	case happyOutTok happy_x_2 of { (TokKeyword KwWARNING_ON_USAGE happy_var_2) -> +	case happyOut41 happy_x_3 of { happy_var_3 -> +	case happyOutTok happy_x_4 of { (TokLiteral happy_var_4) -> +	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> +	(  case happy_var_4 of+        { LitString r str -> return $ WarningOnUsage (getRange (happy_var_1,happy_var_2,happy_var_3,r,happy_var_5)) happy_var_3 str+        ; _ -> parseError "Expected string literal"+        })}}}}})+	) (\r -> happyReturn (happyIn166 r))++happyReduce_489 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_489 = happySpecReduce_0  157# happyReduction_489+happyReduction_489  =  happyIn167+		 ([]+	)++happyReduce_490 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_490 = happySpecReduce_2  157# happyReduction_490+happyReduction_490 happy_x_2+	happy_x_1+	 =  case happyOut167 happy_x_1 of { happy_var_1 -> +	case happyOut168 happy_x_2 of { happy_var_2 -> +	happyIn167+		 (happy_var_2 : happy_var_1+	)}}++happyReduce_491 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_491 = happyMonadReduce 1# 158# happyReduction_491+happyReduction_491 (happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOutTok happy_x_1 of { (TokString happy_var_1) -> +	( polarity happy_var_1)})+	) (\r -> happyReturn (happyIn168 r))++happyReduce_492 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_492 = happySpecReduce_2  159# happyReduction_492+happyReduction_492 happy_x_2+	happy_x_1+	 =  happyIn169+		 ([]+	)++happyReduce_493 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_493 = happySpecReduce_1  159# happyReduction_493+happyReduction_493 happy_x_1+	 =  case happyOut170 happy_x_1 of { happy_var_1 -> +	happyIn169+		 (happy_var_1+	)}++happyReduce_494 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_494 = happySpecReduce_3  160# happyReduction_494+happyReduction_494 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut171 happy_x_2 of { happy_var_2 -> +	happyIn170+		 (reverse happy_var_2+	)}++happyReduce_495 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_495 = happySpecReduce_3  161# happyReduction_495+happyReduction_495 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut171 happy_x_1 of { happy_var_1 -> +	case happyOut107 happy_x_3 of { happy_var_3 -> +	happyIn171+		 (reverse happy_var_3 ++ happy_var_1+	)}}++happyReduce_496 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_496 = happySpecReduce_1  161# happyReduction_496+happyReduction_496 happy_x_1+	 =  case happyOut107 happy_x_1 of { happy_var_1 -> +	happyIn171+		 (reverse happy_var_1+	)}++happyReduce_497 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_497 = happySpecReduce_3  162# happyReduction_497+happyReduction_497 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut173 happy_x_2 of { happy_var_2 -> +	happyIn172+		 (reverse happy_var_2+	)}++happyReduce_498 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_498 = happySpecReduce_3  163# happyReduction_498+happyReduction_498 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut173 happy_x_1 of { happy_var_1 -> +	case happyOut108 happy_x_3 of { happy_var_3 -> +	happyIn173+		 (reverse happy_var_3 ++ happy_var_1+	)}}++happyReduce_499 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_499 = happySpecReduce_1  163# happyReduction_499+happyReduction_499 happy_x_1+	 =  case happyOut108 happy_x_1 of { happy_var_1 -> +	happyIn173+		 (reverse happy_var_1+	)}++happyReduce_500 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_500 = happySpecReduce_3  164# happyReduction_500+happyReduction_500 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut175 happy_x_2 of { happy_var_2 -> +	happyIn174+		 (reverse happy_var_2+	)}++happyReduce_501 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_501 = happySpecReduce_3  165# happyReduction_501+happyReduction_501 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut175 happy_x_1 of { happy_var_1 -> +	case happyOut108 happy_x_3 of { happy_var_3 -> +	happyIn175+		 (reverse happy_var_3 ++ happy_var_1+	)}}++happyReduce_502 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_502 = happySpecReduce_1  165# happyReduction_502+happyReduction_502 happy_x_1+	 =  case happyOut108 happy_x_1 of { happy_var_1 -> +	happyIn175+		 (reverse happy_var_1+	)}++happyReduce_503 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_503 = happySpecReduce_0  165# happyReduction_503+happyReduction_503  =  happyIn175+		 ([]+	)++happyReduce_504 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_504 = happyMonadReduce 3# 166# happyReduction_504+happyReduction_504 (happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut177 happy_x_2 of { happy_var_2 -> +	( ((,) `fmap` verifyRecordDirectives happy_var_2 <*> pure []))})+	) (\r -> happyReturn (happyIn176 r))++happyReduce_505 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_505 = happyMonadReduce 5# 166# happyReduction_505+happyReduction_505 (happy_x_5 `HappyStk`+	happy_x_4 `HappyStk`+	happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut177 happy_x_2 of { happy_var_2 -> +	case happyOut183 happy_x_4 of { happy_var_4 -> +	( ((,) `fmap` verifyRecordDirectives happy_var_2 <*> pure happy_var_4))}})+	) (\r -> happyReturn (happyIn176 r))++happyReduce_506 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_506 = happyMonadReduce 3# 166# happyReduction_506+happyReduction_506 (happy_x_3 `HappyStk`+	happy_x_2 `HappyStk`+	happy_x_1 `HappyStk`+	happyRest) tk+	 = happyThen ((case happyOut183 happy_x_2 of { happy_var_2 -> +	( ((,) `fmap` verifyRecordDirectives [] <*> pure happy_var_2))})+	) (\r -> happyReturn (happyIn176 r))++happyReduce_507 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_507 = happySpecReduce_0  167# happyReduction_507+happyReduction_507  =  happyIn177+		 ([]+	)++happyReduce_508 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_508 = happySpecReduce_3  167# happyReduction_508+happyReduction_508 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut177 happy_x_1 of { happy_var_1 -> +	case happyOut178 happy_x_3 of { happy_var_3 -> +	happyIn177+		 (happy_var_3 : happy_var_1+	)}}++happyReduce_509 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_509 = happySpecReduce_1  167# happyReduction_509+happyReduction_509 happy_x_1+	 =  case happyOut178 happy_x_1 of { happy_var_1 -> +	happyIn177+		 ([happy_var_1]+	)}++happyReduce_510 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_510 = happySpecReduce_1  168# happyReduction_510+happyReduction_510 happy_x_1+	 =  case happyOut115 happy_x_1 of { happy_var_1 -> +	happyIn178+		 (Constructor happy_var_1+	)}++happyReduce_511 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_511 = happySpecReduce_1  168# happyReduction_511+happyReduction_511 happy_x_1+	 =  case happyOut180 happy_x_1 of { happy_var_1 -> +	happyIn178+		 (Induction happy_var_1+	)}++happyReduce_512 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_512 = happySpecReduce_1  168# happyReduction_512+happyReduction_512 happy_x_1+	 =  case happyOut179 happy_x_1 of { happy_var_1 -> +	happyIn178+		 (Eta happy_var_1+	)}++happyReduce_513 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_513 = happySpecReduce_1  169# happyReduction_513+happyReduction_513 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwEta happy_var_1) -> +	happyIn179+		 (Ranged (getRange happy_var_1) YesEta+	)}++happyReduce_514 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_514 = happySpecReduce_1  169# happyReduction_514+happyReduction_514 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNoEta happy_var_1) -> +	happyIn179+		 (Ranged (getRange happy_var_1) NoEta+	)}++happyReduce_515 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_515 = happySpecReduce_1  170# happyReduction_515+happyReduction_515 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInductive happy_var_1) -> +	happyIn180+		 (Ranged (getRange happy_var_1) Inductive+	)}++happyReduce_516 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_516 = happySpecReduce_1  170# happyReduction_516+happyReduction_516 happy_x_1+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCoInductive happy_var_1) -> +	happyIn180+		 (Ranged (getRange happy_var_1) CoInductive+	)}++happyReduce_517 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_517 = happySpecReduce_3  171# happyReduction_517+happyReduction_517 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut183 happy_x_2 of { happy_var_2 -> +	happyIn181+		 (happy_var_2+	)}++happyReduce_518 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_518 = happySpecReduce_2  172# happyReduction_518+happyReduction_518 happy_x_2+	happy_x_1+	 =  happyIn182+		 ([]+	)++happyReduce_519 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_519 = happySpecReduce_1  172# happyReduction_519+happyReduction_519 happy_x_1+	 =  case happyOut181 happy_x_1 of { happy_var_1 -> +	happyIn182+		 (happy_var_1+	)}++happyReduce_520 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_520 = happySpecReduce_3  173# happyReduction_520+happyReduction_520 happy_x_3+	happy_x_2+	happy_x_1+	 =  case happyOut106 happy_x_1 of { happy_var_1 -> +	case happyOut183 happy_x_3 of { happy_var_3 -> +	happyIn183+		 (happy_var_1 ++ happy_var_3+	)}}++happyReduce_521 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_521 = happySpecReduce_2  173# happyReduction_521+happyReduction_521 happy_x_2+	happy_x_1+	 =  case happyOut106 happy_x_1 of { happy_var_1 -> +	happyIn183+		 (happy_var_1+	)}++happyReduce_522 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_522 = happySpecReduce_1  173# happyReduction_522+happyReduction_522 happy_x_1+	 =  case happyOut106 happy_x_1 of { happy_var_1 -> +	happyIn183+		 (happy_var_1+	)}++happyReduce_523 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_523 = happySpecReduce_0  174# happyReduction_523+happyReduction_523  =  happyIn184+		 ([]+	)++happyReduce_524 :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )+happyReduce_524 = happySpecReduce_1  174# happyReduction_524+happyReduction_524 happy_x_1+	 =  case happyOut183 happy_x_1 of { happy_var_1 -> +	happyIn184+		 (happy_var_1+	)}++happyNewToken action sts stk+	= lexer(\tk -> +	let cont i = happyDoAction i tk action sts stk in+	case tk of {+	TokEOF{} -> happyDoAction 103# tk action sts stk;+	TokKeyword KwAbstract happy_dollar_dollar -> cont 1#;+	TokKeyword KwCoData happy_dollar_dollar -> cont 2#;+	TokKeyword KwCoInductive happy_dollar_dollar -> cont 3#;+	TokKeyword KwConstructor happy_dollar_dollar -> cont 4#;+	TokKeyword KwData happy_dollar_dollar -> cont 5#;+	TokKeyword KwEta happy_dollar_dollar -> cont 6#;+	TokKeyword KwField happy_dollar_dollar -> cont 7#;+	TokKeyword KwForall happy_dollar_dollar -> cont 8#;+	TokKeyword KwVariable happy_dollar_dollar -> cont 9#;+	TokKeyword KwHiding happy_dollar_dollar -> cont 10#;+	TokKeyword KwImport happy_dollar_dollar -> cont 11#;+	TokKeyword KwIn happy_dollar_dollar -> cont 12#;+	TokKeyword KwInductive happy_dollar_dollar -> cont 13#;+	TokKeyword KwInfix happy_dollar_dollar -> cont 14#;+	TokKeyword KwInfixL happy_dollar_dollar -> cont 15#;+	TokKeyword KwInfixR happy_dollar_dollar -> cont 16#;+	TokKeyword KwInstance happy_dollar_dollar -> cont 17#;+	TokKeyword KwOverlap happy_dollar_dollar -> cont 18#;+	TokKeyword KwLet happy_dollar_dollar -> cont 19#;+	TokKeyword KwMacro happy_dollar_dollar -> cont 20#;+	TokKeyword KwModule happy_dollar_dollar -> cont 21#;+	TokKeyword KwMutual happy_dollar_dollar -> cont 22#;+	TokKeyword KwNoEta happy_dollar_dollar -> cont 23#;+	TokKeyword KwOpen happy_dollar_dollar -> cont 24#;+	TokKeyword KwPatternSyn happy_dollar_dollar -> cont 25#;+	TokKeyword KwPostulate happy_dollar_dollar -> cont 26#;+	TokKeyword KwPrimitive happy_dollar_dollar -> cont 27#;+	TokKeyword KwPrivate happy_dollar_dollar -> cont 28#;+	TokKeyword KwProp happy_dollar_dollar -> cont 29#;+	TokKeyword KwPublic happy_dollar_dollar -> cont 30#;+	TokKeyword KwQuote happy_dollar_dollar -> cont 31#;+	TokKeyword KwQuoteContext happy_dollar_dollar -> cont 32#;+	TokKeyword KwQuoteGoal happy_dollar_dollar -> cont 33#;+	TokKeyword KwQuoteTerm happy_dollar_dollar -> cont 34#;+	TokKeyword KwRecord happy_dollar_dollar -> cont 35#;+	TokKeyword KwRenaming happy_dollar_dollar -> cont 36#;+	TokKeyword KwRewrite happy_dollar_dollar -> cont 37#;+	TokKeyword KwSet happy_dollar_dollar -> cont 38#;+	TokKeyword KwSyntax happy_dollar_dollar -> cont 39#;+	TokKeyword KwTactic happy_dollar_dollar -> cont 40#;+	TokKeyword KwTo happy_dollar_dollar -> cont 41#;+	TokKeyword KwUnquote happy_dollar_dollar -> cont 42#;+	TokKeyword KwUnquoteDecl happy_dollar_dollar -> cont 43#;+	TokKeyword KwUnquoteDef happy_dollar_dollar -> cont 44#;+	TokKeyword KwUsing happy_dollar_dollar -> cont 45#;+	TokKeyword KwWhere happy_dollar_dollar -> cont 46#;+	TokKeyword KwDo happy_dollar_dollar -> cont 47#;+	TokKeyword KwWith happy_dollar_dollar -> cont 48#;+	TokKeyword KwBUILTIN happy_dollar_dollar -> cont 49#;+	TokKeyword KwCATCHALL happy_dollar_dollar -> cont 50#;+	TokKeyword KwDISPLAY happy_dollar_dollar -> cont 51#;+	TokKeyword KwETA happy_dollar_dollar -> cont 52#;+	TokKeyword KwFOREIGN happy_dollar_dollar -> cont 53#;+	TokKeyword KwCOMPILE happy_dollar_dollar -> cont 54#;+	TokKeyword KwIMPOSSIBLE happy_dollar_dollar -> cont 55#;+	TokKeyword KwINJECTIVE happy_dollar_dollar -> cont 56#;+	TokKeyword KwINLINE happy_dollar_dollar -> cont 57#;+	TokKeyword KwNOINLINE happy_dollar_dollar -> cont 58#;+	TokKeyword KwMEASURE happy_dollar_dollar -> cont 59#;+	TokKeyword KwNO_TERMINATION_CHECK happy_dollar_dollar -> cont 60#;+	TokKeyword KwNO_POSITIVITY_CHECK happy_dollar_dollar -> cont 61#;+	TokKeyword KwNO_UNIVERSE_CHECK happy_dollar_dollar -> cont 62#;+	TokKeyword KwNON_TERMINATING happy_dollar_dollar -> cont 63#;+	TokKeyword KwOPTIONS happy_dollar_dollar -> cont 64#;+	TokKeyword KwPOLARITY happy_dollar_dollar -> cont 65#;+	TokKeyword KwWARNING_ON_USAGE happy_dollar_dollar -> cont 66#;+	TokKeyword KwREWRITE happy_dollar_dollar -> cont 67#;+	TokKeyword KwSTATIC happy_dollar_dollar -> cont 68#;+	TokKeyword KwTERMINATING happy_dollar_dollar -> cont 69#;+	TokSetN happy_dollar_dollar -> cont 70#;+	TokPropN happy_dollar_dollar -> cont 71#;+	TokTeX happy_dollar_dollar -> cont 72#;+	TokComment happy_dollar_dollar -> cont 73#;+	TokSymbol SymEllipsis happy_dollar_dollar -> cont 74#;+	TokSymbol SymDotDot happy_dollar_dollar -> cont 75#;+	TokSymbol SymDot happy_dollar_dollar -> cont 76#;+	TokSymbol SymSemi happy_dollar_dollar -> cont 77#;+	TokSymbol SymColon happy_dollar_dollar -> cont 78#;+	TokSymbol SymEqual happy_dollar_dollar -> cont 79#;+	TokSymbol SymUnderscore happy_dollar_dollar -> cont 80#;+	TokSymbol SymQuestionMark happy_dollar_dollar -> cont 81#;+	TokSymbol SymArrow happy_dollar_dollar -> cont 82#;+	TokSymbol SymLambda happy_dollar_dollar -> cont 83#;+	TokSymbol SymAs happy_dollar_dollar -> cont 84#;+	TokSymbol SymBar happy_dollar_dollar -> cont 85#;+	TokSymbol SymOpenParen happy_dollar_dollar -> cont 86#;+	TokSymbol SymCloseParen happy_dollar_dollar -> cont 87#;+	TokSymbol SymOpenIdiomBracket happy_dollar_dollar -> cont 88#;+	TokSymbol SymCloseIdiomBracket happy_dollar_dollar -> cont 89#;+	TokSymbol SymDoubleOpenBrace happy_dollar_dollar -> cont 90#;+	TokSymbol SymDoubleCloseBrace happy_dollar_dollar -> cont 91#;+	TokSymbol SymOpenBrace happy_dollar_dollar -> cont 92#;+	TokSymbol SymCloseBrace happy_dollar_dollar -> cont 93#;+	TokSymbol SymOpenVirtualBrace happy_dollar_dollar -> cont 94#;+	TokSymbol SymCloseVirtualBrace happy_dollar_dollar -> cont 95#;+	TokSymbol SymVirtualSemi happy_dollar_dollar -> cont 96#;+	TokSymbol SymOpenPragma happy_dollar_dollar -> cont 97#;+	TokSymbol SymClosePragma happy_dollar_dollar -> cont 98#;+	TokId happy_dollar_dollar -> cont 99#;+	TokQId happy_dollar_dollar -> cont 100#;+	TokString happy_dollar_dollar -> cont 101#;+	TokLiteral happy_dollar_dollar -> cont 102#;+	_ -> happyError' (tk, [])+	})++happyError_ explist 103# tk = happyError' (tk, explist)+happyError_ explist _ tk = happyError' (tk, explist)++happyThen :: () => Parser a -> (a -> Parser b) -> Parser b+happyThen = (>>=)+happyReturn :: () => a -> Parser a+happyReturn = (return)+happyParse :: () => Happy_GHC_Exts.Int# -> Parser (HappyAbsSyn )++happyNewToken :: () => Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )++happyDoAction :: () => Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn )++happyReduceArr :: () => Happy_Data_Array.Array Int (Happy_GHC_Exts.Int# -> Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> Parser (HappyAbsSyn ))++happyThen1 :: () => Parser a -> (a -> Parser b) -> Parser b+happyThen1 = happyThen+happyReturn1 :: () => a -> Parser a+happyReturn1 = happyReturn+happyError' :: () => ((Token), [String]) -> Parser a+happyError' tk = (\(tokens, explist) -> happyError) tk+tokensParser = happySomeParser where+ happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut10 x))++exprParser = happySomeParser where+ happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut43 x))++exprWhereParser = happySomeParser where+ happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut105 x))++moduleParser = happySomeParser where+ happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut13 x))++moduleNameParser = happySomeParser where+ happySomeParser = happyThen (happyParse 4#) (\x -> happyReturn (happyOut30 x))++funclauseParser = happySomeParser where+ happySomeParser = happyThen (happyParse 5#) (\x -> happyReturn (happyOut109 x))++holeContentParser = happySomeParser where+ happySomeParser = happyThen (happyParse 6#) (\x -> happyReturn (happyOut103 x))++happySeq = happyDontSeq+++{--------------------------------------------------------------------------+    Parsers+ --------------------------------------------------------------------------}++-- | Parse the token stream. Used by the TeX compiler.+tokensParser :: Parser [Token]++-- | Parse an expression. Could be used in interactions.+exprParser :: Parser Expr++-- | Parse an expression followed by a where clause. Could be used in interactions.+exprWhereParser :: Parser ExprWhere++-- | Parse a module.+moduleParser :: Parser Module+++{--------------------------------------------------------------------------+    Happy stuff+ --------------------------------------------------------------------------}++-- | Required by Happy.+happyError :: Parser a+happyError = parseError "Parse error"+++{--------------------------------------------------------------------------+    Utility functions+ --------------------------------------------------------------------------}++-- | Grab leading OPTIONS pragmas.+takeOptionsPragmas :: [Declaration] -> ([Pragma], [Declaration])+takeOptionsPragmas = spanJust $ \ d -> case d of+  Pragma p@OptionsPragma{} -> Just p+  _                        -> Nothing++-- | Insert a top-level module if there is none.+--   Also fix-up for the case the declarations in the top-level module+--   are not indented (this is allowed as a special case).+figureOutTopLevelModule :: [Declaration] -> [Declaration]+figureOutTopLevelModule ds =+  case spanAllowedBeforeModule ds of+    -- Andreas 2016-02-01, issue #1388.+    -- We need to distinguish two additional cases.++    -- Case 1: Regular file layout: imports followed by one module. Nothing to do.+    (ds0, [ Module{} ]) -> ds++    -- Case 2: The declarations in the module are not indented.+    -- This is allowed for the top level module, and thus rectified here.+    (ds0, Module r m tel [] : ds2) -> ds0 ++ [Module r m tel ds2]++    -- Case 3: There is a module with indented declarations,+    -- followed by non-indented declarations.  This should be a+    -- parse error and be reported later (see @toAbstract TopLevel{}@),+    -- thus, we do not do anything here.+    (ds0, Module r m tel ds1 : ds2) -> ds  -- Gives parse error in scope checker.+    -- OLD code causing issue 1388:+    -- (ds0, Module r m tel ds1 : ds2) -> ds0 ++ [Module r m tel $ ds1 ++ ds2]++    -- Case 4: a top-level module declaration is missing.+    -- Andreas, 2017-01-01, issue #2229:+    -- Put everything (except OPTIONS pragmas) into an anonymous module.+    _ -> ds0 ++ [Module r (QName $ noName r) [] ds1]+      where+      (ds0, ds1) = (`span` ds) $ \case+        Pragma OptionsPragma{} -> True+        _ -> False+      -- Andreas, 2017-05-17, issue #2574.+      -- Since the module noName will act as jump target, it needs a range.+      -- We use the beginning of the file as beginning of the top level module.+      r = beginningOfFile $ getRange ds1++-- | Create a name from a string.++mkName :: (Interval, String) -> Parser Name+mkName (i, s) = do+    let xs = C.stringNameParts s+    mapM_ isValidId xs+    unless (alternating xs) $ parseError $ "a name cannot contain two consecutive underscores"+    return $ Name (getRange i) InScope xs+    where+        isValidId Hole   = return ()+        isValidId (Id y) = do+          let x = rawNameToString y+              err = "in the name " ++ s ++ ", the part " ++ x ++ " is not valid"+          case parse defaultParseFlags [0] (lexer return) x of+            ParseOk _ TokId{}  -> return ()+            ParseFailed{}      -> parseError err+            ParseOk _ TokEOF{} -> parseError err+            ParseOk _ t   -> parseError . ((err ++ " because it is ") ++) $ case t of+              TokId{}       -> __IMPOSSIBLE__+              TokQId{}      -> __IMPOSSIBLE__ -- "qualified"+              TokKeyword{}  -> "a keyword"+              TokLiteral{}  -> "a literal"+              TokSymbol s _ -> case s of+                SymDot               -> __IMPOSSIBLE__ -- "reserved"+                SymSemi              -> "used to separate declarations"+                SymVirtualSemi       -> __IMPOSSIBLE__+                SymBar               -> "used for with-arguments"+                SymColon             -> "part of declaration syntax"+                SymArrow             -> "the function arrow"+                SymEqual             -> "part of declaration syntax"+                SymLambda            -> "used for lambda-abstraction"+                SymUnderscore        -> "used for anonymous identifiers"+                SymQuestionMark      -> "a meta variable"+                SymAs                -> "used for as-patterns"+                SymOpenParen         -> "used to parenthesize expressions"+                SymCloseParen        -> "used to parenthesize expressions"+                SymOpenIdiomBracket  -> "an idiom bracket"+                SymCloseIdiomBracket -> "an idiom bracket"+                SymDoubleOpenBrace   -> "used for instance arguments"+                SymDoubleCloseBrace  -> "used for instance arguments"+                SymOpenBrace         -> "used for hidden arguments"+                SymCloseBrace        -> "used for hidden arguments"+                SymOpenVirtualBrace  -> __IMPOSSIBLE__+                SymCloseVirtualBrace -> __IMPOSSIBLE__+                SymOpenPragma        -> __IMPOSSIBLE__ -- "used for pragmas"+                SymClosePragma       -> __IMPOSSIBLE__ -- "used for pragmas"+                SymEllipsis          -> "used for function clauses"+                SymDotDot            -> __IMPOSSIBLE__ -- "a modality"+                SymEndComment        -> "the end-of-comment brace"+              TokString{}   -> __IMPOSSIBLE__+              TokSetN{}     -> "a type universe"+              TokPropN{}    -> "a prop universe"+              TokTeX{}      -> __IMPOSSIBLE__  -- used by the LaTeX backend only+              TokMarkup{}   -> __IMPOSSIBLE__  -- ditto+              TokComment{}  -> __IMPOSSIBLE__+              TokDummy{}    -> __IMPOSSIBLE__+              TokEOF{}      -> __IMPOSSIBLE__++        -- we know that there are no two Ids in a row+        alternating (Hole : Hole : _) = False+        alternating (_ : xs)          = alternating xs+        alternating []                = True++-- | Create a qualified name from a list of strings+mkQName :: [(Interval, String)] -> Parser QName+mkQName ss = do+    xs <- mapM mkName ss+    return $ foldr Qual (QName $ last xs) (init xs)++-- | Create a qualified name from a string (used in pragmas).+--   Range of each name component is range of whole string.+--   TODO: precise ranges!++pragmaQName :: (Interval, String) -> Parser QName+pragmaQName (r, s) = do+  let ss = chopWhen (== '.') s+  mkQName $ map (r,) ss++mkNamedArg :: Maybe QName -> Either QName Range -> Parser (NamedArg BoundName)+mkNamedArg x y = do+  lbl <- case x of+           Nothing        -> return $ Just $ unranged "_"+           Just (QName x) -> return $ Just $ Ranged (getRange x) (prettyShow x)+           _              -> parseError "expected unqualified variable name"+  var <- case y of+           Left (QName y) -> return $ BName y noFixity'+           Right r        -> return $ BName (noName r) noFixity'+           _              -> parseError "expected unqualified variable name"+  return $ defaultArg $ Named lbl var++-- | Polarity parser.++polarity :: (Interval, String) -> Parser (Range, Occurrence)+polarity (i, s) =+  case s of+    "_"  -> ret Unused+    "++" -> ret StrictPos+    "+"  -> ret JustPos+    "-"  -> ret JustNeg+    "*"  -> ret Mixed+    _    -> parseError $ "Not a valid polarity: " ++ s+  where+  ret x = return (getRange i, x)++recoverLayout :: [(Interval, String)] -> String+recoverLayout [] = ""+recoverLayout xs@((i, _) : _) = go (iStart i) xs+  where+    c0 = posCol (iStart i)++    go cur [] = ""+    go cur ((i, s) : xs) = padding cur (iStart i) ++ s ++ go (iEnd i) xs++    padding Pn{ posLine = l1, posCol = c1 } Pn{ posLine = l2, posCol = c2 }+      | l1 < l2  = genericReplicate (l2 - l1) '\n' ++ genericReplicate (max 0 (c2 - c0)) ' '+      | l1 == l2 = genericReplicate (c2 - c1) ' '++ensureUnqual :: QName -> Parser Name+ensureUnqual (QName x) = return x+ensureUnqual q@Qual{}  = parseError' (rStart' $ getRange q) "Qualified name not allowed here"++-- | Match a particular name.+isName :: String -> (Interval, String) -> Parser ()+isName s (_,s')+    | s == s'   = return ()+    | otherwise = parseError $ "expected " ++ s ++ ", found " ++ s'++-- | Build a forall pi (forall x y z -> ...)+forallPi :: [LamBinding] -> Expr -> Expr+forallPi bs e = Pi (map addType bs) e++-- | Converts lambda bindings to typed bindings.+addType :: LamBinding -> TypedBinding+addType (DomainFull b) = b+addType (DomainFree x) = TBind r [x] $ Underscore r Nothing+  where r = getRange x++boundNamesOrAbsurd :: [Expr] -> Parser (Either [NamedArg BoundName] [Expr])+boundNamesOrAbsurd es+  | any isAbsurd es = return $ Right es+  | otherwise       =+    case mapM getBName es of+        Just good -> return $ Left $ map defaultNamedArg good+        Nothing   -> parseError $ "expected sequence of bound identifiers"+  where+    getName :: Expr -> Maybe Name+    getName (Ident (QName x)) = Just x+    getName (Underscore r _)  = Just $ Name r NotInScope [Hole]+    getName _                 = Nothing++    getBName :: Expr -> Maybe BoundName+    getBName e = fmap mkBoundName_ $ getName e++    isAbsurd :: Expr -> Bool+    isAbsurd (Absurd _)                  = True+    isAbsurd (HiddenArg _ (Named _ e))   = isAbsurd e+    isAbsurd (InstanceArg _ (Named _ e)) = isAbsurd e+    isAbsurd (Paren _ expr)              = isAbsurd expr+    isAbsurd (RawApp _ exprs)            = any isAbsurd exprs+    isAbsurd _                           = False++-- | Build a do-statement+buildDoStmt :: Expr -> [LamClause] -> Parser DoStmt+buildDoStmt (RawApp r [e]) cs = buildDoStmt e cs+buildDoStmt (Let r ds Nothing) [] = return $ DoLet r ds+buildDoStmt (RawApp r es) cs+  | (es1, arr : es2) <- break isLeftArrow es =+    case filter isLeftArrow es2 of+      arr : _ -> parseError' (rStart' $ getRange arr) $ "Unexpected " ++ prettyShow arr+      [] -> DoBind (getRange arr)+              <$> exprToPattern (RawApp (getRange es1) es1)+              <*> pure (RawApp (getRange es2) es2)+              <*> pure cs+  where+    isLeftArrow (Ident (QName (Name _ _ [Id arr]))) = elem arr ["<-", "←"]+    isLeftArrow _ = False+buildDoStmt e (_ : _) = parseError' (rStart' $ getRange e) "Only pattern matching do-statements can have where clauses."+buildDoStmt e [] = return $ DoThen e++mergeImportDirectives :: [ImportDirective] -> Parser ImportDirective+mergeImportDirectives is = do+  i <- foldl merge (return defaultImportDir) is+  verifyImportDirective i+  where+    merge mi i2 = do+      i1 <- mi+      let err = parseError' (rStart' $ getRange i2) "Cannot mix using and hiding module directives"+      return $ ImportDirective+        { importDirRange = fuseRange i1 i2+        , using          = mappend (using i1) (using i2)+        , hiding         = hiding i1 ++ hiding i2+        , impRenaming    = impRenaming i1 ++ impRenaming i2+        , publicOpen     = publicOpen i1 || publicOpen i2 }++-- | Check that an import directive doesn't contain repeated names+verifyImportDirective :: ImportDirective -> Parser ImportDirective+verifyImportDirective i =+    case filter ((>1) . length)+         $ group+         $ sort xs+    of+        []  -> return i+        yss -> parseErrorRange (head $ concat yss) $+                "Repeated name" ++ s ++ " in import directive: " +++                concat (intersperse ", " $ map (prettyShow . head) yss)+            where+                s = case yss of+                        [_] -> ""+                        _   -> "s"+    where+        xs = names (using i) ++ hiding i ++ map renFrom (impRenaming i)+        names (Using xs)    = xs+        names UseEverything = []++data RecordDirective+   = Induction (Ranged Induction)+   | Constructor (Name, IsInstance)+   | Eta         (Ranged HasEta)+   deriving (Eq,Show)++verifyRecordDirectives :: [RecordDirective] -> Parser (Maybe (Ranged Induction), Maybe HasEta, Maybe (Name, IsInstance))+verifyRecordDirectives xs+  | null rs = return (ltm is, ltm es, ltm cs)+  | otherwise = parseErrorRange (head rs) $ "Repeated record directives at: \n" ++ intercalate "\n" (map prettyShow rs)+ where+  ltm :: [a] -> Maybe a+  ltm [] = Nothing+  ltm (x:xs) = Just x+  errorFromList [] = []+  errorFromList [x] = []+  errorFromList xs = map getRange xs+  rs = sort (concat ([errorFromList is, errorFromList es', errorFromList cs]))+  is = [ i | Induction i <- xs ]+  es' = [ i | Eta i <- xs ]+  es = map rangedThing es'+  cs = [ i | Constructor i <- xs ]+++-- | Breaks up a string into substrings. Returns every maximal+-- subsequence of zero or more characters distinct from @'.'@.+--+-- > splitOnDots ""         == [""]+-- > splitOnDots "foo.bar"  == ["foo", "bar"]+-- > splitOnDots ".foo.bar" == ["", "foo", "bar"]+-- > splitOnDots "foo.bar." == ["foo", "bar", ""]+-- > splitOnDots "foo..bar" == ["foo", "", "bar"]+splitOnDots :: String -> [String]+splitOnDots ""        = [""]+splitOnDots ('.' : s) = [] : splitOnDots s+splitOnDots (c   : s) = case splitOnDots s of+  p : ps -> (c : p) : ps+++-- | Returns 'True' iff the name is a valid Haskell (hierarchical)+-- module name.+validHaskellModuleName :: String -> Bool+validHaskellModuleName = all ok . splitOnDots+  where+  -- Checks if a dot-less module name is well-formed.+  ok :: String -> Bool+  ok []      = False+  ok (c : s) =+    isUpper c &&+    all (\c -> isLower c || c == '_' ||+               isUpper c ||+               generalCategory c == DecimalNumber ||+               c == '\'')+        s++{--------------------------------------------------------------------------+    Patterns+ --------------------------------------------------------------------------}++-- | Turn an expression into a left hand side.+exprToLHS :: Expr -> Parser ([Expr] -> [Expr] -> LHS)+exprToLHS e = LHS <$> exprToPattern e++-- | Turn an expression into a pattern. Fails if the expression is not a+--   valid pattern.+exprToPattern :: Expr -> Parser Pattern+exprToPattern e = do+    let failure = parseErrorRange e $ "Not a valid pattern: " ++ prettyShow e+    case e of+        Ident x                 -> return $ IdentP x+        App _ e1 e2             -> AppP <$> exprToPattern e1+                                        <*> T.mapM (T.mapM exprToPattern) e2+        Paren r e               -> ParenP r+                                        <$> exprToPattern e+        Underscore r _          -> return $ WildP r+        Absurd r                -> return $ AbsurdP r+        As r x e                -> AsP r x <$> exprToPattern e+        Dot r (HiddenArg _ e)   -> return $ HiddenP r $ fmap (DotP r) e+        Dot r e                 -> return $ DotP r e+        Lit l                   -> return $ LitP l+        HiddenArg r e           -> HiddenP r <$> T.mapM exprToPattern e+        InstanceArg r e         -> InstanceP r <$> T.mapM exprToPattern e+        RawApp r es             -> RawAppP r <$> mapM exprToPattern es+        Quote r                 -> return $ QuoteP r+        Rec r es | Just fs <- mapM maybeLeft es -> do+          RecP r <$> T.mapM (T.mapM exprToPattern) fs+        Equal r e1 e2           -> return $ EqualP r [(e1, e2)]+        Ellipsis r              -> return $ EllipsisP r+        -- WithApp has already lost the range information of the bars '|'+        WithApp r e es          -> do+          p  <- exprToPattern e+          ps <- forM es $ \ e -> defaultNamedArg . WithP (getRange e) <$> exprToPattern e  -- TODO #2822: Range!+          return $ foldl AppP p ps+        _ -> failure++opAppExprToPattern :: OpApp Expr -> Parser Pattern+opAppExprToPattern (SyntaxBindingLambda _ _ _) = parseError "Syntax binding lambda cannot appear in a pattern"+opAppExprToPattern (Ordinary e) = exprToPattern e++-- | Turn an expression into a name. Fails if the expression is not a+--   valid identifier.+exprToName :: Expr -> Parser Name+exprToName (Ident (QName x)) = return x+exprToName e = parseErrorRange e $ "Not a valid identifier: " ++ prettyShow e++stripSingletonRawApp :: Expr -> Expr+stripSingletonRawApp (RawApp _ [e]) = stripSingletonRawApp e+stripSingletonRawApp e = e++isEqual :: Expr -> Maybe (Expr, Expr)+isEqual e =+  case stripSingletonRawApp e of+    Equal _ a b -> Just (stripSingletonRawApp a, stripSingletonRawApp b)+    _           -> Nothing++maybeNamed :: Expr -> Named_ Expr+maybeNamed e =+  case isEqual e of+    Just (Ident (QName x), b) -> named (Ranged (getRange x) (nameToRawName x)) b+    _                         -> unnamed e++patternSynArgs :: [Either Hiding LamBinding] -> Parser [Arg Name]+patternSynArgs = mapM pSynArg+  where+    pSynArg Left{}                   = parseError "Absurd patterns are not allowed in pattern synonyms"+    pSynArg (Right DomainFull{})     = parseError "Unexpected type signature in pattern synonym argument"+    pSynArg (Right (DomainFree x))+      | let h = getHiding x, h `notElem` [Hidden, NotHidden] = parseError $ prettyShow h ++ " arguments not allowed to pattern synonyms"+      | getRelevance x /= Relevant                = parseError "Arguments to pattern synonyms must be relevant"+      | otherwise                                 = return $ fmap (boundName . namedThing) x++parsePanic s = parseError $ "Internal parser error: " ++ s ++ ". Please report this as a bug."++{- RHS or type signature -}++data RHSOrTypeSigs+ = JustRHS RHS+ | TypeSigsRHS Expr+ deriving Show++patternToNames :: Pattern -> Parser [(ArgInfo, Name)]+patternToNames p =+  case p of+    IdentP (QName i)         -> return [(defaultArgInfo, i)]+    WildP r                  -> return [(defaultArgInfo, C.noName r)]+    DotP _ (Ident (QName i)) -> return [(setRelevance Irrelevant defaultArgInfo, i)]+    RawAppP _ ps             -> concat <$> mapM patternToNames ps+    _                        -> parseError $+      "Illegal name in type signature: " ++ prettyShow p++funClauseOrTypeSigs :: [Attr] -> LHS -> RHSOrTypeSigs -> WhereClause -> Parser [Declaration]+funClauseOrTypeSigs attrs lhs mrhs wh = do+  -- traceShowM lhs+  case mrhs of+    JustRHS rhs   -> do+      unless (null attrs) $ parseErrorRange attrs $ "A function clause cannot have attributes"+      return [FunClause lhs rhs wh False]+    TypeSigsRHS e -> case wh of+      NoWhere -> case lhs of+        LHS p _ _ | hasEllipsis p -> parseError "The ellipsis ... cannot have a type signature"+        LHS _ _ (_:_) -> parseError "Illegal: with in type signature"+        LHS _ (_:_) _ -> parseError "Illegal: rewrite in type signature"+        LHS p _ _ | hasWithPatterns p -> parseError "Illegal: with patterns in type signature"+        LHS p [] []  -> forMM (patternToNames p) $ \ (info, x) -> do+          info <- applyAttrs attrs info+          return $ typeSig info x e+      _ -> parseError "A type signature cannot have a where clause"++parseDisplayPragma :: Range -> Position -> String -> Parser Pragma+parseDisplayPragma r pos s =+  case parsePosString pos defaultParseFlags [normal] funclauseParser s of+    ParseOk s [FunClause (LHS lhs [] []) (RHS rhs) NoWhere ca] | null (parseInp s) ->+      return $ DisplayPragma r lhs rhs+    _ -> parseError "Invalid DISPLAY pragma. Should have form {-# DISPLAY LHS = RHS #-}."++typeSig :: ArgInfo -> Name -> Expr -> Declaration+typeSig i n e = TypeSig i n (Generalized e)++-- * Attributes++-- | Parsed attribute.++data Attr = Attr+  { attrRange :: Range       -- ^ Range includes the @.+  , attrName  :: String      -- ^ Concrete, user written attribute for error reporting.+  , theAttr   :: Attribute   -- ^ Parsed attribute.+  }++instance HasRange Attr where+  getRange = attrRange++instance SetRange Attr where+  setRange r (Attr _ x a) = Attr r x a++-- | Parse an attribute.+toAttribute :: (HasRange e, Pretty e) => e -> Parser Attr+toAttribute x = maybe failure (return . Attr (getRange x) y) $ stringToAttribute y+  where+  y = prettyShow x+  failure = parseErrorRange x $ "Unknown attribute: " ++ y++-- | Apply an attribute to thing (usually `Arg`).+--   This will fail if one of the attributes is already set+--   in the thing to something else than the default value.+applyAttr :: (LensAttribute a) => Attr -> a -> Parser a+applyAttr attr@(Attr r x a) = maybe failure return . setPristineAttribute a+  where+  failure = errorConflictingAttribute attr++-- | Apply attributes to thing (usually `Arg`).+--   Expects a reversed list of attributes.+--   This will fail if one of the attributes is already set+--   in the thing to something else than the default value.+applyAttrs :: (LensAttribute a) => [Attr] -> a -> Parser a+applyAttrs rattrs arg = do+  let attrs = reverse rattrs+  checkForUniqueAttribute (isJust . isQuantityAttribute ) attrs+  checkForUniqueAttribute (isJust . isRelevanceAttribute) attrs+  foldM (flip applyAttr) arg attrs++-- | Report a parse error if two attributes in the list are of the same kind,+--   thus, present conflicting information.+checkForUniqueAttribute :: (Attribute -> Bool) -> [Attr] -> Parser ()+checkForUniqueAttribute p attrs = do+  let pAttrs = filter (p . theAttr) attrs+  when (length pAttrs >= 2) $+    errorConflictingAttributes pAttrs++-- | Report an attribute as conflicting (e.g., with an already set value).+errorConflictingAttribute :: Attr -> Parser a+errorConflictingAttribute a = parseErrorRange a $ "Conflicting attribute: " ++ attrName a++-- | Report attributes as conflicting (e.g., with each other).+--   Precondition: List not emtpy.+errorConflictingAttributes :: [Attr] -> Parser a+errorConflictingAttributes [a] = errorConflictingAttribute a+errorConflictingAttributes as  = parseErrorRange as $+  "Conflicting attributes: " ++ unwords (map attrName as)+{-# LINE 1 "templates/GenericTemplate.hs" #-}+{-# LINE 1 "templates/GenericTemplate.hs" #-}+{-# LINE 1 "<built-in>" #-}+{-# LINE 1 "<command-line>" #-}+{-# LINE 10 "<command-line>" #-}+# 1 "/usr/include/stdc-predef.h" 1 3 4++# 17 "/usr/include/stdc-predef.h" 3 4++++++++++++++++++++++++++++++++++++++++++++{-# LINE 10 "<command-line>" #-}+{-# LINE 1 "/usr/local/stow/ghc-8.6.5-rc1/lib/ghc-8.6.4.20190406/include/ghcversion.h" #-}+++++++++++++++++{-# LINE 10 "<command-line>" #-}+{-# LINE 1 "/tmp/ghc23210_0/ghc_2.h" #-}++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   
doc/user-manual.pdf view

binary file changed (640670 → 872344 bytes)

src/agda-mode/Main.hs view
@@ -165,8 +165,9 @@           (removeFile . fst) $ \(file, h) -> do     hClose h     exit <- rawSystem "emacs"-                      [ "--no-desktop", "--no-window-system", "--no-splash"+                      [ "--no-desktop", "-nw", "--no-splash"                           -- Andreas, 2014-01-11: ^ try a leaner startup of emacs+                          -- Andreas, 2018-09-08: -nw instead of --no-window-system as some emacses do not support the long version                       , "--eval"                       , "(with-temp-file " ++ escape file ++ " "                                            ++ query ++ ")"
src/data/Agda.css view
@@ -1,33 +1,37 @@ /* Aspects. */-.Comment       { color: #B22222 }-.Keyword       { color: #CD6600 }-.String        { color: #B22222 }-.Number        { color: #A020F0 }-.Symbol        { color: #404040 }-.PrimitiveType { color: #0000CD }-.Operator      {}+.Agda .Comment       { color: #B22222 }+.Agda .Background    {}+.Agda .Markup        { color: #000000 }+.Agda .Keyword       { color: #CD6600 }+.Agda .String        { color: #B22222 }+.Agda .Number        { color: #A020F0 }+.Agda .Symbol        { color: #404040 }+.Agda .PrimitiveType { color: #0000CD }+.Agda .Pragma        { color: black   }+.Agda .Operator      {}  /* NameKinds. */-.Bound                  { color: black   }-.InductiveConstructor   { color: #008B00 }-.CoinductiveConstructor { color: #8B7500 }-.Datatype               { color: #0000CD }-.Field                  { color: #EE1289 }-.Function               { color: #0000CD }-.Module                 { color: #A020F0 }-.Postulate              { color: #0000CD }-.Primitive              { color: #0000CD }-.Record                 { color: #0000CD }+.Agda .Bound                  { color: black   }+.Agda .Generalizable          { color: black   }+.Agda .InductiveConstructor   { color: #008B00 }+.Agda .CoinductiveConstructor { color: #8B7500 }+.Agda .Datatype               { color: #0000CD }+.Agda .Field                  { color: #EE1289 }+.Agda .Function               { color: #0000CD }+.Agda .Module                 { color: #A020F0 }+.Agda .Postulate              { color: #0000CD }+.Agda .Primitive              { color: #0000CD }+.Agda .Record                 { color: #0000CD }  /* OtherAspects. */-.DottedPattern      {}-.UnsolvedMeta       { color: black; background: yellow         }-.UnsolvedConstraint { color: black; background: yellow         }-.TerminationProblem { color: black; background: #FFA07A        }-.IncompletePattern  { color: black; background: #F5DEB3        }-.Error              { color: red;   text-decoration: underline }-.TypeChecks         { color: black; background: #ADD8E6        }+.Agda .DottedPattern      {}+.Agda .UnsolvedMeta       { color: black; background: yellow         }+.Agda .UnsolvedConstraint { color: black; background: yellow         }+.Agda .TerminationProblem { color: black; background: #FFA07A        }+.Agda .IncompletePattern  { color: black; background: #F5DEB3        }+.Agda .Error              { color: red;   text-decoration: underline }+.Agda .TypeChecks         { color: black; background: #ADD8E6        }  /* Standard attributes. */-a { text-decoration: none }-a[href]:hover { background-color: #B4EEB4 }+.Agda a { text-decoration: none }+.Agda a[href]:hover { background-color: #B4EEB4 }
src/data/agda.sty view
@@ -5,7 +5,7 @@ \ProvidesPackage{agda}  \RequirePackage{ifxetex, ifluatex, xifthen, xcolor, polytable, etoolbox,-                calc, environ}+                calc, environ, xparse}  % https://tex.stackexchange.com/questions/47576/combining-ifxetex-and-ifluatex-with-the-logical-or-operation \newif\ifxetexorluatex@@ -35,85 +35,14 @@   \@AgdaEnableLinkstrue } -% If the "nofontsetup" option is used, then the package does not-% select any fonts, and it does not change the font encoding.-\newif\if@AgdaSetupFonts\@AgdaSetupFontstrue-\DeclareOption{nofontsetup}{-  \@AgdaSetupFontsfalse-}--% If the "noinputencodingsetup" option is used, then the package does-% not change the input encoding, and it does not load the `ucs`-% package.-\newif\if@AgdaSetupInputEncoding\@AgdaSetupInputEncodingtrue-\DeclareOption{noinputencodingsetup}{-  \@AgdaSetupInputEncodingfalse-}- \ProcessOptions\relax  % -----------------------------------------------------------------------% Input encoding setup--\if@AgdaSetupInputEncoding-  \ifxetexorluatex--    \providecommand{\DeclareUnicodeCharacter}[2]{\relax}--  \else--    \RequirePackage{ucs}-    \RequirePackage[utf8x]{inputenc}--  \fi-\fi--% ---------------------------------------------------------------------- % Font setup  \tracinglostchars=2 % If the font is missing some symbol, then say                     % so in the compilation output. -\if@AgdaSetupFonts-  % XeLaTeX or LuaLaTeX-  \ifxetexorluatex--    % Hack to get the amsthm package working.-    % https://tex.stackexchange.com/questions/130491/xelatex-error-paragraph-ended-before-tempa-was-complete-    \let\AgdaOpenBracket\[\let\AgdaCloseBracket\]-    \RequirePackage{fontspec}-    \let\[\AgdaOpenBracket\let\]\AgdaCloseBracket-    \RequirePackage{unicode-math}--    \setmainfont-      [ Ligatures      = TeX-      , BoldItalicFont = xits-bolditalic.otf-      , BoldFont       = xits-bold.otf-      , ItalicFont     = xits-italic.otf-      ]-      {xits-regular.otf}--    \setmathfont{xits-math.otf}-    \setmonofont[Mapping=tex-text]{FreeMono.otf}--    % Make mathcal and mathscr appear as different.-    % https://tex.stackexchange.com/questions/120065/xetex-what-happened-to-mathcal-and-mathscr-    \setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1]{xits-math.otf}-    \setmathfont[range=\mathscr]{xits-math.otf}--  % pdfLaTeX-  \else--    % https://tex.stackexchange.com/questions/1774/how-to-insert-pipe-symbol-in-latex-    \RequirePackage[T1]{fontenc}--    \RequirePackage{amsfonts, amssymb}-    \RequirePackage[safe]{tipa} % See page 12 of the tipa manual for what-                                % safe does.--  \fi-\fi- % ---------------------------------------------------------------------- % Colour schemes. @@ -186,28 +115,15 @@ % ---------------------------------------------------------------------- % Font styles. -\ifxetexorluatex-  \newcommand{\AgdaFontStyle}[1]{\ensuremath{\mathsf{#1}}}-  \ifthenelse{\equal{\AgdaColourScheme}{bw}}{-      \newcommand{\AgdaKeywordFontStyle}[1]{\underline{#1}}-  }{-      \newcommand{\AgdaKeywordFontStyle}[1]{\ensuremath{\mathsf{#1}}}-  }-  \newcommand{\AgdaStringFontStyle}[1]{\ensuremath{\texttt{#1}}}-  \newcommand{\AgdaCommentFontStyle}[1]{\ensuremath{\texttt{#1}}}-  \newcommand{\AgdaBoundFontStyle}[1]{\ensuremath{\mathit{#1}}}--\else-  \newcommand{\AgdaFontStyle}[1]{\textsf{#1}}-  \ifthenelse{\equal{\AgdaColourScheme}{bw}}{-      \newcommand{\AgdaKeywordFontStyle}[1]{\underline{#1}}-  }{-      \newcommand{\AgdaKeywordFontStyle}[1]{\textsf{#1}}-  }-  \newcommand{\AgdaStringFontStyle}[1]{\texttt{#1}}-  \newcommand{\AgdaCommentFontStyle}[1]{\texttt{#1}}-  \newcommand{\AgdaBoundFontStyle}[1]{\textit{#1}}-\fi+\newcommand{\AgdaFontStyle}[1]{\textsf{#1}}+\ifthenelse{\equal{\AgdaColourScheme}{bw}}{+    \newcommand{\AgdaKeywordFontStyle}[1]{\underline{#1}}+}{+    \newcommand{\AgdaKeywordFontStyle}[1]{\textsf{#1}}+}+\newcommand{\AgdaStringFontStyle}[1]{\texttt{#1}}+\newcommand{\AgdaCommentFontStyle}[1]{\texttt{#1}}+\newcommand{\AgdaBoundFontStyle}[1]{\textit{#1}}  % ---------------------------------------------------------------------- % Colours.@@ -218,7 +134,7 @@      % Aspect colours.     \definecolor{AgdaComment}      {HTML}{000000}-    \definecolor{AgdaOption}       {HTML}{000000}+    \definecolor{AgdaPragma}       {HTML}{000000}     \definecolor{AgdaKeyword}      {HTML}{000000}     \definecolor{AgdaString}       {HTML}{000000}     \definecolor{AgdaNumber}       {HTML}{000000}@@ -227,6 +143,7 @@      % NameKind colours.     \definecolor{AgdaBound}                 {HTML}{000000}+    \definecolor{AgdaGeneralizable}         {HTML}{000000}     \definecolor{AgdaInductiveConstructor}  {HTML}{000000}     \definecolor{AgdaCoinductiveConstructor}{HTML}{000000}     \definecolor{AgdaDatatype}              {HTML}{000000}@@ -255,7 +172,7 @@      % Aspect colours.     \definecolor{AgdaComment}      {HTML}{B22222}-    \definecolor{AgdaOption}       {HTML}{000000}+    \definecolor{AgdaPragma}       {HTML}{000000}     \definecolor{AgdaKeyword}      {HTML}{000000}     \definecolor{AgdaString}       {HTML}{000000}     \definecolor{AgdaNumber}       {HTML}{000000}@@ -264,6 +181,7 @@      % NameKind colours.     \definecolor{AgdaBound}                 {HTML}{A020F0}+    \definecolor{AgdaGeneralizable}         {HTML}{A020F0}     \definecolor{AgdaInductiveConstructor}  {HTML}{8B0000}     \definecolor{AgdaCoinductiveConstructor}{HTML}{8B0000}     \definecolor{AgdaDatatype}              {HTML}{0000CD}@@ -291,7 +209,7 @@ }{     % Aspect colours.     \definecolor{AgdaComment}      {HTML}{B22222}-    \definecolor{AgdaOption}       {HTML}{000000}+    \definecolor{AgdaPragma}       {HTML}{000000}     \definecolor{AgdaKeyword}      {HTML}{CD6600}     \definecolor{AgdaString}       {HTML}{B22222}     \definecolor{AgdaNumber}       {HTML}{A020F0}@@ -300,6 +218,7 @@      % NameKind colours.     \definecolor{AgdaBound}                 {HTML}{000000}+    \definecolor{AgdaGeneralizable}         {HTML}{000000}     \definecolor{AgdaInductiveConstructor}  {HTML}{008B00}     \definecolor{AgdaCoinductiveConstructor}{HTML}{8B7500}     \definecolor{AgdaDatatype}              {HTML}{0000CD}@@ -332,8 +251,8 @@ % Aspect commands. \newcommand{\AgdaComment}     [1]     {\AgdaNoSpaceMath{\AgdaCommentFontStyle{\textcolor{AgdaComment}{#1}}}}-\newcommand{\AgdaOption}      [1]-    {\AgdaNoSpaceMath{\AgdaCommentFontStyle{\textcolor{AgdaOption}{#1}}}}+\newcommand{\AgdaPragma}      [1]+    {\AgdaNoSpaceMath{\AgdaCommentFontStyle{\textcolor{AgdaPragma}{#1}}}} \newcommand{\AgdaKeyword}     [1]     {\AgdaNoSpaceMath{\AgdaKeywordFontStyle{\textcolor{AgdaKeyword}{#1}}}} \newcommand{\AgdaString}      [1]@@ -371,6 +290,8 @@  \newcommand{\AgdaBound}[1]     {\AgdaNoSpaceMath{\AgdaBoundFontStyle{\textcolor{AgdaBound}{\AgdaFormat{#1}{#1}}}}}+\newcommand{\AgdaGeneralizable}[1]+    {\AgdaNoSpaceMath{\AgdaBoundFontStyle{\textcolor{AgdaGeneralizable}{\AgdaFormat{#1}{#1}}}}} \newcommand{\AgdaInductiveConstructor}[1]     {\AgdaNoSpaceMath{\AgdaFontStyle{\textcolor{AgdaInductiveConstructor}{\AgdaFormat{#1}{\AgdaLink{#1}}}}}} \newcommand{\AgdaCoinductiveConstructor}[1]@@ -594,9 +515,9 @@   \Agda@AlignEnd{}%   \ignorespacesafterend} -% Vertical space used for empty lines. By default \baselineskip.+% Vertical space used for empty lines. By default \abovedisplayskip. \newlength{\AgdaEmptySkip}-\setlength{\AgdaEmptySkip}{\baselineskip}+\setlength{\AgdaEmptySkip}{\abovedisplayskip}  % Extra space to be inserted for empty lines (the difference between % \AgdaEmptySkip and \baselineskip). Used internally.@@ -606,12 +527,38 @@ % % Code can be hidden by writing \begin{code}[hide]. %+% Inline code can be emitted by writing \begin{code}[inline]. In this+% case most of the discussion above does not apply, alignment is not+% respected, and so on. It is recommended to only use this option for+% a single line of code, and to not use two consecutive spaces in this+% piece of code.+%+% Note that this environment ignores spaces after its end. If a space+% (\AgdaSpace{}) should be inserted after the inline code, use inline*+% instead of inline.+% % The implementation is based on plainhscode in lhs2TeX's % polycode.fmt, written by Andres Löh. \NewEnviron{code}[1][]{%   % Conditionally hide the code.   \ifthenelse{\equal{#1}{hide}}{}{%+  \ifthenelse{\equal{#1}{inline}}{%+    % Inline code.     %+    % Make the polytable primitives emitted by the LaTeX backend+    % do nothing.+    \DeclareDocumentCommand{\>}{O{}O{}}{}%+    \DeclareDocumentCommand{\<}{O{}}{}%+    \AgdaCodeStyle\BODY}{%+  \ifthenelse{\equal{#1}{inline*}}{%+    % Inline code with space at the end.+    %+    \DeclareDocumentCommand{\>}{O{}O{}}{}%+    \DeclareDocumentCommand{\<}{O{}}{}%+    \AgdaCodeStyle\BODY\AgdaSpace{}}{%+    %+    % Displayed code.+    %     % Conditionally emit space before the code block. Unconditionally     % switch to a new line.     \ifthenelse{\boolean{Agda@SpaceAroundCode} \and%@@ -658,7 +605,7 @@       \Agda@NewlineWithVerticalSpace{0pt}}%     %     % Step the code block counter, but only for non-hidden code.-    \stepcounter{Agda@Current}}}+    \stepcounter{Agda@Current}}}}}  % Space inserted after tokens. \newcommand{\AgdaSpace}{ }
src/data/emacs-mode/agda-input.el view
@@ -307,6 +307,8 @@   (".+"        . ("∔"))   (".-"        . ("∸"))   (":"         . ,(agda-input-to-string-list "∶⦂ː꞉˸፥፦:﹕︓"))+  (","         . ,(agda-input-to-string-list "ʻ،⸲⸴⹁⹉、︐︑﹐﹑,、"))+  (";"         . ,(agda-input-to-string-list "؛⁏፤꛶;︔﹔⍮⸵;"))   ("::"        . ("∷"))   ("::-"       . ("∺"))   ("-:"        . ("∹"))@@ -945,7 +947,6 @@   ("_s" . ("ₛ"))   ("_t" . ("ₜ"))   ("_u" . ("ᵤ"))-  ("_v" . ("ᵥ"))   ("_x" . ("ₓ"))    ("^a" . ("ᵃ"))
src/data/emacs-mode/agda2-highlight.el view
@@ -96,6 +96,8 @@              :foreground "medium blue")             (agda2-highlight-bound-variable-face              :foreground "purple")+            (agda2-highlight-generalizable-variable-face+             :foreground "purple")             (agda2-highlight-inductive-constructor-face              :foreground "firebrick3")             (agda2-highlight-coinductive-constructor-face@@ -157,6 +159,9 @@                 (cons 'agda2-highlight-bound-variable-face                       (agda2-highlight-face-attributes                        font-lock-variable-name-face))+                (cons 'agda2-highlight-generalizable-variable-face+                      (agda2-highlight-face-attributes+                       font-lock-variable-name-face))                 (cons 'agda2-highlight-inductive-constructor-face                       (agda2-highlight-face-attributes                        font-lock-type-face))@@ -260,6 +265,11 @@   "The face used for bound variables."   :group 'agda2-highlight-faces) +(defface agda2-highlight-generalizable-variable-face+  '((t nil))+  "The face used for generalizable variables."+  :group 'agda2-highlight-faces)+ (defface agda2-highlight-inductive-constructor-face   '((t (:foreground "green4")))   "The face used for inductive constructors."@@ -295,6 +305,11 @@   "The face used for postulates."   :group 'agda2-highlight-faces) +(defface agda2-highlight-pragma-face+  '((t nil))+  "The face used for (some text in) pragmas."+  :group 'agda2-highlight-faces)+ (defface agda2-highlight-primitive-face   '((t (:foreground "medium blue")))   "The face used for primitive functions."@@ -345,9 +360,9 @@   "The face used for positivity problems."   :group 'agda2-highlight-faces) -(defface agda2-highlight-reachability-problem-face+(defface agda2-highlight-deadcode-face   '((t (:background "dark gray")))-  "The face used for reachability problems."+  "The face used for dead code (unreachable clauses, etc.)."   :group 'agda2-highlight-faces)  (defface agda2-highlight-coverage-problem-face@@ -369,11 +384,14 @@ (defvar agda2-highlight-faces   '((keyword                . agda2-highlight-keyword-face)     (comment                . font-lock-comment-face)+    (background             . font-lock-comment-face)+    (markup                 . font-lock-comment-face)     (string                 . agda2-highlight-string-face)     (number                 . agda2-highlight-number-face)     (symbol                 . agda2-highlight-symbol-face)     (primitivetype          . agda2-highlight-primitive-type-face)     (bound                  . agda2-highlight-bound-variable-face)+    (generalizable          . agda2-highlight-generalizable-variable-face)     (inductiveconstructor   . agda2-highlight-inductive-constructor-face)     (coinductiveconstructor . agda2-highlight-coinductive-constructor-face)     (datatype               . agda2-highlight-datatype-face)@@ -381,6 +399,7 @@     (function               . agda2-highlight-function-face)     (module                 . agda2-highlight-module-face)     (postulate              . agda2-highlight-postulate-face)+    (pragma                 . agda2-highlight-pragma-face)     (primitive              . agda2-highlight-primitive-face)     (macro                  . agda2-highlight-macro-face)     (record                 . agda2-highlight-record-face)@@ -390,7 +409,7 @@     (unsolvedmeta           . agda2-highlight-unsolved-meta-face)     (unsolvedconstraint     . agda2-highlight-unsolved-constraint-face)     (terminationproblem     . agda2-highlight-termination-problem-face)-    (reachabilityproblem    . agda2-highlight-reachability-problem-face)+    (deadcode               . agda2-highlight-deadcode-face)     (coverageproblem        . agda2-highlight-coverage-problem-face)     (positivityproblem      . agda2-highlight-positivity-problem-face)     (incompletepattern      . agda2-highlight-incomplete-pattern-face)@@ -407,6 +426,7 @@ `error'                  Errors. `field'                  Record fields. `function'               Functions.+`generalizable'          Generalizable variables. `incompletepattern'      Incomplete patterns. `inductiveconstructor'   Inductive constructors. `keyword'                Keywords.@@ -414,6 +434,8 @@ `number'                 Numbers. `operator'               Operators. `postulate'              Postulates.+`pragma'                 Text occurring in pragmas that does not have+                           a more specific (syntactic) aspect. `primitive'              Primitive functions. `primitivetype'          Primitive types (like Set and Prop). `macro'                  Macros.@@ -422,13 +444,16 @@ `symbol'                 Symbols like forall, =, ->, etc. `terminationproblem'     Termination problems. `positivityproblem'      Positivity problems.-`reachabilityproblem'    Reachability problems.+`deadcode'               Deadcode (like unreachable clauses or RHS) `coverageproblem'        Coverage problems. `catchallclause'         Clause not holding definitionally. `typechecks'             Code which is being type-checked. `unsolvedconstraint'     Unsolved constraints, not connected to meta                            variables. `unsolvedmeta'           Unsolved meta variables.+`background'             Non-Agda code contents in literate mode.+`markup'                 Delimiters to separate the Agda code blocks+                           from other contents `comment'                Comments.")  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@ -443,6 +468,7 @@  (defun agda2-highlight-setup nil   "Set up the `annotation' library for use with `agda2-mode'."+  (agda2-highlight-set-faces 'agda2-highlight-face-groups agda2-highlight-face-groups)   (setq annotation-bindings agda2-highlight-faces))  (defun agda2-highlight-apply (remove &rest cmds)
src/data/emacs-mode/agda2-mode-pkg.el view
@@ -1,2 +1,2 @@-(define-package "agda2-mode" "2.5.4.2"+(define-package "agda2-mode" "2.6.0"   "interactive development for Agda, a dependently typed functional programming language")
src/data/emacs-mode/agda2-mode.el view
@@ -10,7 +10,7 @@  ;;; Code: -(defvar agda2-version "2.5.4.2"+(defvar agda2-version "2.6.0"   "The version of the Agda mode. Note that the same version of the Agda executable must be used.") @@ -59,18 +59,6 @@   ;; Use cl-labels if available to avoid obsolescence warnings.   `(let* ,varbind (,(if (fboundp 'cl-labels) 'cl-labels 'labels) ,funcbind ,@body))) -(defun agda2-chunkify (n xs)-  "Returns a list containing chunks of XS of length at most N.-All the elements of XS are included, in their original order."-  (let ((i 0)-        (len (length xs))-        out)-    (while (< i len)-      (let ((new-i (+ i (min n (- len i)))))-        (setq out (cons (subseq xs i new-i) out))-        (setq i new-i)))-    (nreverse out)))- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; User options @@ -106,13 +94,6 @@   "The name of the Agda toplevel module."   :type 'string :group 'agda2) -(defcustom agda2-warning-window-max-height-  0.35-  "The maximum height of the warning window.-A multiple of the frame height."-  :type 'number-  :group 'agda2)- (defcustom agda2-information-window-max-height   0.35   "The maximum height of the information window.@@ -236,8 +217,9 @@     (agda2-next-goal                         "\C-c\C-f"           (global)       "Next goal") ; Forward.     (agda2-previous-goal                     "\C-c\C-b"           (global)       "Previous goal") ; Back.     (agda2-give                              ,(kbd "C-c C-SPC")   (local)        "Give")+    (agda2-elaborate-give                    ,(kbd "C-c C-m")     (local)        "Elaborate and Give")     (agda2-refine                            "\C-c\C-r"           (local)        "Refine")-    (agda2-auto                              "\C-c\C-a"           (local)        "Auto")+    (agda2-auto-maybe-all                    "\C-c\C-a"           (local global) "Auto")     (agda2-make-case                         "\C-c\C-c"           (local)        "Case")     (agda2-goal-type                         "\C-c\C-t"           (local)        "Goal type")     (agda2-show-context                      "\C-c\C-e"           (local)        "Context (environment)")@@ -297,9 +279,6 @@ (defvar agda2-info-buffer nil   "Agda information buffer.") -(defvar agda2-warning-buffer nil-  "Agda warnings buffer.")- (defvar agda2-process-buffer nil   "Agda subprocess buffer. Set in `agda2-restart'.")@@ -309,7 +288,10 @@ Set in `agda2-restart'.")  (defvar agda2-in-progress nil-  "Is the Agda process currently busy?")+  "Is the Agda process currently busy?+Valid values: `nil' (not busy), `busy' (busy),+`not-so-busy' (busy with something that should typically+terminate fairly quickly).")  ;; Some buffer locals (defvar agda2-buffer-external-status ""@@ -356,14 +338,6 @@ ;; process, `agda2-go', `agda2-restart', `agda2-abort-highlighting', ;; and `agda2-abort-done'. -(defvar agda2-responses-expected nil-  "Is the Agda process expected to produce at least one response?")-(make-variable-buffer-local 'agda2-responses-expected)--(defvar agda2-responses 0-  "The number of encountered response commands.")-(make-variable-buffer-local 'agda2-responses)- (defvar agda2-output-chunk-incomplete (agda2-queue-empty)   "Buffer for incomplete lines. \(See `agda2-output-filter'.)")@@ -543,30 +517,60 @@       (insert "\n")       (process-send-string agda2-process (concat command "\n"))))) -(defun agda2-abort-if-in-progress ()-  "Raise an error if the Agda process is (thought to be) busy."-  (when agda2-in-progress-    (error "Another command is currently in progress-\(if a command has been aborted you may want to restart Agda)")))--(defun agda2-go (save responses-expected highlight do-abort &rest args)+(defun agda2-go (save highlight how-busy do-abort &rest args)   "Executes commands in the Agda2 interpreter. Sends the list of strings ARGS to the Agda2 interpreter, waits-for output and executes the responses, if any. If SAVE is-'save, then the buffer is saved first. If no responses are-received, and RESPONSES-EXPECTED is non-nil, then an error is-raised. If HIGHLIGHT is non-nil, then the buffer's syntax-highlighting may be updated."+for output and executes the responses, if any. -  (if do-abort (agda2-abort-if-in-progress))+If SAVE is 'save, then the buffer is saved first. -  (setq agda2-in-progress             t-        agda2-highlight-in-progress   highlight-        agda2-responses-expected      responses-expected-        agda2-responses               0-        agda2-output-chunk-incomplete (agda2-queue-empty)-        agda2-file-buffer             (current-buffer))+If HIGHLIGHT is non-nil, then the buffer's syntax highlighting+may be updated. This is also the case if the Agda process is+busy (or `not-so-busy') and `agda2-highlight-in-process' is+non-nil. +The value HOW-BUSY should be `busy' if it should not be possible+to invoke other commands while this command is running (with the+exception of commands for which DO-ABORT is nil). Otherwise it+should be `not-so-busy' (which should only be used for commands+that typically terminate fairly quickly).++If the Agda process is busy (or `not-so-busy'), and the current+buffer does not match `agda2-file-buffer', then the command is+not executed and an error is raised. The same applies if DO-ABORT+is non-nil and the Agda process is `busy'."++  ; Check that how-busy is well-formed.+  (assert (or (equal how-busy 'busy)+              (equal how-busy 'not-so-busy)))++  (when (and agda2-in-progress+             (not (equal agda2-file-buffer+                         (current-buffer))))+    (error "Agda is busy with something in the buffer %s"+           agda2-file-buffer))++  (when (and do-abort+             (equal agda2-in-progress 'busy))+    (error "Agda is busy with something+\(you have the option to abort or restart Agda)"))++  (setq agda2-file-buffer (current-buffer))++  (setq agda2-highlight-in-progress+        (or highlight+            (and agda2-in-progress+                 agda2-highlight-in-progress)))++  (unless agda2-in-progress+    (setq agda2-output-chunk-incomplete (agda2-queue-empty)))++  (setq agda2-in-progress+        (if (or (equal how-busy 'busy)+                (equal agda2-in-progress 'busy))+            'busy+          'not-so-busy))+   (when (equal save 'save) (save-buffer))    (apply 'agda2-send-command@@ -595,7 +599,6 @@ successful."   (agda2-remove-annotations)   (setq agda2-highlight-in-progress nil-        agda2-responses-expected    nil         agda2-last-responses        nil))  (defun agda2-output-filter (proc chunk)@@ -620,9 +623,7 @@  The non-last commands are run in the order in which they appear. -When the prompt has been reached an error is raised if-`agda2-responses-expected' is non-nil and no commands have-arrived. Otherwise highlighting annotations are+When the prompt has been reached highlighting annotations are reloaded from `agda2-highlighting-file', unless `agda2-highlighting-in-progress' is nil." @@ -683,8 +684,6 @@                     (insert line)                     (insert "\n"))))               (when cmd-                (unless is-highlighting-command-                  (incf agda2-responses))                 (if (equal 'last (car-safe (car cmd)))                     (push (cons (cdr (car cmd)) (cdr cmd))                           agda2-last-responses)@@ -703,10 +702,6 @@                 agda2-in-progress nil                 agda2-last-responses (nreverse agda2-last-responses)) -          (when (and agda2-responses-expected-                     (equal agda2-responses 0))-            (agda2-raise-error))-           (agda2-run-last-commands)            (when agda2-measure-data@@ -774,9 +769,7 @@ range is given.  If SAVE is 'save, then the buffer is saved just before the-command is sent to Agda (if it is sent).--An error is raised if no responses are received."+command is sent to Agda (if it is sent)."   (multiple-value-bind (o g) (agda2-goal-at (point))     (unless g (error "For this command, please place the cursor in a goal"))     (let ((txt (buffer-substring-no-properties (+ (overlay-start o) 2)@@ -787,7 +780,7 @@                   (or ask (string-match "\\`\\s *\\'" txt)))              (setq txt (read-string (concat want ": ") nil nil txt t)))             (t (setq input-from-goal t)))-      (apply 'agda2-go save t input-from-goal t cmd+      (apply 'agda2-go save input-from-goal 'busy t cmd              (format "%d" g)              (if input-from-goal (agda2-goal-Range o) (agda2-mkRange nil))              (agda2-string-quote txt) args))))@@ -809,7 +802,7 @@ (defun agda2-load ()   "Load current buffer."   (interactive)-  (agda2-go 'save t t t "Cmd_load"+  (agda2-go 'save t 'busy t "Cmd_load"             (agda2-string-quote (buffer-file-name))             (agda2-list-quote agda2-program-args)             ))@@ -824,7 +817,8 @@ If CONTINUATION is non-nil, then CONTINUATION is applied to the resulting time (represented as a string)."   (interactive)-  (agda2-abort-if-in-progress)+  (when agda2-in-progress+    (error "Agda is busy with something"))   (let* ((agda2-highlight-level           (or highlighting-level agda2-highlight-level)))     (setq agda2-measure-data (cons continuation (current-time)))@@ -843,7 +837,7 @@                                          'inherit-input-method))                        (t agda2-backend))))     (when (equal backend "") (error "No backend chosen"))-    (agda2-go 'save t t t "Cmd_compile"+    (agda2-go 'save t 'busy t "Cmd_compile"               backend               (agda2-string-quote (buffer-file-name))               (agda2-list-quote agda2-program-args)@@ -913,10 +907,16 @@       (agda2-goal-cmd "Cmd_refine_or_intro True" 'save 'goal)     (agda2-goal-cmd "Cmd_refine_or_intro False" 'save 'goal))) -(defun agda2-auto ()+(defun agda2-autoOne ()  "Simple proof search" (interactive)- (agda2-goal-cmd "Cmd_auto" 'save 'goal))+ (agda2-goal-cmd "Cmd_autoOne" 'save 'goal)) +(defun agda2-autoAll ()+  (interactive)+  "Solves all goals by simple proof search."+  (agda2-go nil nil 'busy t "Cmd_autoAll")+)+ (defun agda2-make-case ()   "Refine the pattern variables given in the goal. Assumes that <clause> = {!<variables>!} is on one line."@@ -972,8 +972,8 @@   (setq agda2-buffer-external-status status)   (force-mode-line-update)) -(defmacro agda2-warning-or-info-buffer (buffer kind title)-  "Used to define the functions agda2-warning-buffer and agda2-info-buffer."+(defmacro agda2-information-buffer (buffer kind title)+  "Used to define functions like `agda2-info-buffer'."   `(defun ,buffer nil      ,(concat "Creates the Agda " kind               " buffer, if it does not already exist.@@ -1006,11 +1006,7 @@    ,buffer)) -(agda2-warning-or-info-buffer- agda2-warning-buffer "warning" "*Agda warnings*")--(agda2-warning-or-info-buffer- agda2-info-buffer "info" "*Agda information*")+(agda2-information-buffer agda2-info-buffer "info" "*Agda information*")  (defun agda2-info-action (name text &optional append)   "Insert TEXT into the Agda info buffer and display it.@@ -1090,90 +1086,6 @@               (goto-char (point-max))             (goto-char (point-min)))))))) -(defun agda2-close-warning nil-  (interactive)-  (when (buffer-live-p agda2-warning-buffer)-        (delete-windows-on agda2-warning-buffer))-)--(defun agda2-warning-action (name text &optional append)-  "Insert TEXT into the Agda warning buffer and display it.-NAME is displayed in the buffer's mode line.--If APPEND is non-nil, then TEXT is appended at the end of the-buffer, and point placed after this text.--If APPEND is nil, then any previous text is removed before TEXT-is inserted, and point is placed before this text."-  (interactive)-  (let ((buf (agda2-warning-buffer)))-    (with-current-buffer buf-      ;; In some cases the jump-to-position-mentioned-in-text-      ;; functionality (see compilation-error-regexp-alist above)-      ;; didn't work: Emacs jumped to the wrong position. However, it-      ;; seems to work if compilation-forget-errors is used. This-      ;; problem may be related to Emacs bug #9679-      ;; (http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9679). The idea-      ;; to use compilation-forget-errors comes from a comment due to-      ;; Oleksandr Manzyuk-      ;; (https://github.com/haskell/haskell-mode/issues/67).-      (compilation-forget-errors)-      (unless append (erase-buffer))-      (save-excursion-        (goto-char (point-max))-        (insert text))-      (put-text-property 0 (length name) 'face '(:weight bold) name)-      (setq mode-line-buffer-identification name)-      (force-mode-line-update))-    ;; If the current window displays the information buffer, then the-    ;; window configuration is left untouched.-    (unless (equal (window-buffer) buf)-      (let ((agda-info-              (and agda2-info-buffer-                   (car-safe-                     ;; All windows, including minibuffers, on any-                     ;; frame on the current terminal, displaying the-                     ;; present Agda file buffer.-                    (get-buffer-window-list agda2-info-buffer t 0)))))-        (save-selected-window-          ;; Select a window displaying the Agda file buffer (if such-          ;; a window exists). With certain configurations of-          ;; display-buffer this should increase the likelihood that-          ;; the info buffer will be displayed on the same frame.-          (when agda-info-            (select-window agda-info 'no-record))-          (let* (;; The warnings window should be displayed below the-                 ;; Agda info one-                 (split-width-threshold nil)-                 (split-height-threshold 1)-                 (window-                   (display-buffer-                     buf-                     ;; Under Emacs 23 the effect of the following-                     ;; argument is only that the current window-                     ;; should not be used.-                     '((display-buffer-below-selected)-                       .-                       (;; Do not use the same window-                        (inhibit-same-window . t)-                        ;; Do not raise or select another frame.-                        (inhibit-switch-frame . t))))))-            (if window-                (fit-window-to-buffer window-                  (truncate-                    (* (frame-height)-                       agda2-warning-window-max-height))))))))-    ;; Move point in every window displaying the information buffer.-    ;; Exception: If we are appending, don't move point in selected-    ;; windows.-    (dolist (window (get-buffer-window-list buf 'no-minibuffer t))-      (unless (and append-                   (equal window (selected-window)))-        (with-selected-window window-          (if append-              (goto-char (point-max))-            (goto-char (point-min))))))))- (defun agda2-info-action-and-copy (name text &optional append)   "Same as agda2-info-action but also puts TEXT in the kill ring."   (kill-new text)@@ -1181,11 +1093,11 @@  (defun agda2-show-goals()   "Show all goals." (interactive)-  (agda2-go nil t t t "Cmd_metas"))+  (agda2-go nil t 'busy t "Cmd_metas"))  (defun agda2-show-constraints()   "Show constraints." (interactive)-  (agda2-go nil t t t "Cmd_constraints"))+  (agda2-go nil t 'busy t "Cmd_constraints"))  (defun agda2-remove-annotations ()   "Removes buffer annotations (overlays and text properties)."@@ -1260,7 +1172,7 @@ COMMENT is used to build the function's comments. The function NAME takes a prefix argument which tells whether it should normalise types or not when running CMD (through-`agda2-go' nil t nil t; the string PROMPT is used as the goal+`agda2-go' nil nil 'busy t; the string PROMPT is used as the goal command prompt)."   (let ((eval (make-symbol "eval")))     `(defun ,name (prefix expr)@@ -1282,7 +1194,7 @@        (let ((,eval (cond ((equal prefix nil) "Simplified")                           ((equal prefix '(4)) "Instantiated")                           ("Normalised"))))-         (agda2-go nil t nil t+         (agda2-go nil nil 'busy t                    (concat ,cmd " " ,eval " "                            (agda2-string-quote expr))))))) @@ -1291,7 +1203,7 @@ COMMENT is used to build the function's comments. The function NAME takes a prefix argument which tells whether it should normalise types or not when running CMD (through-`agda2-go' nil t nil t;)."+`agda2-go' nil nil 'busy t;)."   (let ((eval (make-symbol "eval")))     `(defun ,name (prefix)        ,(concat comment ".@@ -1312,7 +1224,7 @@        (let ((,eval (cond ((equal prefix nil) "AsIs")                           ((equal prefix '(4)) "Simplified")                           ("Normalised"))))-         (agda2-go nil t nil t+         (agda2-go nil nil 'busy t                    (concat ,cmd " " ,eval " "                            )))))) @@ -1353,7 +1265,7 @@ (defun agda2-why-in-scope-toplevel (name)   "Explain why something is in scope at the top level."   (interactive "MName: ")-  (agda2-go nil t nil t+  (agda2-go nil nil 'busy t             "Cmd_why_in_scope_toplevel"             (agda2-string-quote name))) @@ -1365,6 +1277,12 @@                           'agda2-why-in-scope-toplevel)))  (agda2-maybe-normalised+ agda2-elaborate-give+ "Elaborate check the given expression against the hole's type and fill in hole with the elaborated term"+ "Cmd_elaborate_give"+ "expression to elaborate and give")++(agda2-maybe-normalised  agda2-goal-and-context  "Shows the type of the goal at point and the currect context"  "Cmd_goal_type_context"@@ -1436,6 +1354,15 @@                           'agda2-solveAll)) ) +(defun agda2-auto-maybe-all ()+  "Run auto.+Either only one if point is a goal, or all of them."+  (interactive)+  (call-interactively (if (agda2-goal-at (point))+                          'agda2-autoOne+                          'agda2-autoAll))+)+ (agda2-maybe-normalised-global   agda2-solveAll   "Solves all goals that are already instantiated internally."@@ -1470,7 +1397,7 @@ \"show <expression>\" is computed, and then the resulting string is printed. -With any prefix argument \"abstract\" is ignored during the+With the prefix argument `(4)' \"abstract\" is ignored during the computation."   (interactive "P")   (let ((cmd (concat "Cmd_compute"@@ -1488,14 +1415,15 @@ \"show <expression>\" is computed, and then the resulting string is printed. -With any prefix argument \"abstract\" is ignored during the+With the prefix argument `(4)' \"abstract\" is ignored during the computation."   (interactive "MExpression: \nP")   (let ((cmd (concat "Cmd_compute_toplevel"                      (cond ((equal arg nil) " DefaultCompute")                             ((equal arg '(4)) " IgnoreAbstract")                             (" UseShowInstance")) " ")))-    (agda2-go nil t nil t (concat cmd (agda2-string-quote expr)))))+    (agda2-go nil nil 'busy t+              (concat cmd (agda2-string-quote expr)))))  (defun agda2-compute-normalised-maybe-toplevel ()   "Compute the normal form of the given expression.@@ -1506,7 +1434,7 @@ \"show <expression>\" is computed, and then the resulting string is printed. -With any prefix argument \"abstract\" is ignored during the+With the prefix argument `(4)' \"abstract\" is ignored during the computation."   (interactive)   (if (agda2-goal-at (point))@@ -1516,7 +1444,7 @@ (defun agda2-display-program-version ()   "Display version of Agda"   (interactive)-  (agda2-go nil nil nil t "Cmd_show_version"))+  (agda2-go nil nil 'busy t "Cmd_show_version"))  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;@@ -1525,7 +1453,7 @@   "Loads precomputed syntax highlighting info for the current buffer. Only if the buffer is unmodified, and only if there is anything to load."  (unless (buffer-modified-p)-   (agda2-go nil nil t t+   (agda2-go nil t 'not-so-busy t              "Cmd_load_highlighting_info"              (agda2-string-quote (buffer-file-name))))) @@ -1557,7 +1485,7 @@        ;; Don't run modification hooks: we don't want this function to        ;; trigger agda2-abort-highlighting.        (inhibit-modification-hooks t))-      ((delims() (re-search-forward "[?]\\|[{][-!]\\|[-!][}]\\|--\\|^%.*\\\\begin{code}\\|\\\\begin{code}\\|\\\\end{code}" nil t))+      ((delims() (re-search-forward "[?]\\|[{][-!]\\|[-!][}]\\|--\\|^%.*\\\\begin{code}\\|\\\\begin{code}\\|\\\\end{code}\\|```\\|\\#\\+begin_src agda2\\|\\#\\+end_src agda2" nil t))        ;; is-proper checks whether string s (e.g. "?" or "--") is proper        ;; i.e., is not part of an identifier.        ;; comment-starter is true if s starts a comment (e.g. "--")@@ -1590,23 +1518,27 @@       (goto-char (point-min))       (while (and goals (safe-delims))         (agda2--case (match-string 0)-          ("\\begin{code}" (when (outside-code)               (pop stk)))-          ("\\end{code}"   (when (not stk)                    (push 'outside stk)))-          ("--"            (when (and (not stk)-                                      (is-proper "--" t))     (end-of-line)))-          ("{-"            (when (and (inside-code)-                                      (not (inside-goal)))    (push nil           stk)))-          ("-}"            (when (inside-comment)             (pop stk)))-          ("{!"            (when (and (inside-code)-                                      (not (inside-comment))) (push (- (point) 2) stk)))-          ("!}"            (when (inside-goal)-                             (setq top (pop stk))-                             (unless stk (make top))))-          ("?"             (progn-                             (when (and (not stk) (is-proper "?" nil))-                               (delete-char -1)-                               (insert "{!!}")-                               (make (- (point) 4))))))))))+          ("\\begin{code}"     (when (outside-code)               (pop stk)))+          ("\\end{code}"       (when (not stk)                    (push 'outside stk)))+          ("#+begin_src agda2" (when (outside-code)               (pop stk)))+          ("#+end_src agda2"   (when (not stk)                    (push 'outside stk)))+          ("```"               (if   (outside-code)               (pop stk)+                               (when (not stk)                    (push 'outside stk))))+          ("--"                (when (and (not stk)+                                          (is-proper "--" t))     (end-of-line)))+          ("{-"                (when (and (inside-code)+                                          (not (inside-goal)))    (push nil           stk)))+          ("-}"                (when (inside-comment)             (pop stk)))+          ("{!"                (when (and (inside-code)+                                          (not (inside-comment))) (push (- (point) 2) stk)))+          ("!}"                (when (inside-goal)+                                 (setq top (pop stk))+                                 (unless stk (make top))))+          ("?"                 (progn+                                 (when (and (not stk) (is-proper "?" nil))+                                   (delete-char -1)+                                   (insert "{!!}")+                                   (make (- (point) 4))))))))))  (defun agda2-make-goal (p q n)   "Make a goal with number N at <P>{!...!}<Q>.  Assume the region is clean."@@ -1665,7 +1597,7 @@         (delete-region p (+ p 2)))         ;; Update highlighting         (if (and (not (equal new-txt 'paren)) (not (equal new-txt 'no-paren)))-            (apply 'agda2-go 'save t t nil "Cmd_highlight"+            (apply 'agda2-go 'save t 'busy nil "Cmd_highlight"               (format "%d" old-g)               (agda2-mkRange `(,p ,(- q 2)))               (agda2-string-quote new-txt) nil))@@ -1869,10 +1801,11 @@   "Compute token-based highlighting information.  Unless `agda2-highlight-level' is `none' or the Agda process is-busy with something. This command might save the buffer."+busy (or `not-so-busy') with something. This command might save+the buffer."   (unless (or agda2-in-progress               (equal agda2-highlight-level 'none))-    (agda2-go 'save nil t t+    (agda2-go 'save t 'not-so-busy t               "Cmd_tokenHighlighting"               (agda2-string-quote (buffer-file-name))               "Keep")))@@ -1941,10 +1874,11 @@ the argument is a positive number, otherwise turn it off."   (interactive "P")   (cond-   ((eq arg nil)       (agda2-go nil t t t "ToggleImplicitArgs"))-   ((and (numberp arg)-         (> arg 0))    (agda2-go nil t t t "ShowImplicitArgs" "True"))-   (t                  (agda2-go nil t t t "ShowImplicitArgs" "False"))))+   ((eq arg nil)+      (agda2-go nil t 'not-so-busy t "ToggleImplicitArgs"))+   ((and (numberp arg) (> arg 0))+      (agda2-go nil t 'not-so-busy t "ShowImplicitArgs" "True"))+   (t (agda2-go nil t 'not-so-busy t "ShowImplicitArgs" "False"))))  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;
src/data/lib/prim/Agda/Builtin/Bool.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-universe-polymorphism --no-sized-types --no-guardedness #-}  module Agda.Builtin.Bool where 
src/data/lib/prim/Agda/Builtin/Char.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-universe-polymorphism --no-sized-types --no-guardedness #-}  module Agda.Builtin.Char where 
+ src/data/lib/prim/Agda/Builtin/Char/Properties.agda view
@@ -0,0 +1,10 @@+{-# OPTIONS --without-K --safe --no-sized-types --no-guardedness #-}++module Agda.Builtin.Char.Properties where++open import Agda.Builtin.Char+open import Agda.Builtin.Equality++primitive++  primCharToNatInjective : ∀ a b → primCharToNat a ≡ primCharToNat b → a ≡ b
src/data/lib/prim/Agda/Builtin/Coinduction.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --universe-polymorphism --no-sized-types --no-guardedness #-}  module Agda.Builtin.Coinduction where 
+ src/data/lib/prim/Agda/Builtin/Cubical/Glue.agda view
@@ -0,0 +1,159 @@+{-# OPTIONS --cubical --safe --no-sized-types --no-guardedness #-}+module Agda.Builtin.Cubical.Glue where++open import Agda.Primitive+open import Agda.Builtin.Sigma+open import Agda.Primitive.Cubical renaming (primINeg to ~_; primIMax to _∨_; primIMin to _∧_;+                                             primHComp to hcomp; primTransp to transp; primComp to comp;+                                             itIsOne to 1=1)+open import Agda.Builtin.Cubical.Path+open import Agda.Builtin.Cubical.Sub renaming (Sub to _[_↦_]; primSubOut to ouc)++module Helpers where+    -- Homogeneous filling+    hfill : ∀ {ℓ} {A : Set ℓ} {φ : I}+              (u : ∀ i → Partial φ A)+              (u0 : A [ φ ↦ u i0 ]) (i : I) → A+    hfill {φ = φ} u u0 i =+      hcomp (λ j → \ { (φ = i1) → u (i ∧ j) 1=1+                     ; (i = i0) → ouc u0 })+            (ouc u0)++    -- Heterogeneous filling defined using comp+    fill : ∀ {ℓ : I → Level} (A : ∀ i → Set (ℓ i)) {φ : I}+             (u : ∀ i → Partial φ (A i))+             (u0 : A i0 [ φ ↦ u i0 ]) →+             ∀ i →  A i+    fill A {φ = φ} u u0 i =+      comp (λ j → A (i ∧ j)) _+           (λ j → \ { (φ = i1) → u (i ∧ j) 1=1+                    ; (i = i0) → ouc u0 })+           (ouc {φ = φ} u0)++    module _ {ℓ} {A : Set ℓ} where+      refl : {x : A} → x ≡ x+      refl {x = x} = λ _ → x++      sym : {x y : A} → x ≡ y → y ≡ x+      sym p = λ i → p (~ i)++      cong : ∀ {ℓ'} {B : A → Set ℓ'} {x y : A}+             (f : (a : A) → B a) (p : x ≡ y)+           → PathP (λ i → B (p i)) (f x) (f y)+      cong f p = λ i → f (p i)++    isContr : ∀ {ℓ} → Set ℓ → Set ℓ+    isContr A = Σ A \ x → (∀ y → x ≡ y)++    fiber : ∀ {ℓ ℓ'} {A : Set ℓ} {B : Set ℓ'} (f : A → B) (y : B) → Set (ℓ ⊔ ℓ')+    fiber {A = A} f y = Σ A \ x → f x ≡ y++open Helpers+++-- We make this a record so that isEquiv can be proved using+-- copatterns. This is good because copatterns don't get unfolded+-- unless a projection is applied so it should be more efficient.+record isEquiv {ℓ ℓ'} {A : Set ℓ} {B : Set ℓ'} (f : A → B) : Set (ℓ ⊔ ℓ') where+  no-eta-equality+  field+    equiv-proof : (y : B) → isContr (fiber f y)++open isEquiv public++infix 4 _≃_+++_≃_ : ∀ {ℓ ℓ'} (A : Set ℓ) (B : Set ℓ') → Set (ℓ ⊔ ℓ')+A ≃ B = Σ (A → B) \ f → (isEquiv f)++equivFun : ∀ {ℓ ℓ'} {A : Set ℓ} {B : Set ℓ'} → A ≃ B → A → B+equivFun e = fst e++-- Improved version of equivProof compared to Lemma 5 in CCHM. We put+-- the (φ = i0) face in contr' making it be definitionally c in this+-- case. This makes the computational behavior better, in particular+-- for transp in Glue.+equivProof : ∀ {la lt} (T : Set la) (A : Set lt) → (w : T ≃ A) → (a : A)+           → ∀ ψ → (Partial ψ (fiber (w .fst) a)) → fiber (w .fst) a+equivProof A B w a ψ fb = contr' {A = fiber (w .fst) a} (w .snd .equiv-proof a) ψ fb+  where+    contr' : ∀ {ℓ} {A : Set ℓ} → isContr A → (φ : I) → (u : Partial φ A) → A+    contr' {A = A} (c , p) φ u = hcomp (λ i → λ { (φ = i1) → p (u 1=1) i+                                                ; (φ = i0) → c }) c+++{-# BUILTIN EQUIV      _≃_        #-}+{-# BUILTIN EQUIVFUN   equivFun   #-}+{-# BUILTIN EQUIVPROOF equivProof #-}++primitive+    primGlue    : ∀ {ℓ ℓ'} (A : Set ℓ) {φ : I}+      → (T : Partial φ (Set ℓ')) → (e : PartialP φ (λ o → T o ≃ A))+      → Set ℓ'+    prim^glue   : ∀ {ℓ ℓ'} {A : Set ℓ} {φ : I}+      → {T : Partial φ (Set ℓ')} → {e : PartialP φ (λ o → T o ≃ A)}+      → (t : PartialP φ T) → (a : A) → primGlue A T e+    prim^unglue : ∀ {ℓ ℓ'} {A : Set ℓ} {φ : I}+      → {T : Partial φ (Set ℓ')} → {e : PartialP φ (λ o → T o ≃ A)}+      → primGlue A T e → A++    -- Needed for transp in Glue.+    primFaceForall : (I → I) → I+++module _ {ℓ : I → Level} (P : (i : I) → Set (ℓ i)) where+  private+    E : (i : I) → Set (ℓ i)+    E  = λ i → P i+    ~E : (i : I) → Set (ℓ (~ i))+    ~E = λ i → P (~ i)++    A = P i0+    B = P i1++    f : A → B+    f x = transp E i0 x++    g : B → A+    g y = transp ~E i0 y++    u : ∀ i → A → E i+    u i x = transp (λ j → E (i ∧ j)) (~ i) x++    v : ∀ i → B → E i+    v i y = transp (λ j → ~E ( ~ i ∧ j)) i y++    fiberPath : (y : B) → (xβ0 xβ1 : fiber f y) → xβ0 ≡ xβ1+    fiberPath y (x0 , β0) (x1 , β1) k = ω , λ j → δ (~ j) where+      module _ (j : I) where+        private+          sys : A → ∀ i → PartialP (~ j ∨ j) (λ _ → E (~ i))+          sys x i (j = i0) = v (~ i) y+          sys x i (j = i1) = u (~ i) x+        ω0 = comp ~E _ (sys x0) ((β0 (~ j)))+        ω1 = comp ~E _ (sys x1) ((β1 (~ j)))+        θ0 = fill ~E (sys x0) (inc (β0 (~ j)))+        θ1 = fill ~E (sys x1) (inc (β1 (~ j)))+      sys = λ {j (k = i0) → ω0 j ; j (k = i1) → ω1 j}+      ω = hcomp sys (g y)+      θ = hfill sys (inc (g y))+      δ = λ (j : I) → comp E _+            (λ i → λ { (j = i0) → v i y ; (k = i0) → θ0 j (~ i)+                     ; (j = i1) → u i ω ; (k = i1) → θ1 j (~ i) })+             (θ j)++    γ : (y : B) → y ≡ f (g y)+    γ y j = comp E _ (λ i → λ { (j = i0) → v i y+                            ; (j = i1) → u i (g y) }) (g y)++  pathToisEquiv : isEquiv f+  pathToisEquiv .equiv-proof y .fst .fst = g y+  pathToisEquiv .equiv-proof y .fst .snd = sym (γ y)+  pathToisEquiv .equiv-proof y .snd = fiberPath y _++  pathToEquiv : A ≃ B+  pathToEquiv .fst = f+  pathToEquiv .snd = pathToisEquiv++{-# BUILTIN PATHTOEQUIV pathToEquiv #-}
+ src/data/lib/prim/Agda/Builtin/Cubical/Id.agda view
@@ -0,0 +1,30 @@+{-# OPTIONS --cubical --safe --no-sized-types --no-guardedness #-}+module Agda.Builtin.Cubical.Id where++  open import Agda.Primitive.Cubical+  open import Agda.Builtin.Cubical.Path+  open import Agda.Builtin.Cubical.Sub renaming (primSubOut to ouc; Sub to _[_↦_])++  postulate+    Id : ∀ {ℓ} {A : Set ℓ} → A → A → Set ℓ++  {-# BUILTIN ID           Id       #-}+  {-# BUILTIN CONID        conid    #-}++  primitive+    primDepIMin : _+    primIdFace : ∀ {ℓ} {A : Set ℓ} {x y : A} → Id x y → I+    primIdPath : ∀ {ℓ} {A : Set ℓ} {x y : A} → Id x y → x ≡ y++  primitive+    primIdJ : ∀ {ℓ ℓ'} {A : Set ℓ} {x : A} (P : ∀ y → Id x y → Set ℓ') →+                P x (conid i1 (λ i → x)) → ∀ {y} (p : Id x y) → P y p+++  primitive+    primIdElim : ∀ {a c} {A : Set a} {x : A}+                   (C : (y : A) → Id x y → Set c) →+                   ((φ : I) (y : A [ φ ↦ (λ _ → x) ])+                    (w : (x ≡ ouc y) [ φ ↦ (λ { (φ = i1) → \ _ → x}) ]) →+                    C (ouc y) (conid φ (ouc w))) →+                   {y : A} (p : Id x y) → C y p
+ src/data/lib/prim/Agda/Builtin/Cubical/Path.agda view
@@ -0,0 +1,18 @@+{-# OPTIONS --cubical --safe --no-sized-types --no-guardedness #-}+module Agda.Builtin.Cubical.Path where++  open import Agda.Primitive.Cubical++  postulate+    PathP : ∀ {ℓ} (A : I → Set ℓ) → A i0 → A i1 → Set ℓ++  {-# BUILTIN PATHP        PathP     #-}++  infix 4 _≡_++  -- We have a variable name in `(λ i → A)` as a hint for case+  -- splitting.+  _≡_ : ∀ {ℓ} {A : Set ℓ} → A → A → Set ℓ+  _≡_ {A = A} = PathP (λ i → A)++  {-# BUILTIN PATH         _≡_     #-}
+ src/data/lib/prim/Agda/Builtin/Cubical/Sub.agda view
@@ -0,0 +1,14 @@+{-# OPTIONS --cubical --safe --no-sized-types --no-guardedness #-}+module Agda.Builtin.Cubical.Sub where++  open import Agda.Primitive.Cubical++  {-# BUILTIN SUB Sub #-}++  postulate+    inc : ∀ {ℓ} {A : Set ℓ} {φ} (x : A) → Sub A φ (λ _ → x)++  {-# BUILTIN SUBIN inc #-}++  primitive+    primSubOut : ∀ {ℓ} {A : Set ℓ} {φ : I} {u : Partial φ A} → Sub _ φ u → A
src/data/lib/prim/Agda/Builtin/Equality.agda view
@@ -1,4 +1,5 @@-{-# OPTIONS --without-K #-}++{-# OPTIONS --without-K --safe --no-sized-types --no-guardedness #-}  module Agda.Builtin.Equality where 
+ src/data/lib/prim/Agda/Builtin/Equality/Erase.agda view
@@ -0,0 +1,7 @@+{-# OPTIONS --with-K --safe --no-sized-types --no-guardedness #-}++module Agda.Builtin.Equality.Erase where++open import Agda.Builtin.Equality++primitive primEraseEquality : ∀ {a} {A : Set a} {x y : A} → x ≡ y → x ≡ y
+ src/data/lib/prim/Agda/Builtin/Equality/Rewrite.agda view
@@ -0,0 +1,7 @@+{-# OPTIONS --without-K --rewriting --no-sized-types --no-guardedness #-}++module Agda.Builtin.Equality.Rewrite where++open import Agda.Builtin.Equality++{-# BUILTIN REWRITE _≡_ #-}
src/data/lib/prim/Agda/Builtin/Float.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-sized-types --no-guardedness #-}  module Agda.Builtin.Float where 
src/data/lib/prim/Agda/Builtin/FromNat.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-sized-types --no-guardedness #-}  module Agda.Builtin.FromNat where 
src/data/lib/prim/Agda/Builtin/FromNeg.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-sized-types --no-guardedness #-}  module Agda.Builtin.FromNeg where 
src/data/lib/prim/Agda/Builtin/FromString.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-sized-types --no-guardedness #-}  module Agda.Builtin.FromString where 
src/data/lib/prim/Agda/Builtin/IO.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-sized-types --no-guardedness #-}  module Agda.Builtin.IO where 
src/data/lib/prim/Agda/Builtin/Int.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-sized-types --no-guardedness #-}  module Agda.Builtin.Int where 
src/data/lib/prim/Agda/Builtin/List.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-sized-types --no-guardedness #-}  module Agda.Builtin.List where 
src/data/lib/prim/Agda/Builtin/Nat.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-universe-polymorphism --no-sized-types --no-guardedness #-}  module Agda.Builtin.Nat where @@ -47,16 +47,87 @@  {-# BUILTIN NATLESS _<_ #-} -div-helper : Nat → Nat → Nat → Nat → Nat+-- Helper function  div-helper  for Euclidean division.+---------------------------------------------------------------------------+--+-- div-helper computes n / 1+m via iteration on n.+--+--   n div (suc m) = div-helper 0 m n m+--+-- The state of the iterator has two accumulator variables:+--+--   k: The quotient, returned once n=0.  Initialized to 0.+--+--   j: A counter, initialized to the divisor m, decreased on each iteration step.+--      Once it reaches 0, the quotient k is increased and j reset to m,+--      starting the next countdown.+--+-- Under the precondition j ≤ m, the invariant is+--+--   div-helper k m n j = k + (n + m - j) div (1 + m)++div-helper : (k m n j : Nat) → Nat div-helper k m  zero    j      = k div-helper k m (suc n)  zero   = div-helper (suc k) m n m-div-helper k m (suc n) (suc j) = div-helper k m n j+div-helper k m (suc n) (suc j) = div-helper k       m n j  {-# BUILTIN NATDIVSUCAUX div-helper #-} -mod-helper : Nat → Nat → Nat → Nat → Nat+-- Proof of the invariant by induction on n.+--+--   clause 1: div-helper k m 0 j+--           = k                                        by definition+--           = k + (0 + m - j) div (1 + m)              since m - j < 1 + m+--+--   clause 2: div-helper k m (1 + n) 0+--           = div-helper (1 + k) m n m                 by definition+--           = 1 + k + (n + m - m) div (1 + m)          by induction hypothesis+--           = 1 + k +          n  div (1 + m)          by simplification+--           = k +   (n + (1 + m)) div (1 + m)          by expansion+--           = k + (1 + n + m - 0) div (1 + m)          by expansion+--+--   clause 3: div-helper k m (1 + n) (1 + j)+--           = div-helper k m n j                       by definition+--           = k + (n + m - j) div (1 + m)              by induction hypothesis+--           = k + ((1 + n) + m - (1 + j)) div (1 + m)  by expansion+--+-- Q.e.d.++-- Helper function  mod-helper  for the remainder computation.+---------------------------------------------------------------------------+--+-- (Analogous to div-helper.)+--+-- mod-helper computes n % 1+m via iteration on n.+--+--   n mod (suc m) = mod-helper 0 m n m+--+-- The invariant is:+--+--   m = k + j  ==>  mod-helper k m n j = (n + k) mod (1 + m).++mod-helper : (k m n j : Nat) → Nat mod-helper k m  zero    j      = k-mod-helper k m (suc n)  zero   = mod-helper 0 m n m+mod-helper k m (suc n)  zero   = mod-helper 0       m n m mod-helper k m (suc n) (suc j) = mod-helper (suc k) m n j  {-# BUILTIN NATMODSUCAUX mod-helper #-}++-- Proof of the invariant by induction on n.+--+--   clause 1: mod-helper k m 0 j+--           = k                               by definition+--           = (0 + k) mod (1 + m)             since m = k + j, thus k < m+--+--   clause 2: mod-helper k m (1 + n) 0+--           = mod-helper 0 m n m              by definition+--           = (n + 0)       mod (1 + m)       by induction hypothesis+--           = (n + (1 + m)) mod (1 + m)       by expansion+--           = (1 + n) + k)  mod (1 + m)       since k = m (as l = 0)+--+--   clause 3: mod-helper k m (1 + n) (1 + j)+--           = mod-helper (1 + k) m n j        by definition+--           = (n + (1 + k)) mod (1 + m)       by induction hypothesis+--           = ((1 + n) + k) mod (1 + m)       by commutativity+--+-- Q.e.d.
src/data/lib/prim/Agda/Builtin/Reflection.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-sized-types --no-guardedness #-}  module Agda.Builtin.Reflection where @@ -11,6 +11,7 @@ open import Agda.Builtin.Char open import Agda.Builtin.Float open import Agda.Builtin.Int+open import Agda.Builtin.Sigma  -- Names -- @@ -271,6 +272,15 @@   -- on (with the -v flag to Agda).   debugPrint : String → Nat → List ErrorPart → TC ⊤ +  -- Fail if the given computation gives rise to new, unsolved+  -- "blocking" constraints.+  noConstraints : ∀ {a} {A : Set a} → TC A → TC A++  -- Run the given TC action and return the first component. Resets to+  -- the old TC state if the second component is 'false', or keep the+  -- new TC state if it is 'true'.+  runSpeculative : ∀ {a} {A : Set a} → TC (Σ A λ _ → Bool) → TC A+ {-# BUILTIN AGDATCM              TC            #-} {-# BUILTIN AGDATCMRETURN        returnTC      #-} {-# BUILTIN AGDATCMBIND          bindTC        #-}@@ -297,3 +307,5 @@ {-# BUILTIN AGDATCMISMACRO       isMacro       #-} {-# BUILTIN AGDATCMWITHNORMALISATION withNormalisation #-} {-# BUILTIN AGDATCMDEBUGPRINT    debugPrint    #-}+{-# BUILTIN AGDATCMNOCONSTRAINTS noConstraints #-}+{-# BUILTIN AGDATCMRUNSPECULATIVE runSpeculative #-}
src/data/lib/prim/Agda/Builtin/Sigma.agda view
@@ -1,3 +1,5 @@+{-# OPTIONS --without-K --safe --no-sized-types --no-guardedness #-}+ module Agda.Builtin.Sigma where  open import Agda.Primitive@@ -11,3 +13,5 @@ open Σ public  infixr 4 _,_++{-# BUILTIN SIGMA Σ #-}
src/data/lib/prim/Agda/Builtin/Size.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-universe-polymorphism --sized-types --no-guardedness #-}  module Agda.Builtin.Size where 
src/data/lib/prim/Agda/Builtin/Strict.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-sized-types --no-guardedness #-}  module Agda.Builtin.Strict where 
src/data/lib/prim/Agda/Builtin/String.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-sized-types --no-guardedness #-}  module Agda.Builtin.String where 
+ src/data/lib/prim/Agda/Builtin/String/Properties.agda view
@@ -0,0 +1,10 @@+{-# OPTIONS --without-K --safe --no-sized-types --no-guardedness #-}++module Agda.Builtin.String.Properties where++open import Agda.Builtin.String+open import Agda.Builtin.Equality++primitive++  primStringToListInjective : ∀ a b → primStringToList a ≡ primStringToList b → a ≡ b
src/data/lib/prim/Agda/Builtin/TrustMe.agda view
@@ -1,7 +1,14 @@-{-# OPTIONS --without-K #-}-+{-# OPTIONS --no-sized-types --no-guardedness #-} module Agda.Builtin.TrustMe where  open import Agda.Builtin.Equality+open import Agda.Builtin.Equality.Erase -primitive primTrustMe : ∀ {a} {A : Set a} {x y : A} → x ≡ y+private+  postulate+    unsafePrimTrustMe : ∀ {a} {A : Set a} {x y : A} → x ≡ y++primTrustMe : ∀ {a} {A : Set a} {x y : A} → x ≡ y+primTrustMe = primEraseEquality unsafePrimTrustMe++{-# DISPLAY primEraseEquality unsafePrimTrustMe = primTrustMe #-}
src/data/lib/prim/Agda/Builtin/Unit.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-universe-polymorphism --no-sized-types --no-guardedness #-}  module Agda.Builtin.Unit where 
src/data/lib/prim/Agda/Builtin/Word.agda view
@@ -1,4 +1,4 @@-{-# OPTIONS --without-K #-}+{-# OPTIONS --without-K --safe --no-universe-polymorphism --no-sized-types --no-guardedness #-}  module Agda.Builtin.Word where 
src/data/lib/prim/Agda/Primitive.agda view
@@ -30,3 +30,5 @@ {-# BUILTIN LEVELZERO lzero #-} {-# BUILTIN LEVELSUC  lsuc  #-} {-# BUILTIN LEVELMAX  _⊔_   #-}++{-# BUILTIN SETOMEGA Setω #-}
+ src/data/lib/prim/Agda/Primitive/Cubical.agda view
@@ -0,0 +1,53 @@+{-# OPTIONS --cubical #-}++module Agda.Primitive.Cubical where++{-# BUILTIN INTERVAL I  #-}  -- I : Setω++{-# BUILTIN IZERO    i0 #-}+{-# BUILTIN IONE     i1 #-}++infix  30 primINeg+infixr 20 primIMin primIMax++primitive+    primIMin : I → I → I+    primIMax : I → I → I+    primINeg : I → I++{-# BUILTIN ISONE    IsOne    #-}  -- IsOne : I → Setω++postulate+  itIsOne : IsOne i1+  IsOne1  : ∀ i j → IsOne i → IsOne (primIMax i j)+  IsOne2  : ∀ i j → IsOne j → IsOne (primIMax i j)++{-# BUILTIN ITISONE  itIsOne  #-}+{-# BUILTIN ISONE1   IsOne1   #-}+{-# BUILTIN ISONE2   IsOne2   #-}++-- Partial : ∀{ℓ} (i : I) (A : Set ℓ) → Set ℓ+-- Partial i A = IsOne i → A++{-# BUILTIN PARTIAL  Partial  #-}+{-# BUILTIN PARTIALP PartialP #-}++postulate+  isOneEmpty : ∀ {ℓ} {A : Partial i0 (Set ℓ)} → PartialP i0 A++{-# BUILTIN ISONEEMPTY isOneEmpty #-}++primitive+  primPOr : ∀ {ℓ} (i j : I) {A : Partial (primIMax i j) (Set ℓ)}+            → (u : PartialP i (λ z → A (IsOne1 i j z)))+            → (v : PartialP j (λ z → A (IsOne2 i j z)))+            → PartialP (primIMax i j) A++  -- Computes in terms of primHComp and primTransp+  primComp : ∀ {ℓ} (A : (i : I) → Set (ℓ i)) (φ : I) (u : ∀ i → Partial φ (A i)) (a : A i0) → A i1++syntax primPOr p q u t = [ p ↦ u , q ↦ t ]++primitive+  primTransp : ∀ {ℓ} (A : (i : I) → Set (ℓ i)) (φ : I) (a : A i0) → A i1+  primHComp  : ∀ {ℓ} {A : Set ℓ} {φ : I} (u : ∀ i → Partial φ A) (a : A) → A
src/data/postprocess-latex.pl view
@@ -16,7 +16,7 @@      my $arg = $3;      my $tag = "$tag_prefix-$3" =~ s/\\_/$underscore/gr; -     $_ = "\n%<*$tag>\n$cmd\{$arg\}\n%</$tag>\n";+     $_ = "%\n%<*$tag>\n$cmd\{$arg\}%\n%</$tag>\n";    |gxe;    print;
src/full/Agda/Auto/Auto.hs view
@@ -24,6 +24,7 @@ import Agda.Syntax.Common (Hiding(..)) import qualified Agda.Syntax.Abstract as A import Agda.Syntax.Abstract.Pretty (prettyA)+import qualified Agda.Syntax.Concrete.Name as C import qualified Text.PrettyPrint as PP import qualified Agda.TypeChecking.Pretty as TCM import Agda.Syntax.Position@@ -35,6 +36,7 @@ import Agda.Syntax.Common import qualified Agda.Syntax.Scope.Base as Scope import Agda.Syntax.Scope.Monad (withCurrentModule)+import Agda.Syntax.Concrete.Name (NameInScope(..), LensInScope(..)) import qualified Agda.Syntax.Abstract.Name as AN import qualified Agda.TypeChecking.Monad.Base as TCM import Agda.TypeChecking.EtaContract (etaContract)@@ -55,6 +57,7 @@ import Agda.Utils.Lens import Agda.Utils.Maybe import Agda.Utils.Null+import Agda.Utils.Pretty ( prettyShow ) import Agda.Utils.Tuple  #include "undefined.h"@@ -104,12 +107,14 @@ --   If the @autoMessage@ part of the result is set to @Just msg@, the --   message @msg@ produced by Agsy should be displayed to the user. +{-# SPECIALIZE auto :: InteractionId -> Range -> String -> TCM AutoResult #-} auto-  :: InteractionId+  :: MonadTCM tcm+  => InteractionId   -> Range   -> String-  -> TCM AutoResult-auto ii rng argstr = do+  -> tcm AutoResult+auto ii rng argstr = liftTCM $ do    -- Parse hints and other configuration.   let autoOptions = parseArgs argstr@@ -175,7 +180,7 @@         ticks <- liftIO $ newIORef 0          let exsearch initprop recinfo defdfv =-             liftIO $ System.Timeout.timeout (getTimeOut timeout * 1000000)+             liftIO $ System.Timeout.timeout (getTimeOut timeout * 1000)                     $ loop 0              where                loop d = do@@ -233,7 +238,7 @@                     mv <- lookupMeta mi                     withMetaInfo (getMetaInfo mv) $ do                       (mi,) <$> abstractToConcrete_ e-                  let ss = dropWhile (== ' ') . dropWhile (/= ' ') . show+                  let ss = dropWhile (== ' ') . dropWhile (/= ' ') . prettyShow                       disp [(_, cexpr)] = ss cexpr                       disp cexprs = concat $ map (\ (mi, cexpr) -> ss cexpr ++ " ") cexprs                   ticks <- liftIO $ readIORef ticks@@ -274,7 +279,7 @@                  ) eqcons           res <- exsearch initprop recinfo defdfv           riis <- map swap <$> getInteractionIdsAndMetas-          let timeoutString | isNothing res = " after timeout (" ++ show timeout ++ "s)"+          let timeoutString | isNothing res = " after timeout (" ++ show timeout ++ "ms)"                             | otherwise     = ""           if listmode then do             rsols <- liftM reverse $ liftIO $ readIORef sols@@ -290,10 +295,10 @@                   withMetaInfo (getMetaInfo mv) $ do                     e' <- abstractToConcrete_ e                     return (mi, e')-              let disp [(_, cexpr)] = show cexpr+              let disp [(_, cexpr)] = prettyShow cexpr                   disp cexprs = concat $ for cexprs $ \ (mi, cexpr) ->                     maybe (show mi) show (lookup mi riis)-                      ++ " := " ++ show cexpr ++ " "+                      ++ " := " ++ prettyShow cexpr ++ " "               ticks <- liftIO $ readIORef ticks               stopWithMsg $ "Listing solution(s) " ++ show pick ++ "-" ++ show (pick + length rsols - 1) ++ timeoutString ++                         "\n" ++ unlines (map (\(x, y) -> show y ++ "  " ++ disp x) $ zip cexprss [pick..])@@ -322,7 +327,7 @@                     -- On exception, try next solution                     flip catchError (const $ loop terms') $ do                       exprs <- getsols term-                      reportSDoc "auto" 20 $ TCM.text "Trying solution " TCM.<+> TCM.prettyTCM exprs+                      reportSDoc "auto" 20 $ "Trying solution " TCM.<+> TCM.prettyTCM exprs                       giveress <- forM exprs $ \ (mi, expr0) -> do                         let expr = killRange expr0                         case lookup mi riis of@@ -336,7 +341,7 @@                                         let scope = getMetaScope mv                                         ce <- abstractToConcreteScope scope ae                                         let cmnt = if ii' == ii then agsyinfo ticks else ""-                                        return (Just (ii', show ce ++ cmnt), Nothing)+                                        return (Just (ii', prettyShow ce ++ cmnt), Nothing)                            -- Andreas, 2015-05-17, Issue 1504                            -- When Agsy produces an ill-typed solution, return nothing.                            -- TODO: try other solution.@@ -363,7 +368,7 @@           let [rectyp'] = mymrectyp           defdfv <- getdfv mi def           myrecdef <- liftIO $ newIORef $ ConstDef {cdname = "", cdorigin = (Nothing, def), cdtype = rectyp', cdcont = Postulate, cddeffreevars = defdfv}-          sols <- liftIO $ System.Timeout.timeout (getTimeOut timeout * 1000000) (+          sols <- liftIO $ System.Timeout.timeout (getTimeOut timeout * 1000) (              let r d = do                   sols <- liftIO $ caseSplitSearch ticks __IMPOSSIBLE__ myhints meqr __IMPOSSIBLE__ d myrecdef ctx mytype pats                   case sols of@@ -414,15 +419,15 @@            Just (def, _, _) | def == n -> return Nothing            _ -> do             cn <- withMetaInfo minfo $ runAbsToCon $ toConcrete n-            if head (show cn) == '.' then -- not in scope+            if C.isInScope cn == C.NotInScope then               return Nothing-             else do+            else do               c <- getConstInfo n               ctyp <- normalise $ defType c               cdfv <- withMetaInfo minfo $ getDefFreeVars n               return $ case matchType cdfv tctx ctyp targettyp of                Nothing -> Nothing-               Just score -> Just (show cn, score)+               Just score -> Just (prettyShow cn, score)          ) alldefs        else do         let scopeinfo = clScope (getMetaInfo mv)@@ -438,7 +443,7 @@           cdfv <- withMetaInfo minfo $ getDefFreeVars n           return $ case matchType cdfv tctx ctyp targettyp of            Nothing -> Nothing-           Just score -> Just (show cn, score)+           Just score -> Just (prettyShow cn, score)          ) modnames        let sorthits = List.sortBy (\(_, (pa1, pb1)) (_, (pa2, pb2)) -> case compare pa2 pa1 of {EQ -> compare pb1 pb2; o -> o}) hits
src/full/Agda/Auto/Convert.hs view
@@ -15,6 +15,7 @@ import qualified Agda.Syntax.Internal as I import qualified Agda.Syntax.Internal.Pattern as IP import qualified Agda.Syntax.Common as Cm+import Agda.Syntax.Common (Dom(..),domInfo,unDom) import qualified Agda.Syntax.Abstract.Name as AN import qualified Agda.Syntax.Abstract as A import qualified Agda.Syntax.Position as SP@@ -35,7 +36,7 @@ import Agda.TypeChecking.Free as Free (freeIn) import Agda.TypeChecking.Errors ( stringTCErr ) -import Agda.Interaction.MakeCase (getClauseForIP)+import Agda.Interaction.MakeCase (getClauseZipperForIP)  import Agda.Auto.NarrowingSearch import Agda.Auto.Syntax hiding (getConst)@@ -115,6 +116,8 @@            return (Def narg clauses' Nothing Nothing, [])      (cont, projfcns2) <- case defn of       MB.Axiom {} -> return (Postulate, [])+      MB.DataOrRecSig{} -> return (Postulate, [])+      MB.GeneralizableVar{} -> __IMPOSSIBLE__       MB.AbstractDefn{} -> return (Postulate, [])       MB.Function {MB.funClauses = clauses} -> clausesToDef clauses       -- MB.Primitive {MB.primClauses = []} -> throwError $ strMsg "Auto: Primitive functions are not supported" -- Andreas, 2013-06-17 breaks interaction/AutoMisc@@ -298,6 +301,10 @@ literalsNotImplemented = MB.typeError $ MB.NotImplemented $   "The Agda synthesizer (Agsy) does not support literals yet" +hitsNotImplemented :: MB.TCM a+hitsNotImplemented = MB.typeError $ MB.NotImplemented $+  "The Agda synthesizer (Agsy) does not support HITs yet"+ class Conversion m a b where   convert :: a -> m b @@ -322,6 +329,7 @@  instance Conversion TOM (Cm.Arg I.Pattern) (Pat O) where   convert p = case Cm.unArg p of+    I.IApplyP _ _ _ n  -> return $ PatVar (show n)     I.VarP _ n  -> return $ PatVar (show n)     I.DotP _ _  -> return $ PatVar "_"       -- because Agda includes these when referring to variables in the body@@ -337,6 +345,7 @@     -- UNSUPPORTED CASES     I.ProjP{}   -> lift copatternsNotImplemented     I.LitP _    -> lift literalsNotImplemented+    I.DefP{}    -> lift hitsNotImplemented  instance Conversion TOM I.Type (MExp O) where   convert (I.El _ t) = convert t -- sort info is thrown away@@ -379,6 +388,7 @@         return $ NotM $ Pi Nothing (getHiding info) (Free.freeIn 0 y) x' (Abs (Id name) y')       I.Sort (I.Type (I.Max [I.ClosedLevel l])) -> return $ NotM $ Sort $ Set $ fromIntegral l       I.Sort _ -> return $ NotM $ Sort UnknownSort+      I.Dummy{}-> return $ NotM $ Sort UnknownSort       t@I.MetaV{} -> do         t <- lift $ instantiate t         case t of@@ -422,6 +432,7 @@ fmExp m (I.Sort _) = False fmExp m (I.MetaV mid _) = mid == m fmExp m (I.DontCare _) = False+fmExp _ I.Dummy{} = False  fmExps :: I.MetaId -> I.Args -> Bool fmExps m [] = False@@ -488,7 +499,10 @@                          Nothing -> (0, \ f vs -> I.Def f vs)       frommyExps ndrop as (h name [])     Lam hid t -> I.Lam (icnvh hid) <$> convert t-    Pi _ hid _ x y -> I.Pi . Cm.Dom (icnvh hid) <$> convert x <*> convert y+    Pi _ hid _ x y -> do+      x' <- convert x+      let dom = (Cm.defaultDom x') {domInfo = icnvh hid}+      I.Pi dom <$> convert y    -- maybe have case for Pi where possdep is False which produces Fun (and has to unweaken y), return $ I.Fun (Cm.Arg (icnvh hid) x') y'     Sort (Set l) -> return $ I.Sort (I.mkType (fromIntegral l))     Sort Type -> __IMPOSSIBLE__@@ -540,9 +554,10 @@  where   f (A.App i e1 (Cm.Arg info (Cm.Named n e2))) =         A.App i (f e1) (Cm.Arg info (Cm.Named n (f e2)))-  f (A.Lam i (A.DomainFree info (A.BindName n)) _)-     | prettyShow (A.nameConcrete n) == abslamvarname =-        A.AbsurdLam i $ Cm.argInfoHiding info+  f (A.Lam i (A.DomainFree x) _)+     | A.BindName n <- Cm.namedArg x+     , prettyShow (A.nameConcrete n) == abslamvarname =+        A.AbsurdLam i $ Cm.getHiding x   f (A.Lam i b e) = A.Lam i b (f e)   f (A.Rec i xs) = A.Rec i (map (mapLeft (over exprFieldA f)) xs)   f (A.RecUpdate i e xs) = A.RecUpdate i (f e) (map (over exprFieldA f) xs)@@ -568,6 +583,7 @@       let hid = getHiding $ Cm.argInfo p       in case Cm.namedArg p of        I.VarP _ n -> return ((hid, Id n) : ns, HI hid (CSPatVar $ length ns))+       I.IApplyP _ _ _ n -> return ((hid, Id n) : ns, HI hid (CSPatVar $ length ns))        I.ConP con _ ps -> do         let c = I.conName con         (c2, _) <- runStateT (getConst True c TMAll) (S {sConsts = (cmap, []), sMetas = initMapS, sEqs = initMapS, sCurMeta = Nothing, sMainMeta = mainm})@@ -580,6 +596,8 @@         return (ns, HI hid (CSPatExp t2))        I.ProjP{} -> copatternsNotImplemented        I.LitP{} -> literalsNotImplemented+       I.DefP{} -> hitsNotImplemented+  (names, pats) <- cnvps [] (IP.unnumberPatVars $ I.namedClausePats clause)  return (reverse names, pats) @@ -591,7 +609,8 @@       let Id id = mid       tel <- ctel ctx       t' <- convert t-      return $ I.ExtendTel (Cm.Dom (icnvh hid) t') (I.Abs id tel)+      let dom = (Cm.defaultDom t') {domInfo = icnvh hid}+      return $ I.ExtendTel dom (I.Abs id tel)  tel <- ctel $ reverse ids  let getperms 0 [] perm nv = return (perm, nv)      getperms n [] _ _ = __IMPOSSIBLE__@@ -706,7 +725,7 @@   case ipCl of     MB.IPNoClause -> return Nothing     MB.IPClause f clauseNo _ -> do-      (_, c, _) <- getClauseForIP f clauseNo+      (_, (_, c, _)) <- getClauseZipperForIP f clauseNo       return $ Just (f, c, maybe __IMPOSSIBLE__ toplevel $ I.clauseBody c)   where     toplevel e =
src/full/Agda/Auto/Options.hs view
@@ -1,5 +1,6 @@ module Agda.Auto.Options where +import Data.Char import Control.Monad.State import Agda.Utils.Lens @@ -15,7 +16,7 @@  type Hints = [String] -newtype TimeOut = TimeOut { getTimeOut :: Int }+newtype TimeOut = TimeOut { getTimeOut :: Int } -- in ms  instance Show TimeOut where   show = show . getTimeOut@@ -33,7 +34,7 @@ initAutoOptions :: AutoOptions initAutoOptions = AutoOptions   { autoHints    = []-  , autoTimeOut  = TimeOut 1+  , autoTimeOut  = TimeOut 1000   , autoPick     = 0   , autoMode     = MNormal False False   , autoHintMode = AHMNone@@ -68,11 +69,11 @@  data AutoToken =     M | C | R | D | L-  | T Int | S Int | H String+  | T String | S Int | H String  autoTokens :: [String] -> [AutoToken] autoTokens []              = []-autoTokens ("-t" : t : ws) = T (read t) : autoTokens ws+autoTokens ("-t" : t : ws) = T t        : autoTokens ws autoTokens ("-s" : s : ws) = S (read s) : autoTokens ws autoTokens ("-l"     : ws) = L          : autoTokens ws autoTokens ("-d"     : ws) = D          : autoTokens ws@@ -81,6 +82,19 @@ autoTokens ("-r"     : ws) = R          : autoTokens ws autoTokens (h        : ws) = H h        : autoTokens ws +parseTime :: String -> Int+parseTime [] = 0+parseTime xs = read ds * modifier + parseTime r where+  (ds , modr) = span isDigit xs+  (mod , r)   = span (not . isDigit) modr++  modifier = case mod of+    "ms" -> 1+    "cs" -> 10+    "ds" -> 100+    "s"  -> 1000+    _    -> 1000+ parseArgs :: String -> AutoOptions parseArgs s = mapM_ step (autoTokens $ words s)               `execState` initAutoOptions where@@ -90,7 +104,7 @@   step C     = aoMode     .= MCaseSplit   step R     = aoPick     .= (-1)             >> aoMode     .= MRefine False-  step (T t) = aoTimeOut  .= TimeOut t+  step (T t) = aoTimeOut  .= TimeOut (parseTime t)   step (S p) = aoPick     .= p   step (H h) = aoHints    %= (h :)   step D     = do
src/full/Agda/Auto/Typecheck.hs view
@@ -370,7 +370,7 @@      Left (Left hnas) -> mbret $ Left $ Left (hna : hnas)    Left (Right blks) -> mbret $ Left (Right blks)    Left (Left hna) -> mbret $ Left $ Left (hna : as')- dopats _ _ = __IMPOSSIBLE__+ dopats _ _ = mbfailed "bad patterns"   dopat :: Pat o -> PEval o -> EE (MyMB (Either (Either (PEval o) (HNNBlks o)) (PEval o, [ICExp o])) o)  dopat (PatConApp c pas) a =
src/full/Agda/Benchmarking.hs view
@@ -86,6 +86,10 @@     -- ^ Subphase for 'Typing': checking the RHS   | TypeSig     -- ^ Subphase for 'Typing': checking a type signature+  | Generalize+    -- ^ Subphase for 'Typing': generalizing over `variable`s+  | InstanceSearch+    -- ^ Subphase for 'Typing': solving instance goals   | UnifyIndices     -- ^ Subphase for 'CheckLHS': unification of the indices   | InverseScopeLookup
src/full/Agda/Compiler/Backend.hs view
@@ -92,7 +92,7 @@  callBackend :: String -> IsMain -> Interface -> TCM () callBackend name iMain i = do-  backends <- use stBackends+  backends <- useTC stBackends   case [ b | b@(Backend b') <- backends, backendName b' == name ] of     Backend b : _ -> compilerMain b iMain i     []            -> genericError $@@ -129,18 +129,19 @@ embedOpt :: Lens' a b -> OptDescr (Flag a) -> OptDescr (Flag b) embedOpt l = fmap (embedFlag l) -parseBackendOptions :: [Backend] -> [String] -> OptM ([Backend], CommandLineOptions)-parseBackendOptions backends argv =+parseBackendOptions :: [Backend] -> [String] -> CommandLineOptions -> OptM ([Backend], CommandLineOptions)+parseBackendOptions backends argv opts0 =   case makeAll backendWithOpts backends of     Some bs -> do-      let agdaFlags    = map (embedOpt lSnd) standardOptions+      let agdaFlags    = map (embedOpt lSnd) (deadStandardOptions ++ standardOptions)           backendFlags = do             Some i            <- forgetAll Some $ allIndices bs             BackendWithOpts b <- [lookupIndex bs i]             opt               <- commandLineFlags b             return $ embedOpt (lFst . lIndex i . bOptions) opt-      (backends, opts) <- getOptSimple argv (agdaFlags ++ backendFlags) (embedFlag lSnd . inputFlag)-                                            (bs, defaultOptions)+      (backends, opts) <- getOptSimple (stripRTS argv)+                                       (agdaFlags ++ backendFlags) (embedFlag lSnd . inputFlag)+                                       (bs, opts0)       opts <- checkOpts opts       return (forgetAll forgetOpts backends, opts) @@ -152,10 +153,11 @@       err flag = genericError $ "Cannot mix --" ++ flag ++ " and backends (" ++ List.intercalate ", " backendNames ++ ")"   when (optInteractive     opts) $ err "interactive"   when (optGHCiInteraction opts) $ err "interaction"+  when (optJSONInteraction opts) $ err "interaction-json"   mi     <- check    -- reset warnings-  stTCWarnings .= []+  stTCWarnings `setTCLens` []    noMain <- optCompileNoMain <$> pragmaOptions   let isMain | noMain    = NotMain
src/full/Agda/Compiler/Common.hs view
@@ -78,15 +78,15 @@  setInterface :: Interface -> TCM () setInterface i = do-  opts <- gets (stPersistentOptions . stPersistentState)+  opts <- getsTC (stPersistentOptions . stPersistentState)   setCommandLineOptions opts   mapM_ setOptionsFromPragma (iPragmaOptions i)-  stImportedModules .= Set.fromList (map fst $ iImportedModules i)-  stCurrentModule   .= Just (iModuleName i)+  stImportedModules `setTCLens` Set.fromList (map fst $ iImportedModules i)+  stCurrentModule   `setTCLens` Just (iModuleName i)  curIF :: TCM Interface curIF = do-  mName <- use stCurrentModule+  mName <- useTC stCurrentModule   case mName of     Nothing   -> __IMPOSSIBLE__     Just name -> do@@ -103,7 +103,7 @@ curMName = sigMName <$> curSig  curDefs :: TCM Definitions-curDefs = (^. sigDefinitions) <$> curSig+curDefs = fmap (HMap.filter (not . defNoCompilation)) $ (^. sigDefinitions) <$> curSig  sortDefs :: Definitions -> [(QName, Definition)] sortDefs defs =@@ -157,7 +157,7 @@     -- Compute the output directory. Note: using commandLineOptions would make     -- the current pragma options persistent when we setCommandLineOptions     -- below.-    opts <- gets $ stPersistentOptions . stPersistentState+    opts <- getsTC $ stPersistentOptions . stPersistentState     compileDir <- case optCompileDir opts of       Just dir -> return dir       Nothing  -> do@@ -173,14 +173,14 @@     -- just a list of strings, thus, the solution is a bit of hack:     -- We match on whether @["--no-main"]@ is one of the stored options.     when (["--no-main"] `elem` iPragmaOptions mainI) $-      stPragmaOptions %= \ o -> o { optCompileNoMain = True }+      stPragmaOptions `modifyTCLens` \ o -> o { optCompileNoMain = True }      setScope (iInsideScope mainI) -- so that compiler errors don't use overly qualified names     ignoreAbstractMode $ do       cont   -- keep generated warnings   let newWarnings = stPostTCWarnings $  stPostScopeState $ s-  stTCWarnings .= newWarnings+  stTCWarnings `setTCLens` newWarnings   return a  topLevelModuleName :: ModuleName -> TCM ModuleName
src/full/Agda/Compiler/JS/Compiler.hs view
@@ -263,7 +263,7 @@  definition :: Maybe CoinductionKit -> (QName,Definition) -> TCM (Maybe Export) definition kit (q,d) = do-  reportSDoc "compile.js" 10 $ text "compiling def:" <+> prettyTCM q+  reportSDoc "compile.js" 10 $ "compiling def:" <+> prettyTCM q   (_,ls) <- global q   d <- instantiateFull d @@ -275,8 +275,8 @@   caseMaybeM (getUniqueCompilerPragma jsBackendName q) (return ()) $ \ (CompilerPragma r s) ->   setCurrentRange r $ case words s of     "=" : _ -> return ()-    _       -> genericDocError $ P.sep [ P.text "Badly formed COMPILE JS pragma. Expected",-                                         P.text "{-# COMPILE JS <name> = <js> #-}" ]+    _       -> genericDocError $ P.sep [ "Badly formed COMPILE JS pragma. Expected",+                                         "{-# COMPILE JS <name> = <js> #-}" ]  defJSDef :: Definition -> Maybe String defJSDef def =@@ -297,20 +297,24 @@     Function{} | Just q == (nameOfFlat <$> kit) -> do       ret $ Lambda 1 $ Apply (Lookup (local 0) flatName) [] +    DataOrRecSig{} -> __IMPOSSIBLE__+     Axiom | Just e <- defJSDef d -> plainJS e     Axiom | otherwise -> ret Undefined +    GeneralizableVar{} -> return Nothing+     Function{} | Just e <- defJSDef d -> plainJS e     Function{} | otherwise -> do -      reportSDoc "compile.js" 5 $ text "compiling fun:" <+> prettyTCM q-      caseMaybeM (toTreeless q) (pure Nothing) $ \ treeless -> do+      reportSDoc "compile.js" 5 $ "compiling fun:" <+> prettyTCM q+      caseMaybeM (toTreeless T.EagerEvaluation q) (pure Nothing) $ \ treeless -> do         funBody <- eliminateCaseDefaults =<<           eliminateLiteralPatterns           (convertGuards treeless)-        reportSDoc "compile.js" 30 $ text " compiled treeless fun:" <+> pretty funBody+        reportSDoc "compile.js" 30 $ " compiled treeless fun:" <+> pretty funBody         funBody' <- compileTerm funBody-        reportSDoc "compile.js" 30 $ text " compiled JS fun:" <+> (text . show) funBody'+        reportSDoc "compile.js" 30 $ " compiled JS fun:" <+> (text . show) funBody'         return $ Just $ Export ls funBody'      Primitive{primName = p} | p `Set.member` primitives ->
src/full/Agda/Compiler/JS/Pretty.hs view
@@ -132,4 +132,4 @@ isValidJSIdent s = matchTest regex s   where     regex :: Regex-    regex = makeRegex "^[a-zA-Z_$][0-9a-zA-Z_$]*$"+    regex = makeRegex ("^[a-zA-Z_$][0-9a-zA-Z_$]*$" :: String)
src/full/Agda/Compiler/MAlonzo/Compiler.hs view
@@ -166,7 +166,7 @@       m   <- show . A.mnameToConcrete <$> curMName       out <- outFile_       reportSLn "compile.ghc" 1 $ repl [m, ifile, out] "Compiling <<0>> in <<1>> to <<2>>"-      stImportedModules .= Set.empty  -- we use stImportedModules to accumulate the required Haskell imports+      stImportedModules `setTCLens` Set.empty  -- we use stImportedModules to accumulate the required Haskell imports       return (Recompile ())  ghcPostModule :: GHCOptions -> GHCModuleEnv -> IsMain -> ModuleName -> [[HS.Decl]] -> TCM IsMain@@ -215,7 +215,7 @@   decl m = HS.ImportDecl m True Nothing    mnames :: TCM [ModuleName]-  mnames = Set.elems <$> use stImportedModules+  mnames = Set.elems <$> useTC stImportedModules    uniq :: [HS.ModuleName] -> [HS.ModuleName]   uniq = List.map head . List.group . List.sort@@ -229,13 +229,13 @@ {- Andreas, 2012-10-02: Invariant no longer holds definition kit (Defn NonStrict _ _  _ _ _ _ _ _) = __IMPOSSIBLE__ -}-definition env Defn{defArgInfo = info, defName = q} | isIrrelevant info = do+definition env Defn{defArgInfo = info, defName = q} | not $ usableModality info = do   reportSDoc "compile.ghc.definition" 10 $-    text "Not compiling" <+> prettyTCM q <> text "."+    "Not compiling" <+> prettyTCM q <> "."   return [] definition env Defn{defName = q, defType = ty, theDef = d} = do   reportSDoc "compile.ghc.definition" 10 $ vcat-    [ text "Compiling" <+> prettyTCM q <> text ":"+    [ "Compiling" <+> prettyTCM q <> ":"     , nest 2 $ text (show d)     ]   pragma <- getHaskellPragma q@@ -303,6 +303,8 @@                  , sharpC                  ] +      DataOrRecSig{} -> __IMPOSSIBLE__+       Axiom{} -> do         ar <- typeArity ty         return $ [ compiledTypeSynonym q ty ar | Just (HsType r ty) <- [pragma] ] ++@@ -324,6 +326,7 @@         cds <- mapM (flip condecl ind) cs         return $ tvaldecl q ind (np + ni) cds cl       Constructor{} -> return []+      GeneralizableVar{} -> return []       Record{ recPars = np, recClause = cl, recConHead = con,               recInduction = ind } ->         let -- Non-recursive record types are treated as being@@ -363,7 +366,7 @@       _ -> return ccls    functionViaTreeless :: QName -> TCM [HS.Decl]-  functionViaTreeless q = caseMaybeM (toTreeless q) (pure []) $ \ treeless -> do+  functionViaTreeless q = caseMaybeM (toTreeless LazyEvaluation q) (pure []) $ \ treeless -> do      used <- getCompiledArgUse q     let dostrip = any not used@@ -485,9 +488,7 @@         return $ HS.Alt pat (HS.UnGuardedRhs $ HS.unit_con) emptyBinds    cs <- zipWithM makeClause cs hsCons-  let rhs = case cs of-              [] -> fakeExp "()" -- There is no empty case statement in Haskell-              _  -> HS.Case (HS.Var $ HS.UnQual $ HS.Ident "x") cs+  let rhs = HS.Case (HS.Var $ HS.UnQual $ HS.Ident "x") cs    return [ HS.TypeSig [unqhname "cover" q] $ fakeType $ unwords (ty : tvs) ++ " -> ()"          , HS.FunBind [HS.Match (unqhname "cover" q) [HS.PVar $ HS.Ident "x"]@@ -783,6 +784,7 @@   where   p = HS.LanguagePragma $ List.map HS.Ident $         [ "EmptyDataDecls"+        , "EmptyCase"         , "ExistentialQuantification"         , "ScopedTypeVariables"         , "NoMonomorphismRestriction"@@ -825,7 +827,7 @@    -- Warn if no main function and not --no-main   when (modIsMain /= isMain) $-    genericWarning =<< fsep (pwords "No main function defined in" ++ [prettyTCM agdaMod <> text "."] +++    genericWarning =<< fsep (pwords "No main function defined in" ++ [prettyTCM agdaMod <> "."] ++                              pwords "Use --no-main to suppress this warning.")    let overridableArgs =
src/full/Agda/Compiler/MAlonzo/HaskellTypes.hs view
@@ -73,18 +73,18 @@         pwords "cannot be translated to a corresponding Haskell type, because it contains" ++         reason offender) $$ possibleFix offender   where-    reason (BadLambda        v) = pwords "the lambda term" ++ [prettyTCM v <> text "."]-    reason (BadMeta          v) = pwords "a meta variable" ++ [prettyTCM v <> text "."]-    reason (BadDontCare      v) = pwords "an erased term" ++ [prettyTCM v <> text "."]+    reason (BadLambda        v) = pwords "the lambda term" ++ [prettyTCM v <> "."]+    reason (BadMeta          v) = pwords "a meta variable" ++ [prettyTCM v <> "."]+    reason (BadDontCare      v) = pwords "an erased term" ++ [prettyTCM v <> "."]     reason (NoPragmaFor      x) = [prettyTCM x] ++ pwords "which does not have a COMPILE pragma."     reason (WrongPragmaFor _ x) = [prettyTCM x] ++ pwords "which has the wrong kind of COMPILE pragma."      possibleFix BadLambda{}     = empty     possibleFix BadMeta{}       = empty     possibleFix BadDontCare{}   = empty-    possibleFix (NoPragmaFor d) = suggestPragma d $ text "add a pragma"+    possibleFix (NoPragmaFor d) = suggestPragma d $ "add a pragma"     possibleFix (WrongPragmaFor r d) = suggestPragma d $-      sep [ text "replace the value-level pragma at", nest 2 $ pretty r, text "by" ]+      sep [ "replace the value-level pragma at", nest 2 $ pretty r, "by" ]      suggestPragma d action = do       def    <- theDef <$> getConstInfo d@@ -95,8 +95,8 @@               Datatype{ dataCons = cs } -> dataPragma (length cs)               Record{}                  -> dataPragma 1               _                         -> typePragma-      vcat [ sep [text "Possible fix:", action]-           , nest 2 $ hsep [ text "{-# COMPILE GHC", prettyTCM d, text "=", text pragma, text "#-}" ]+      vcat [ sep ["Possible fix:", action]+           , nest 2 $ hsep [ "{-# COMPILE GHC", prettyTCM d, "=", text pragma, "#-}" ]            , text ("for a suitable Haskell " ++ hsThing ++ ".")            ] @@ -177,6 +177,7 @@         Sort{}     -> return hsUnit         MetaV{}    -> throwError (BadMeta v)         DontCare{} -> throwError (BadDontCare v)+        Dummy s    -> __IMPOSSIBLE_VERBOSE__ s  haskellType :: QName -> TCM HS.Type haskellType q = do@@ -198,7 +199,7 @@           Pi a b  -> underAbstraction a b $ \b -> hsForall <$> getHsVar 0 <*> underPars (n - 1) b           _       -> __IMPOSSIBLE__   ty <- underPars np $ defType def-  reportSDoc "tc.pragma.compile" 10 $ (text "Haskell type for" <+> prettyTCM q <> text ":") <?> pretty ty+  reportSDoc "tc.pragma.compile" 10 $ ("Haskell type for" <+> prettyTCM q <> ":") <?> pretty ty   return ty  checkConstructorCount :: QName -> [QName] -> [HaskellCode] -> TCM ()
src/full/Agda/Compiler/MAlonzo/Pragmas.hs view
@@ -26,6 +26,9 @@ import Agda.Utils.Impossible #include "undefined.h" +type HaskellCode = String+type HaskellType = String+ -- | GHC backend translation pragmas. data HaskellPragma   = HsDefn Range HaskellCode@@ -67,8 +70,8 @@     barP = skipSpaces *> char '|'      -- quite liberal-    isIdent c = isAlphaNum c || elem c "_.':[]"-    isOp c    = not $ isSpace c || elem c "()"+    isIdent c = isAlphaNum c || elem c ("_.':[]" :: String)+    isOp c    = not $ isSpace c || elem c ("()" :: String)     hsIdent = fst <$> gather (choice                 [ string "()"                 , many1 (satisfy isIdent)@@ -114,7 +117,7 @@       recOrDataErr which =         typeError $ GenericDocError $           sep [ text $ "Bad COMPILE GHC pragma for " ++ which ++ " type. Use"-              , text "{-# COMPILE GHC <Name> = data <HsData> (<HsCon1> | .. | <HsConN>) #-}" ]+              , "{-# COMPILE GHC <Name> = data <HsData> (<HsCon1> | .. | <HsConN>) #-}" ] sanityCheckPragma def (Just HsData{}) =   case theDef def of     Datatype{} -> return ()
src/full/Agda/Compiler/MAlonzo/Pretty.hs view
@@ -26,15 +26,15 @@ instance Pretty HS.Module where   pretty (HS.Module m pragmas imps decls) =     vcat [ vcat $ map pretty pragmas-         , text "module" <+> pretty m <+> text "where"-         , text ""+         , "module" <+> pretty m <+> "where"+         , ""          , vcat $ map pretty imps-         , text ""+         , ""          , vcat $ map pretty decls ]  instance Pretty HS.ModulePragma where   pretty (HS.LanguagePragma ps) =-    text "{-#" <+> text "LANGUAGE" <+> fsep (punctuate comma $ map pretty ps) <+> text "#-}"+    "{-#" <+> "LANGUAGE" <+> fsep (punctuate comma $ map pretty ps) <+> "#-}"   pretty (HS.OtherPragma p) =     text p @@ -42,12 +42,12 @@   pretty HS.ImportDecl{ HS.importModule    = m                       , HS.importQualified = q                       , HS.importSpecs     = specs } =-      hsep [ text "import"-           , if q then text "qualified" else empty+      hsep [ "import"+           , if q then "qualified" else empty            , pretty m            , maybe empty prSpecs specs ]     where prSpecs (hide, specs) =-            hsep [ if hide then text "hiding" else empty+            hsep [ if hide then "hiding" else empty                  , parens $ fsep $ punctuate comma $ map pretty specs ]  instance Pretty HS.ImportSpec where@@ -56,22 +56,22 @@ instance Pretty HS.Decl where   pretty d = case d of     HS.TypeDecl f xs t ->-      sep [ text "type" <+> pretty f <+> fsep (map pretty xs) <+> text "="+      sep [ "type" <+> pretty f <+> fsep (map pretty xs) <+> "="           , nest 2 $ pretty t ]     HS.DataDecl newt d xs cons derv ->       sep [ pretty newt <+> pretty d <+> fsep (map pretty xs)           , nest 2 $ if null cons then empty-                     else text "=" <+> fsep (punctuate (text " |") $ map pretty cons)+                     else "=" <+> fsep (punctuate " |" $ map pretty cons)           , nest 2 $ prDeriving derv ]       where         prDeriving [] = empty-        prDeriving ds = text "deriving" <+> parens (fsep $ punctuate comma $ map prDer ds)+        prDeriving ds = "deriving" <+> parens (fsep $ punctuate comma $ map prDer ds)         prDer (d, ts) = pretty (foldl HS.TyApp (HS.TyCon d) ts)     HS.TypeSig fs t ->-      sep [ hsep (punctuate comma (map pretty fs)) <+> text "::"+      sep [ hsep (punctuate comma (map pretty fs)) <+> "::"           , nest 2 $ pretty t ]     HS.FunBind ms -> vcat $ map pretty ms-    HS.PatSyn p1 p2 -> sep [ text "pattern" <+> pretty p1 <+> text "=" <+> pretty p2 ]+    HS.PatSyn p1 p2 -> sep [ "pattern" <+> pretty p1 <+> "=" <+> pretty p2 ]     HS.FakeDecl s -> text s  instance Pretty HS.ConDecl where@@ -80,7 +80,7 @@     fsep (map (\(s, t) -> maybe empty pretty s <> prettyPrec 10 t) sts)  instance Pretty HS.Strictness where-  pretty HS.Strict = text "!"+  pretty HS.Strict = "!"   pretty HS.Lazy   = empty  instance Pretty HS.Match where@@ -92,19 +92,19 @@ prettyWhere :: Maybe HS.Binds -> Doc -> Doc prettyWhere Nothing  doc = doc prettyWhere (Just b) doc =-  vcat [ doc, nest 2 $ sep [ text "where", nest 2 $ pretty b ] ]+  vcat [ doc, nest 2 $ sep [ "where", nest 2 $ pretty b ] ]  instance Pretty HS.Pat where   prettyPrec pr pat =     case pat of       HS.PVar x         -> pretty x       HS.PLit l         -> pretty l-      HS.PAsPat x p     -> mparens (pr > 10) $ pretty x <> text "@" <> prettyPrec 11 p-      HS.PWildCard      -> text "_"-      HS.PBangPat p     -> text "!" <> prettyPrec 11 p+      HS.PAsPat x p     -> mparens (pr > 10) $ pretty x <> "@" <> prettyPrec 11 p+      HS.PWildCard      -> "_"+      HS.PBangPat p     -> "!" <> prettyPrec 11 p       HS.PApp c ps      -> mparens (pr > 9) $ pretty c <+> hsep (map (prettyPrec 10) ps)-      HS.PatTypeSig p t -> mparens (pr > 0) $ sep [ pretty p <+> text "::", nest 2 $ pretty t ]-      HS.PIrrPat p      -> mparens (pr > 10) $ text "~" <> prettyPrec 11 p+      HS.PatTypeSig p t -> mparens (pr > 0) $ sep [ pretty p <+> "::", nest 2 $ pretty t ]+      HS.PIrrPat p      -> mparens (pr > 10) $ "~" <> prettyPrec 11 p  prettyRhs :: String -> HS.Rhs -> Doc prettyRhs eq (HS.UnGuardedRhs e)   = text eq <+> pretty e@@ -112,15 +112,15 @@  prettyGuardedRhs :: String -> HS.GuardedRhs -> Doc prettyGuardedRhs eq (HS.GuardedRhs ss e) =-    sep [ text "|" <+> sep (punctuate comma $ map pretty ss) <+> text eq+    sep [ "|" <+> sep (punctuate comma $ map pretty ss) <+> text eq         , nest 2 $ pretty e ]  instance Pretty HS.Binds where   pretty (HS.BDecls ds) = vcat $ map pretty ds  instance Pretty HS.DataOrNew where-  pretty HS.DataType = text "data"-  pretty HS.NewType  = text "newtype"+  pretty HS.DataType = "data"+  pretty HS.NewType  = "newtype"  instance Pretty HS.TyVarBind where   pretty (HS.UnkindedVar x) = pretty x@@ -130,11 +130,11 @@     case t of       HS.TyForall xs t ->         mparens (pr > 0) $-          sep [ text "forall" <+> fsep (map pretty xs) <> text "."+          sep [ "forall" <+> fsep (map pretty xs) <> "."               , nest 2 $ pretty t ]       HS.TyFun a b ->         mparens (pr > 4) $-          sep [ prettyPrec 5 a <+> text "->", prettyPrec 4 b ]+          sep [ prettyPrec 5 a <+> "->", prettyPrec 4 b ]       HS.TyCon c -> pretty c       HS.TyVar x -> pretty x       HS.TyApp (HS.TyCon (HS.UnQual (HS.Ident "[]"))) t ->@@ -151,7 +151,7 @@  instance Pretty HS.Stmt where   pretty (HS.Qualifier e) = pretty e-  pretty (HS.Generator p e) = sep [ pretty p <+> text "<-", nest 2 $ pretty e ]+  pretty (HS.Generator p e) = sep [ pretty p <+> "<-", nest 2 $ pretty e ]  instance Pretty HS.Literal where   pretty (HS.Int n)    = integer n@@ -176,22 +176,22 @@           appView (HS.App f e) es = appView f (e : es)           appView f es = f : es       HS.Lambda ps e -> mparens (pr > 0) $-        sep [ text "\\" <+> fsep (map (prettyPrec 10) ps) <+> text "->"+        sep [ "\\" <+> fsep (map (prettyPrec 10) ps) <+> "->"             , nest 2 $ pretty e ]       HS.Let bs e -> mparens (pr > 0) $-        sep [ text "let" <+> pretty bs <+> text "in"+        sep [ "let" <+> pretty bs <+> "in"             , pretty e ]       HS.If a b c -> mparens (pr > 0) $-        sep [ text "if" <+> pretty a-            , nest 2 $ text "then" <+> pretty b-            , nest 2 $ text "else" <+> prettyPrec 1 c ]+        sep [ "if" <+> pretty a+            , nest 2 $ "then" <+> pretty b+            , nest 2 $ "else" <+> prettyPrec 1 c ]       HS.Case e bs -> mparens (pr > 0) $-        vcat [ text "case" <+> pretty e <+> text "of"+        vcat [ "case" <+> pretty e <+> "of"              , nest 2 $ vcat $ map pretty bs ]       HS.ExpTypeSig e t -> mparens (pr > 0) $-        sep [ pretty e <+> text "::"+        sep [ pretty e <+> "::"             , nest 2 $ pretty t ]-      HS.NegApp exp -> parens $ text "-" <> pretty exp+      HS.NegApp exp -> parens $ "-" <> pretty exp       HS.FakeExp s -> text s  instance Pretty HS.Alt where@@ -213,7 +213,7 @@ instance Pretty HS.QOp where   pretty (HS.QVarOp x)     | isOperator x = prettyQName x-    | otherwise    = text "`" <> prettyQName x <> text "`"+    | otherwise    = "`" <> prettyQName x <> "`"  isOperator :: HS.QName -> Bool isOperator q =@@ -225,5 +225,5 @@     isOp HS.Ident{}  = False  prettyQName :: HS.QName -> Doc-prettyQName (HS.Qual m x)           = pretty m <> text "." <> pretty x+prettyQName (HS.Qual m x)           = pretty m <> "." <> pretty x prettyQName (HS.UnQual x)           = pretty x
src/full/Agda/Compiler/MAlonzo/Primitives.hs view
@@ -115,7 +115,7 @@ xForPrim :: [(String, TCM [a])] -> TCM [a] xForPrim table = do   qs <- HMap.keys <$> curDefs-  bs <- toList <$> gets stBuiltinThings+  bs <- toList <$> getsTC stBuiltinThings   let getName (Builtin (Def q _))    = q       getName (Builtin (Con q _ _))  = conName q       getName (Builtin (Lam _ b))    = getName (Builtin $ unAbs b)@@ -147,6 +147,9 @@   , "primLevelSuc"    |-> return "(\\ _ -> ())"   , "primLevelMax"    |-> return "(\\ _ _ -> ())" +  -- Sorts+  , "primSetOmega"    |-> return "()"+   -- Natural number functions   , "primNatPlus"      |-> binNat "(+)"   , "primNatMinus"     |-> binNat "(\\ x y -> max 0 (x - y))"@@ -204,6 +207,7 @@   , "primCharToNat" |-> return "(fromIntegral . fromEnum :: Char -> Integer)"   , "primNatToChar" |-> return "(toEnum . fromIntegral :: Integer -> Char)"   , "primShowChar"  |-> return "(Data.Text.pack . show :: Char -> Data.Text.Text)"+  , "primCharToNatInjective" |-> return "erased"    -- String functions   , "primStringToList"   |-> return "Data.Text.unpack"@@ -211,6 +215,7 @@   , "primStringAppend"   |-> binAsis "Data.Text.append" "Data.Text.Text"   , "primStringEquality" |-> rel "(==)" "Data.Text.Text"   , "primShowString"     |-> return "(Data.Text.pack . show :: Data.Text.Text -> Data.Text.Text)"+  , "primStringToListInjective" |-> return "erased"    -- Reflection   , "primQNameEquality"   |-> rel "(==)" "MAlonzo.RTE.QName"@@ -225,10 +230,12 @@   , "primForce"      |-> return "\\ _ _ _ _ x f -> f $! x"   , "primForceLemma" |-> return "erased" -  -- Trust me-  , ("primTrustMe"       , Right <$> do+  -- Erase+  , ("primEraseEquality", Right <$> do        refl <- primRefl-       closedTerm =<< (closedTermToTreeless $ lam "a" (lam "A" (lam "x" (lam "y" refl)))))+       let erase = hLam "a" $ hLam "A" $ hLam "x" $ hLam "y" $ nLam "eq" refl+       closedTerm =<< closedTermToTreeless LazyEvaluation erase+    )   ]   where   x |-> s = (x, Left <$> s)@@ -248,9 +255,12 @@       "(<<0>> :: Integer -> Integer -> Bool)"   rel op ty  = rel' "" op ty   opty t = t ++ "->" ++ t ++ "->" ++ t-  unimplemented = typeError $ NotImplemented s+  axiom_prims = ["primIMin","primIMax","primINeg","primPartial","primPartialP","primPFrom1","primPOr","primComp"]+  unimplemented | s `List.elem` axiom_prims = return $ rtmError $ "primitive with no body evaluated: " ++ s+                | otherwise = typeError $ NotImplemented s -  lam x t = Lam (setHiding Hidden defaultArgInfo) (Abs x t)+  hLam x t = Lam (setHiding Hidden defaultArgInfo) (Abs x t)+  nLam x t = Lam (setHiding NotHidden defaultArgInfo) (Abs x t)  noCheckCover :: QName -> TCM Bool noCheckCover q = (||) <$> isBuiltin q builtinNat <*> isBuiltin q builtinInteger
src/full/Agda/Compiler/ToTreeless.hs view
@@ -16,7 +16,7 @@ import Agda.Syntax.Common import Agda.Syntax.Internal as I import qualified Agda.Syntax.Treeless as C-import Agda.Syntax.Treeless (TTerm)+import Agda.Syntax.Treeless (TTerm, EvaluationStrategy) import Agda.Syntax.Literal import qualified Agda.TypeChecking.CompiledClause as CC import qualified Agda.TypeChecking.CompiledClause.Compile as CC@@ -63,8 +63,12 @@              | otherwise = False       translate | isProj    = CC.DontRunRecordPatternTranslation                 | otherwise = CC.RunRecordPatternTranslation-  reportSDoc "treeless.convert" 40 $ text "-- before clause compiler" $$ (pretty q <+> text "=") <?> vcat (map pretty cs)-  CC.compileClauses' translate cs+  reportSDoc "treeless.convert" 40 $ "-- before clause compiler" $$ (pretty q <+> "=") <?> vcat (map pretty cs)+  let mst = funSplitTree $ theDef def+  reportSDoc "treeless.convert" 70 $+    caseMaybe mst "-- not using split tree" $ \st ->+      "-- using split tree" $$ pretty st+  CC.compileClauses' translate cs mst  -- | Converts compiled clauses to treeless syntax. --@@ -72,39 +76,39 @@ -- term for identification purposes! If you wish to do so, -- first apply the Agda.Compiler.Treeless.NormalizeNames -- transformation.-toTreeless :: QName -> TCM (Maybe C.TTerm)-toTreeless q = ifM (alwaysInline q) (pure Nothing) $ Just <$> toTreeless' q+toTreeless :: EvaluationStrategy -> QName -> TCM (Maybe C.TTerm)+toTreeless eval q = ifM (alwaysInline q) (pure Nothing) $ Just <$> toTreeless' eval q -toTreeless' :: QName -> TCM C.TTerm-toTreeless' q =+toTreeless' :: EvaluationStrategy -> QName -> TCM C.TTerm+toTreeless' eval q =   flip fromMaybeM (getTreeless q) $ verboseBracket "treeless.convert" 20 ("compiling " ++ prettyShow q) $ do     cc <- getCompiledClauses q     unlessM (alwaysInline q) $ setTreeless q (C.TDef q)       -- so recursive inlining doesn't loop, but not for always inlined       -- functions, since that would risk inlining to fail.-    ccToTreeless q cc+    ccToTreeless eval q cc  -- | Does not require the name to refer to a function.-cacheTreeless :: QName -> TCM ()-cacheTreeless q = do+cacheTreeless :: EvaluationStrategy -> QName -> TCM ()+cacheTreeless eval q = do   def <- theDef <$> getConstInfo q   case def of-    Function{} -> () <$ toTreeless' q+    Function{} -> () <$ toTreeless' eval q     _          -> return () -ccToTreeless :: QName -> CC.CompiledClauses -> TCM C.TTerm-ccToTreeless q cc = do+ccToTreeless :: EvaluationStrategy -> QName -> CC.CompiledClauses -> TCM C.TTerm+ccToTreeless eval q cc = do   let pbody b = pbody' "" b-      pbody' suf b = sep [ text (prettyShow q ++ suf) <+> text "=", nest 2 $ prettyPure b ]+      pbody' suf b = sep [ text (prettyShow q ++ suf) <+> "=", nest 2 $ prettyPure b ]   v <- ifM (alwaysInline q) (return 20) (return 0)-  reportSDoc "treeless.convert" (30 + v) $ text "-- compiled clauses of" <+> prettyTCM q $$ nest 2 (prettyPure cc)-  body <- casetreeTop cc-  reportSDoc "treeless.opt.converted" (30 + v) $ text "-- converted" $$ pbody body-  body <- runPipeline q (compilerPipeline v q) body+  reportSDoc "treeless.convert" (30 + v) $ "-- compiled clauses of" <+> prettyTCM q $$ nest 2 (prettyPure cc)+  body <- casetreeTop eval cc+  reportSDoc "treeless.opt.converted" (30 + v) $ "-- converted" $$ pbody body+  body <- runPipeline eval q (compilerPipeline v q) body   used <- usedArguments q body   when (any not used) $     reportSDoc "treeless.opt.unused" (30 + v) $-      text "-- used args:" <+> hsep [ if u then text [x] else text "_" | (x, u) <- zip ['a'..] used ] $$+      "-- used args:" <+> hsep [ if u then text [x] else "_" | (x, u) <- zip ['a'..] used ] $$       pbody' "[stripped]" (stripUnusedArguments used body)   reportSDoc "treeless.opt.final" (20 + v) $ pbody body   setTreeless q body@@ -119,58 +123,58 @@   { passTag       :: String   , passVerbosity :: Int   , passName      :: String-  , passCode      :: TTerm -> TCM TTerm+  , passCode      :: EvaluationStrategy -> TTerm -> TCM TTerm   } -compilerPass :: String -> Int -> String -> (TTerm -> TCM TTerm) -> Pipeline+compilerPass :: String -> Int -> String -> (EvaluationStrategy -> TTerm -> TCM TTerm) -> Pipeline compilerPass tag v name code = SinglePass (CompilerPass tag v name code)  compilerPipeline :: Int -> QName -> Pipeline compilerPipeline v q =   Sequential-    [ compilerPass "simpl"   (35 + v) "simplification"      simplifyTTerm-    , compilerPass "builtin" (30 + v) "builtin translation" translateBuiltins+    [ compilerPass "simpl"   (35 + v) "simplification"      $ const simplifyTTerm+    , compilerPass "builtin" (30 + v) "builtin translation" $ const translateBuiltins     , FixedPoint 5 $ Sequential-      [ compilerPass "simpl"  (30 + v) "simplification"                simplifyTTerm-      , compilerPass "erase"  (30 + v) "erasure" $                     eraseTerms q-      , compilerPass "uncase" (30 + v) "uncase"                        caseToSeq-      , compilerPass "aspat"  (30 + v) "@-pattern recovery"            recoverAsPatterns+      [ compilerPass "simpl"  (30 + v) "simplification"     $ const simplifyTTerm+      , compilerPass "erase"  (30 + v) "erasure"            $ eraseTerms q+      , compilerPass "uncase" (30 + v) "uncase"             $ const caseToSeq+      , compilerPass "aspat"  (30 + v) "@-pattern recovery" $ const recoverAsPatterns       ]-    , compilerPass "id" (30 + v) "identity function detection" $ detectIdentityFunctions q+    , compilerPass "id" (30 + v) "identity function detection" $ const (detectIdentityFunctions q)     ] -runPipeline :: QName -> Pipeline -> TTerm -> TCM TTerm-runPipeline q pipeline t = case pipeline of-  SinglePass p   -> runCompilerPass q p t-  Sequential ps  -> foldM (flip $ runPipeline q) t ps-  FixedPoint n p -> runFixedPoint n q p t+runPipeline :: EvaluationStrategy -> QName -> Pipeline -> TTerm -> TCM TTerm+runPipeline eval q pipeline t = case pipeline of+  SinglePass p   -> runCompilerPass eval q p t+  Sequential ps  -> foldM (flip $ runPipeline eval q) t ps+  FixedPoint n p -> runFixedPoint n eval q p t -runCompilerPass :: QName -> CompilerPass -> TTerm -> TCM TTerm-runCompilerPass q p t = do-  t' <- passCode p t+runCompilerPass :: EvaluationStrategy -> QName -> CompilerPass -> TTerm -> TCM TTerm+runCompilerPass eval q p t = do+  t' <- passCode p eval t   let dbg f   = reportSDoc ("treeless.opt." ++ passTag p) (passVerbosity p) $ f $ text ("-- " ++ passName p)-      pbody b = sep [ text (prettyShow q) <+> text "=", nest 2 $ prettyPure b ]-  dbg $ if | t == t'   -> (<+> text "(No effect)")+      pbody b = sep [ text (prettyShow q) <+> "=", nest 2 $ prettyPure b ]+  dbg $ if | t == t'   -> (<+> "(No effect)")            | otherwise -> ($$ pbody t')   return t' -runFixedPoint :: Int -> QName -> Pipeline -> TTerm -> TCM TTerm-runFixedPoint n q pipeline = go 1+runFixedPoint :: Int -> EvaluationStrategy -> QName -> Pipeline -> TTerm -> TCM TTerm+runFixedPoint n eval q pipeline = go 1   where     go i t | i > n = do       reportSLn "treeless.opt.loop" 20 $ "++ Optimisation loop reached maximum iterations (" ++ show n ++ ")"       return t     go i t = do       reportSLn "treeless.opt.loop" 30 $ "++ Optimisation loop iteration " ++ show i-      t' <- runPipeline q pipeline t+      t' <- runPipeline eval q pipeline t       if | t == t'   -> do             reportSLn "treeless.opt.loop" 30 $ "++ Optimisation loop terminating after " ++ show i ++ " iterations"             return t'          | otherwise -> go (i + 1) t' -closedTermToTreeless :: I.Term -> TCM C.TTerm-closedTermToTreeless t = do-  substTerm t `runReaderT` initCCEnv+closedTermToTreeless :: EvaluationStrategy -> I.Term -> TCM C.TTerm+closedTermToTreeless eval t = do+  substTerm t `runReaderT` initCCEnv eval  alwaysInline :: QName -> TCM Bool alwaysInline q = do@@ -180,10 +184,11 @@     _ -> False  -- | Initial environment for expression generation.-initCCEnv :: CCEnv-initCCEnv = CCEnv+initCCEnv :: EvaluationStrategy -> CCEnv+initCCEnv eval = CCEnv   { ccCxt        = []   , ccCatchAll   = Nothing+  , ccEvaluation = eval   }  -- | Environment for naming of local variables.@@ -191,6 +196,7 @@   { ccCxt        :: CCContext  -- ^ Maps case tree de-bruijn indices to TTerm de-bruijn indices   , ccCatchAll   :: Maybe Int  -- ^ TTerm de-bruijn index of the current catch all   -- If an inner case has no catch-all clause, we use the one from its parent.+  , ccEvaluation :: EvaluationStrategy   }  type CCContext = [Int]@@ -212,8 +218,8 @@ lookupLevel l xs = fromMaybe __IMPOSSIBLE__ $ xs !!! (length xs - 1 - l)  -- | Compile a case tree into nested case and record expressions.-casetreeTop :: CC.CompiledClauses -> TCM C.TTerm-casetreeTop cc = flip runReaderT initCCEnv $ do+casetreeTop :: EvaluationStrategy -> CC.CompiledClauses -> TCM C.TTerm+casetreeTop eval cc = flip runReaderT (initCCEnv eval) $ do   let a = commonArity cc   lift $ reportSLn "treeless.convert.arity" 40 $ "-- common arity: " ++ show a   lambdasUpTo a $ casetree cc@@ -227,14 +233,14 @@       -- if some arguments are not used in the body.       v <- lift (putAllowedReductions [ProjectionReductions, CopatternReductions] $ normalise v)       substTerm v-    CC.Case _ (CC.Branches True _ _ _ Just{} _) -> __IMPOSSIBLE__+    CC.Case _ (CC.Branches True _ _ _ Just{} _ _) -> __IMPOSSIBLE__       -- Andreas, 2016-06-03, issue #1986: Ulf: "no catch-all for copatterns!"       -- lift $ do       --   typeError . GenericDocError =<< do-      --     text "Not yet implemented: compilation of copattern matching with catch-all clause"-    CC.Case (Arg _ n) (CC.Branches True conBrs _ _ Nothing _) -> lambdasUpTo n $ do+      --     "Not yet implemented: compilation of copattern matching with catch-all clause"+    CC.Case (Arg _ n) (CC.Branches True conBrs _ _ Nothing _ _) -> lambdasUpTo n $ do       mkRecord =<< traverse casetree (CC.content <$> conBrs)-    CC.Case (Arg _ n) (CC.Branches False conBrs etaBr litBrs catchAll lazy) -> lambdasUpTo (n + 1) $ do+    CC.Case (Arg _ n) (CC.Branches False conBrs etaBr litBrs catchAll _ lazy) -> lambdasUpTo (n + 1) $ do                     -- We can treat eta-matches as regular matches here.       let conBrs' = Map.union conBrs $ Map.fromList $ map (first conName) $ maybeToList etaBr       if Map.null conBrs' && Map.null litBrs then do@@ -271,7 +277,7 @@     [] -> 0     as -> minimum as   where-    arities cxt (Case (Arg _ x) (Branches False cons eta lits def _)) =+    arities cxt (Case (Arg _ x) (Branches False cons eta lits def _ _)) =       concatMap (wArities cxt') (Map.elems cons) ++       concatMap (wArities cxt') (map snd $ maybeToList eta) ++       concatMap (wArities cxt' . WithArity 0) (Map.elems lits) ++@@ -372,8 +378,12 @@   let p1 = fst $ fromMaybe __IMPOSSIBLE__ $ headMaybe $ Map.toList fs   -- Use the field name to get the record constructor and the field names.   I.ConHead c _ind xs <- conSrcCon . theDef <$> (getConstInfo =<< canonicalName . I.conName =<< recConFromProj p1)+  reportSDoc "treeless.convert.mkRecord" 60 $ vcat+    [ text "record constructor fields: xs      = " <+> (text . show) xs+    , text "to be filled with content: keys fs = " <+> (text . show) (Map.keys fs)+    ]   -- Convert the constructor-  let (args :: [C.TTerm]) = for xs $ \ x -> fromMaybe __IMPOSSIBLE__ $ Map.lookup x fs+  let (args :: [C.TTerm]) = for xs $ \ (Arg ai x) -> Map.findWithDefault __IMPOSSIBLE__ x fs   return $ C.mkTApp (C.TCon c) args  @@ -413,6 +423,7 @@     I.Sort _  -> return C.TSort     I.MetaV _ _ -> __IMPOSSIBLE__   -- we don't compiled if unsolved metas     I.DontCare _ -> return C.TErased+    I.Dummy{} -> __IMPOSSIBLE__  normaliseStatic :: I.Term -> CC I.Term normaliseStatic v@(I.Def f es) = lift $ do@@ -421,13 +432,14 @@ normaliseStatic v = pure v  maybeInlineDef :: I.QName -> I.Args -> CC C.TTerm-maybeInlineDef q vs =-  ifM (lift $ alwaysInline q) doinline $ do-    lift $ cacheTreeless q+maybeInlineDef q vs = do+  eval <- asks ccEvaluation+  ifM (lift $ alwaysInline q) (doinline eval) $ do+    lift $ cacheTreeless eval q     def <- lift $ getConstInfo q     case theDef def of       fun@Function{}-        | fun ^. funInline -> doinline+        | fun ^. funInline -> doinline eval         | otherwise -> do         used <- lift $ getCompiledArgUse q         let substUsed False _   = pure C.TErased@@ -435,18 +447,12 @@         C.mkTApp (C.TDef q) <$> sequence [ substUsed u arg | (arg, u) <- zip vs $ used ++ repeat True ]       _ -> C.mkTApp (C.TDef q) <$> substArgs vs   where-    doinline = C.mkTApp <$> inline q <*> substArgs vs-    inline q = lift $ toTreeless' q+    doinline eval = C.mkTApp <$> inline eval q <*> substArgs vs+    inline eval q = lift $ toTreeless' eval q  substArgs :: [Arg I.Term] -> CC [C.TTerm] substArgs = traverse substArg  substArg :: Arg I.Term -> CC C.TTerm-substArg x | erasable x = return C.TErased-           | otherwise  = substTerm (unArg x)-  where-    erasable x =-      case getRelevance x of-        Irrelevant -> True-        NonStrict  -> True-        Relevant   -> False+substArg x | usableModality x = substTerm (unArg x)+           | otherwise = return C.TErased
src/full/Agda/Compiler/Treeless/EliminateLiteralPatterns.hs view
@@ -68,7 +68,7 @@       TApp a bs               -> TApp (tr a) (map tr bs)       TLet e b                -> TLet (tr e) (tr b) -    isCaseOn (CTData dt) xs = dt `elem` catMaybes (map ($ kit) xs)+    isCaseOn (CTData dt) xs = dt `elem` mapMaybe ($ kit) xs     isCaseOn _ _ = False      eqFromLit :: Literal -> TPrim
src/full/Agda/Compiler/Treeless/Erase.hs view
@@ -63,8 +63,8 @@   cs <- getConstructors d   runE $ mapM_ getFunInfo cs -eraseTerms :: QName -> TTerm -> TCM TTerm-eraseTerms q t = usedArguments q t *> runE (eraseTop q t)+eraseTerms :: QName -> EvaluationStrategy -> TTerm -> TCM TTerm+eraseTerms q eval t = usedArguments q t *> runE (eraseTop q t)   where     eraseTop q t = do       (_, h) <- getFunInfo q@@ -88,7 +88,7 @@         case h of           Erasable -> pure TErased           Empty    -> pure TErased-          _        -> tApp (TDef f) <$> zipWithM eraseRel (rs ++ repeat Relevant) vs+          _        -> tApp (TDef f) <$> zipWithM eraseRel (rs ++ repeat NotErasable) vs        _ -> case t of         TVar{}         -> pure t@@ -117,8 +117,9 @@         TError{}       -> pure t         TCoerce e      -> TCoerce <$> erase e -    tLam TErased = TErased-    tLam t       = TLam t+    -- #3380: this is not safe for strict backends+    tLam TErased | eval == LazyEvaluation = TErased+    tLam t                                = TLam t      tLet e b       | freeIn 0 b = TLet e b@@ -145,13 +146,13 @@      isErased t = t == TErased || isUnreachable t -    eraseRel r t | erasableR r = pure TErased-                 | otherwise   = erase t+    eraseRel r t | erasable r = pure TErased+                 | otherwise  = erase t      eraseAlt a = case a of       TALit l b   -> TALit l   <$> erase b       TACon c a b -> do-        rs <- map erasableR . fst <$> getFunInfo c+        rs <- map erasable . fst <$> getFunInfo c         let sub = foldr (\ e -> if e then (TErased :#) . wkS 1 else liftS 1) idS $ reverse rs         TACon c a <$> erase (applySubst sub b)       TAGuard g b -> TAGuard   <$> erase g <*> erase b@@ -212,17 +213,12 @@     plus r           Erasable    = r     plus NotErasable NotErasable = NotErasable -erasableR :: Relevance -> Bool-erasableR Relevant   = False-erasableR NonStrict  = True-erasableR Irrelevant = True- erasable :: TypeInfo -> Bool erasable Erasable    = True erasable Empty       = True erasable NotErasable = False -type FunInfo = ([Relevance], TypeInfo)+type FunInfo = ([TypeInfo], TypeInfo)  getFunInfo :: QName -> E FunInfo getFunInfo q = memo (funMap . key q) $ getInfo q@@ -233,20 +229,19 @@         is     <- mapM (getTypeInfo . snd . dget) tel         used   <- lift $ (++ repeat True) <$> getCompiledArgUse q         forced <- lift $ (++ repeat NotForced) <$> getForcedArgs q-        return (zipWith3 (uncurry . mkR . getRelevance) tel (zip forced used) is, t)+        return (zipWith3 (uncurry . mkR . getModality) tel (zip forced used) is, t)       h <- if isAbsurdLambdaName q then pure Erasable else getTypeInfo t       lift $ reportSLn "treeless.opt.erase.info" 50 $ "type info for " ++ prettyShow q ++ ": " ++ show rs ++ " -> " ++ show h-      lift $ setErasedConArgs q $ map erasableR rs+      lift $ setErasedConArgs q $ map erasable rs       return (rs, h) -    -- Treat empty, erasable, or unused arguments as NonStrict (and thus erasable)-    mkR :: Relevance -> IsForced -> Bool -> TypeInfo -> Relevance-    mkR Irrelevant _ _ _  = Irrelevant-    mkR _ _ False _       = NonStrict-    mkR _ Forced _ _      = NonStrict-    mkR r _ _ NotErasable = r-    mkR _ _ _ Empty       = NonStrict-    mkR _ _ _ Erasable    = NonStrict+    -- Treat empty, erasable, or unused arguments as Erasable+    mkR :: Modality -> IsForced -> Bool -> TypeInfo -> TypeInfo+    mkR m f b i+      | not (usableModality m) = Erasable+      | not b                  = Erasable+      | Forced <- f            = Erasable+      | otherwise              = i  telListView :: Type -> TCM (ListTel, Type) telListView t = do@@ -296,14 +291,14 @@         _ | Just q `elem` msizes -> return Erasable         Just [c] -> do           (ts, _) <- lift $ typeWithoutParams c-          let rs = map getRelevance ts+          let rs = map getModality ts           is <- mapM (getTypeInfo . snd . dget) ts-          let er = and [ erasable i || erasableR r | (i, r) <- zip is rs ]+          let er = and [ erasable i || not (usableModality r) | (i, r) <- zip is rs ]           return $ if er then Erasable else NotErasable         Just []      -> return Empty         Just (_:_:_) -> return NotErasable         Nothing ->           case I.theDef def of             I.Function{ funClauses = cs } ->-              sumTypeInfo <$> mapM (maybe (return Empty) (getTypeInfo . El Prop) . clauseBody) cs+              sumTypeInfo <$> mapM (maybe (return Empty) (getTypeInfo . El __DUMMY_SORT__) . clauseBody) cs             _ -> return NotErasable
src/full/Agda/Compiler/Treeless/Identity.hs view
@@ -1,7 +1,10 @@+{-# LANGUAGE CPP #-}  module Agda.Compiler.Treeless.Identity   ( detectIdentityFunctions ) where +import Prelude hiding ((!!))  -- don't use partial functions+ import Control.Applicative ( Alternative((<|>), empty) ) import Data.Foldable (foldMap) import Data.Semigroup@@ -11,8 +14,13 @@ import Agda.Syntax.Treeless import Agda.TypeChecking.Substitute import Agda.TypeChecking.Monad+ import Agda.Utils.Lens+import Agda.Utils.List +#include "undefined.h"+import Agda.Utils.Impossible+ detectIdentityFunctions :: QName -> TTerm -> TCM TTerm detectIdentityFunctions q t =   case isIdentity q t of@@ -49,7 +57,7 @@         identityArgs a args =           length args == a && and (zipWith match (reverse args) [0..]) -        proj x args = reverse args !! x+        proj x args = indexWithDefault __IMPOSSIBLE__ (reverse args) x          match TErased              _  = True         match (TVar z)             y = z == y
src/full/Agda/Compiler/Treeless/Pretty.hs view
@@ -1,8 +1,10 @@-+{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -fno-warn-orphans #-}  module Agda.Compiler.Treeless.Pretty () where +import Prelude hiding ((!!)) -- don't use partial functions!+ import Control.Arrow ((&&&), (***), first, second) import Control.Monad.Reader import Data.Maybe@@ -11,7 +13,11 @@ import Agda.Syntax.Treeless import Agda.Compiler.Treeless.Subst import Agda.Utils.Pretty+import Agda.Utils.List +#include "undefined.h"+import Agda.Utils.Impossible+ data PEnv = PEnv { pPrec :: Int                  , pFresh :: [String]                  , pBound :: [String] }@@ -54,7 +60,10 @@ prec p = local $ \ e -> e { pPrec = p }  name :: Int -> P String-name x = asks $ (!! x) . (++ map (("^" ++) . show) [1..]) . pBound+name x = asks+  $ (\ xs -> indexWithDefault __IMPOSSIBLE__ xs x)+  . (++ map (("^" ++) . show) [1..])+  . pBound  runP :: P a -> a runP p = runReader p PEnv{ pPrec = 0, pFresh = names, pBound = [] }@@ -120,9 +129,9 @@                                , pure $ text $ opName op                                , pTerm' r b ]   TApp (TPrim PIf) [a, b, c] ->-    paren 0 $ (\ a b c -> sep [ text "if" <+> a-                              , nest 2 $ text "then" <+> b-                              , nest 2 $ text "else" <+> c ])+    paren 0 $ (\ a b c -> sep [ "if" <+> a+                              , nest 2 $ "then" <+> b+                              , nest 2 $ "else" <+> c ])               <$> pTerm' 0 a               <*> pTerm' 0 b               <*> pTerm c@@ -141,9 +150,9 @@     where       (n, b) = tLamView t   TLet{} -> paren 0 $ withNames (length es) $ \ xs ->-    (\ (binds, b) -> sep [ text "let" <+> vcat [ sep [ text x <+> text "="-                                                     , nest 2 e ] | (x, e) <- binds ]-                              <+> text "in", b ])+    (\ (binds, b) -> sep [ "let" <+> vcat [ sep [ text x <+> "="+                                                , nest 2 e ] | (x, e) <- binds ]+                              <+> "in", b ])       <$> pLets (zip xs es) b     where       (es, b) = tLetView t@@ -155,24 +164,24 @@    TCase x _ def alts -> paren 0 $     (\ sc alts defd ->-      sep [ text "case" <+> sc <+> text "of"-          , nest 2 $ vcat (alts ++ [ text "_ →" <+> defd | null alts || def /= TError TUnreachable ]) ]+      sep [ "case" <+> sc <+> "of"+          , nest 2 $ vcat (alts ++ [ "_ →" <+> defd | null alts || def /= TError TUnreachable ]) ]     ) <$> pTerm' 0 (TVar x)       <*> mapM pAlt alts       <*> pTerm' 0 def     where       pAlt (TALit l b) = pAlt' <$> pTerm' 0 (TLit l) <*> pTerm' 0 b       pAlt (TAGuard g b) =-        pAlt' <$> ((text "_" <+> text "|" <+>) <$> pTerm' 0 g)+        pAlt' <$> (("_" <+> "|" <+>) <$> pTerm' 0 g)               <*> (pTerm' 0 b)       pAlt (TACon c a b) =         withNames' a b $ \ xs -> bindNames xs $         pAlt' <$> pTerm' 0 (TApp (TCon c) [TVar i | i <- reverse [0..a - 1]])               <*> pTerm' 0 b-      pAlt' p b = sep [p <+> text "→", nest 2 b]+      pAlt' p b = sep [p <+> "→", nest 2 b] -  TUnit -> pure $ text "()"-  TSort -> pure $ text "Set"-  TErased -> pure $ text "_"-  TError err -> paren 9 $ pure $ text "error" <+> text (show (show err))-  TCoerce t -> paren 9 $ (text "coe" <+>) <$> pTerm' 10 t+  TUnit -> pure "()"+  TSort -> pure "Set"+  TErased -> pure "_"+  TError err -> paren 9 $ pure $ "error" <+> text (show (show err))+  TCoerce t -> paren 9 $ ("coe" <+>) <$> pTerm' 10 t
+ src/full/Agda/Interaction/AgdaTop.hs view
@@ -0,0 +1,72 @@+module Agda.Interaction.AgdaTop+    ( repl+    ) where++import Control.Monad.State+import Data.Char+import System.IO++import Agda.Interaction.Response as R+import Agda.Interaction.InteractionTop+import Agda.Interaction.Options+import Agda.TypeChecking.Monad+import qualified Agda.TypeChecking.Monad.Benchmark as Bench+import Agda.Utils.Maybe++----------------------------------++-- | 'repl' is a fake ghci interpreter for both the Emacs the JSON frontend+repl :: InteractionOutputCallback -> String -> TCM () -> TCM ()+repl callback prompt setup = do+    liftIO $ do+      hSetBuffering stdout LineBuffering+      hSetBuffering stdin  LineBuffering+      hSetEncoding  stdout utf8+      hSetEncoding  stdin  utf8++    setInteractionOutputCallback callback++    commands <- liftIO $ initialiseCommandQueue readCommand++    handleCommand_ (lift setup) `evalStateT` initCommandState commands++    opts <- commandLineOptions+    _ <- interact' `runStateT`+           (initCommandState commands)+             { optionsOnReload = opts{ optAbsoluteIncludePaths = [] } }+    return ()+  where+  interact' :: CommandM ()+  interact' = do+    Bench.reset+    done <- Bench.billTo [] $ do++      liftIO $ do+        putStr prompt+        hFlush stdout+      r <- maybeAbort runInteraction+      case r of+        Done      -> return True -- Done.+        Error s   -> liftIO (putStrLn s) >> return False+        Command _ -> return False++    lift Bench.print+    unless done interact'++  -- Reads the next command from stdin.++  readCommand :: IO Command+  readCommand = do+    done <- isEOF+    if done then+      return Done+    else do+      r <- getLine+      _ <- return $! length r     -- force to read the full input line+      case dropWhile isSpace r of+        ""          -> readCommand+        ('-':'-':_) -> readCommand+        _           -> case listToMaybe $ reads r of+          Just (x, "")  -> return $ Command x+          Just (_, rem) -> return $ Error $ "not consumed: " ++ rem+          _             -> return $ Error $ "cannot read: " ++ r
src/full/Agda/Interaction/BasicOps.hs view
@@ -1,5 +1,7 @@+{-# LANGUAGE BangPatterns          #-} {-# LANGUAGE CPP                   #-} {-# LANGUAGE UndecidableInstances  #-}+{-# LANGUAGE NondecreasingIndentation #-}  {-# OPTIONS_GHC -fno-warn-orphans #-} @@ -13,6 +15,7 @@ import Control.Monad.State import Control.Monad.Identity +import qualified Data.IntMap as IntMap import qualified Data.Map as Map import qualified Data.Set as Set import qualified Data.List as List@@ -20,6 +23,7 @@ import Data.Traversable hiding (mapM, forM, for) import Data.Monoid +import Agda.Interaction.Options import qualified Agda.Syntax.Concrete as C -- ToDo: Remove with instance of ToConcrete import Agda.Syntax.Position import Agda.Syntax.Abstract as A hiding (Open, Apply, Assign)@@ -49,14 +53,17 @@ import Agda.TypeChecking.Telescope import Agda.TypeChecking.With import Agda.TypeChecking.Coverage+import Agda.TypeChecking.Coverage.Match ( SplitPattern ) import Agda.TypeChecking.Records import Agda.TypeChecking.Irrelevance (wakeIrrelevantVars)-import Agda.TypeChecking.Pretty (prettyTCM)+import Agda.TypeChecking.Pretty ( PrettyTCM, prettyTCM )+import Agda.TypeChecking.Primitive+import Agda.TypeChecking.Names import Agda.TypeChecking.Free import Agda.TypeChecking.CheckInternal import Agda.TypeChecking.SizedTypes.Solve import qualified Agda.TypeChecking.Pretty as TP-import Agda.TypeChecking.Warnings (runPM)+import Agda.TypeChecking.Warnings ( runPM, warning )  import Agda.Termination.TermCheck (termMutual) @@ -103,25 +110,25 @@       metaTypeCheck mv (mvJudgement mv)   where     metaTypeCheck mv IsSort{}      = __IMPOSSIBLE__-    metaTypeCheck mv (HasType _ t) = disableDestructiveUpdate $ do+    metaTypeCheck mv (HasType _ t) = do       reportSDoc "interaction.give" 20 $-        TP.text "give: meta type =" TP.<+> prettyTCM t+        "give: meta type =" TP.<+> prettyTCM t       -- Here, we must be in the same context where the meta was created.       -- Thus, we can safely apply its type to the context variables.       ctx <- getContextArgs       t' <- t `piApplyM` permute (takeP (length ctx) $ mvPermutation mv) ctx-      traceCall (CheckExprCall e t') $ do+      traceCall (CheckExprCall CmpLeq e t') $ do         reportSDoc "interaction.give" 20 $-          TP.text "give: instantiated meta type =" TP.<+> prettyTCM t'+          "give: instantiated meta type =" TP.<+> prettyTCM t'         v <- checkExpr e t'         case mvInstantiation mv of -          InstV xs v' -> unlessM ((Irrelevant ==) <$> asks envRelevance) $ do+          InstV xs v' -> unlessM ((Irrelevant ==) <$> asksTC envRelevance) $ do             reportSDoc "interaction.give" 20 $ TP.sep-              [ TP.text "meta was already set to value v' = " TP.<+> prettyTCM v'-                TP.<+> TP.text " with free variables " TP.<+> return (fsep $ map pretty xs)-              , TP.text "now comparing it to given value v = " TP.<+> prettyTCM v-              , TP.text "in context " TP.<+> inTopContext (prettyTCM ctx)+              [ "meta was already set to value v' = " TP.<+> prettyTCM v'+                TP.<+> " with free variables " TP.<+> return (fsep $ map pretty xs)+              , "now comparing it to given value v = " TP.<+> prettyTCM v+              , "in context " TP.<+> inTopContext (prettyTCM ctx)               ]             -- The number of free variables should be at least the size of the context             -- (Ideally, if we implemented contextual type theory, it should be the same.)@@ -131,7 +138,7 @@             let (_xs1, xs2) = splitAt (size ctx) xs             v' <- return $ foldr mkLam v' xs2             reportSDoc "interaction.give" 20 $ TP.sep-              [ TP.text "in meta context, v' = " TP.<+> prettyTCM v'+              [ "in meta context, v' = " TP.<+> prettyTCM v'               ]             equalTerm t' v v'  -- Note: v' now lives in context of meta @@ -140,13 +147,15 @@             args <- getContextArgs             nowSolvingConstraints $ assign DirEq mi args v -        reportSDoc "interaction.give" 20 $ TP.text "give: meta variable updated!"+        reportSDoc "interaction.give" 20 $ "give: meta variable updated!"         unless (force == WithForce) $ redoChecks mii         wakeupConstraints mi         solveSizeConstraints DontDefaultToInfty-        unless (force == WithForce) $ do+        cubical <- optCubical <$> pragmaOptions+        -- don't double check with cubical, because it gets in the way too often.+        unless (cubical || force == WithForce) $ do           -- Double check.-          reportSDoc "interaction.give" 20 $ TP.text "give: double checking"+          reportSDoc "interaction.give" 20 $ "give: double checking"           vfull <- instantiateFull v           checkInternal vfull t' @@ -161,8 +170,8 @@     IPNoClause -> return ()     IPClause f _ _ -> do       mb <- mutualBlockOf f-      terErrs <- local (\ e -> e { envMutualBlock = Just mb }) $ termMutual []-      unless (null terErrs) $ typeError $ TerminationCheckFailed terErrs+      terErrs <- localTC (\ e -> e { envMutualBlock = Just mb }) $ termMutual []+      unless (null terErrs) $ warning $ TerminationIssue terErrs   -- TODO redo positivity check!  -- | Try to fill hole by expression.@@ -179,7 +188,7 @@   -- if Range is given, update the range of the interaction meta   mi  <- lookupInteractionId ii   whenJust mr $ updateMetaVarRange mi-  reportSDoc "interaction.give" 10 $ TP.text "giving expression" TP.<+> prettyTCM e+  reportSDoc "interaction.give" 10 $ "giving expression" TP.<+> prettyTCM e   reportSDoc "interaction.give" 50 $ TP.text $ show $ deepUnscope e   -- Try to give mi := e   do setMetaOccursCheck mi DontRunMetaOccursCheck -- #589, #2710: Allow giving recursive solutions.@@ -187,7 +196,7 @@     `catchError` \ case       -- Turn PatternErr into proper error:       PatternErr -> typeError . GenericDocError =<< do-        withInteractionId ii $ TP.text "Failed to give" TP.<+> prettyTCM e+        withInteractionId ii $ "Failed to give" TP.<+> prettyTCM e       err -> throwError err   removeInteractionPoint ii   return e@@ -209,7 +218,7 @@   let range = fromMaybe (getRange mv) mr       scope = M.getMetaScope mv   reportSDoc "interaction.refine" 10 $-    TP.text "refining with expression" TP.<+> prettyTCM e+    "refining with expression" TP.<+> prettyTCM e   reportSDoc "interaction.refine" 50 $     TP.text $ show $ deepUnscope e   -- We try to append up to 10 meta variables@@ -243,10 +252,10 @@                 where isX (A.Var y) | x == y = Sum 1                       isX _                  = mempty -              lamView (A.Lam _ (DomainFree _ x) e) = Just (x, e)-              lamView (A.Lam i (DomainFull (TypedBindings r (Arg ai (TBind br (x : xs) a)))) e)-                | null xs   = Just (dget x, e)-                | otherwise = Just (dget x, A.Lam i (DomainFull $ TypedBindings r $ Arg ai $ TBind br xs a) e)+              lamView (A.Lam _ (DomainFree x) e) = Just (namedArg x, e)+              lamView (A.Lam i (DomainFull (TBind r (x : xs) a)) e)+                | null xs   = Just (namedArg x, e)+                | otherwise = Just (namedArg x, A.Lam i (DomainFull $ TBind r xs a) e)               lamView _ = Nothing                -- reduce beta-redexes where the argument is used at most once@@ -321,7 +330,7 @@ showComputed UseShowInstance e =   case e of     A.Lit (LitString _ s) -> pure (text s)-    _                     -> (text "Not a string:" $$) <$> prettyATop e+    _                     -> ("Not a string:" $$) <$> prettyATop e showComputed _ e = prettyATop e  -- | Modifier for interactive commands,@@ -345,8 +354,9 @@       | Assign b a | TypedAssign b a a | PostponedCheckArgs b [a] a a       | IsEmptyType a       | SizeLtSat a-      | FindInScopeOF b a [(a,a)]+      | FindInstanceOF b a [(a,a)]       | PTSInstance b b+      | PostponedCheckFunDef QName a   deriving (Functor)  -- | A subset of 'OutputConstraint'.@@ -375,14 +385,16 @@       PostponedCheckArgs i _ _ _ -> i       IsEmptyType _              -> __IMPOSSIBLE__   -- Should never be used on IsEmpty constraints       SizeLtSat{}                -> __IMPOSSIBLE__-      FindInScopeOF _ _ _        -> __IMPOSSIBLE__+      FindInstanceOF _ _ _        -> __IMPOSSIBLE__       PTSInstance i _            -> i+      PostponedCheckFunDef{}     -> __IMPOSSIBLE__  instance Reify ProblemConstraint (Closure (OutputForm Expr Expr)) where   reify (PConstr pids cl) = enterClosure cl $ \c -> buildClosure =<< (OutputForm (getRange c) (Set.toList pids) <$> reify c)  reifyElimToExpr :: I.Elim -> TCM Expr reifyElimToExpr e = case e of+    I.IApply _ _ v -> appl "iapply" <$> reify (defaultArg $ v) -- TODO Andrea: endpoints?     I.Apply v -> appl "apply" <$> reify v     I.Proj _o f -> appl "proj" <$> reify ((defaultArg $ I.Def f []) :: Arg Term)   where@@ -391,6 +403,13 @@  instance Reify Constraint (OutputConstraint Expr Expr) where     reify (ValueCmp cmp t u v)   = CmpInType cmp <$> reify t <*> reify u <*> reify v+    reify (ValueCmpOnFace cmp p t u v) = CmpInType cmp <$> (reify =<< ty) <*> reify (lam_o u) <*> reify (lam_o v)+      where+        lam_o = I.Lam (setRelevance Irrelevant defaultArgInfo) . NoAbs "_"+        ty = runNamesT [] $ do+          p <- open p+          t <- open t+          pPi' "o" p (\ o -> t)     reify (ElimCmp cmp _ t v es1 es2) =       CmpElim cmp <$> reify t <*> mapM reifyElimToExpr es1                               <*> mapM reifyElimToExpr es2@@ -401,6 +420,9 @@     reify (Guarded c pid) = do         o  <- reify c         return $ Guard o pid+    reify (UnquoteTactic _ tac _ goal) = do+        tac <- A.App defaultAppInfo_ (A.Unquote exprNoRange) . defaultNamedArg <$> reify tac+        OfType tac <$> reify goal     reify (UnBlock m) = do         mi <- mvInstantiation <$> lookupMeta m         m' <- reify (MetaV m [])@@ -409,80 +431,82 @@             e  <- reify t             return $ Assign m' e           PostponedTypeCheckingProblem cl _ -> enterClosure cl $ \p -> case p of-            CheckExpr e a -> do+            CheckExpr cmp e a -> do                 a  <- reify a                 return $ TypedAssign m' e a-            CheckLambda (Arg ai (xs, mt)) body target -> do+            CheckLambda cmp (Arg ai (xs, mt)) body target -> do               domType <- maybe (return underscore) reify mt               target  <- reify target-              let bs = TypedBindings noRange $ Arg ai $-                       TBind noRange (map (fmap A.BindName) xs) domType+              let mkN (WithHiding h x) = setHiding h $ defaultNamedArg $ A.BindName x+                  bs = TBind noRange (map mkN xs) domType                   e  = A.Lam Info.exprNoRange (DomainFull bs) body               return $ TypedAssign m' e target             CheckArgs _ _ args t0 t1 _ -> do               t0 <- reify t0               t1 <- reify t1               return $ PostponedCheckArgs m' (map (namedThing . unArg) args) t0 t1-            UnquoteTactic tac _ goal -> do-              tac <- A.App defaultAppInfo_ (A.Unquote exprNoRange) . defaultNamedArg <$> reify tac-              OfType tac <$> reify goal+            CheckProjAppToKnownPrincipalArg cmp e _ _ _ t _ _ _ -> TypedAssign m' e <$> reify t+            DoQuoteTerm cmp v t -> do+              tm <- A.App defaultAppInfo_ (A.QuoteTerm exprNoRange) . defaultNamedArg <$> reify v+              OfType tm <$> reify t           Open{}  -> __IMPOSSIBLE__-          OpenIFS{}  -> __IMPOSSIBLE__+          OpenInstance{}  -> __IMPOSSIBLE__           InstV{} -> __IMPOSSIBLE__-    reify (FindInScope m _b mcands) = FindInScopeOF+    reify (FindInstance m _b mcands) = FindInstanceOF       <$> (reify $ MetaV m [])       <*> (reify =<< getMetaType m)-      <*> (forM (fromMaybe [] mcands) $ \ (Candidate tm ty eti _) -> do+      <*> (forM (fromMaybe [] mcands) $ \ (Candidate tm ty _) -> do             (,) <$> reify tm <*> reify ty)     reify (IsEmpty r a) = IsEmptyType <$> reify a     reify (CheckSizeLtSat a) = SizeLtSat  <$> reify a-    reify (CheckFunDef d i q cs) = __IMPOSSIBLE__+    reify (CheckFunDef d i q cs) = do+      a <- reify =<< defType <$> getConstInfo q+      return $ PostponedCheckFunDef q a     reify (HasBiggerSort a) = OfType <$> reify a <*> reify (UnivSort a)     reify (HasPTSRule a b) = do       (a,(x,b)) <- reify (a,b)       return $ PTSInstance a b --- ASR TODO (28 December 2014): This function will be unnecessary when--- using a Pretty instance for OutputConstraint instead of the Show--- instance.-showComparison :: Comparison -> String-showComparison cmp = " " ++ prettyShow cmp ++ " "+instance (Pretty a, Pretty b) => Pretty (OutputForm a b) where+  pretty (OutputForm r pids c)+    | null pids = sep [pretty c, prange r]+    | otherwise = sep [pretty pids, nest 2 $ sep [pretty c, prange r]]+    where+      prange r | null s = empty+               | otherwise = text $ " [ at " ++ s ++ " ]"+        where s = prettyShow r -instance (Show a,Show b) => Show (OutputForm a b) where-  show o =-    case o of-      OutputForm r []   c -> show c ++ range r-      OutputForm r pids c -> show pids ++ " " ++ show c ++ range r+instance (Pretty a, Pretty b) => Pretty (OutputConstraint a b) where+  pretty oc =+    case oc of+      OfType e t           -> pretty e .: t+      JustType e           -> "Type" <+> pretty e+      JustSort e           -> "Sort" <+> pretty e+      CmpInType cmp t e e' -> pcmp cmp e e' .: t+      CmpElim cmp t e e'   -> pcmp cmp e e' .: t+      CmpTypes  cmp t t'   -> pcmp cmp t t'+      CmpLevels cmp t t'   -> pcmp cmp t t'+      CmpTeles  cmp t t'   -> pcmp cmp t t'+      CmpSorts cmp s s'    -> pcmp cmp s s'+      Guard o pid          -> pretty o <?> brackets ("blocked by problem" <+> pretty pid)+      Assign m e           -> bin (pretty m) ":=" (pretty e)+      TypedAssign m e a    -> bin (pretty m) ":=" $ bin (pretty e) ":?" (pretty a)+      PostponedCheckArgs m es t0 t1 ->+        bin (pretty m) ":=" $ (parens ("_" .: t0) <+> fsep (map (paren . pretty) es)) .: t1+        where paren d = mparens (any (`elem` [' ', '\n']) $ show d) d+      IsEmptyType a        -> "Is empty:" <+> pretty a+      SizeLtSat a          -> "Not empty type of sizes:" <+> pretty a+      FindInstanceOF s t cs -> vcat+        [ "Resolve instance argument" <?> (pretty s .: t)+        , nest 2 $ "Candidate:"+        , nest 4 $ vcat [ pretty v .: t | (v, t) <- cs ] ]+      PTSInstance a b      -> "PTS instance for" <+> pretty (a, b)+      PostponedCheckFunDef q a -> "Check definition of" <+> pretty q <+> ":" <+> pretty a     where-      range r | null s    = ""-              | otherwise = " [ at " ++ s ++ " ]"-        where s = show r+      bin a op b = sep [a, nest 2 $ op <+> b]+      pcmp cmp a b = bin (pretty a) (pretty cmp) (pretty b)+      val .: ty = bin val ":" (pretty ty) -instance (Show a,Show b) => Show (OutputConstraint a b) where-    show (OfType e t)           = show e ++ " : " ++ show t-    show (JustType e)           = "Type " ++ show e-    show (JustSort e)           = "Sort " ++ show e-    show (CmpInType cmp t e e') = show e ++ showComparison cmp ++ show e' ++ " : " ++ show t-    show (CmpElim cmp t e e')   = show e ++ " == " ++ show e' ++ " : " ++ show t-    show (CmpTypes  cmp t t')   = show t ++ showComparison cmp ++ show t'-    show (CmpLevels cmp t t')   = show t ++ showComparison cmp ++ show t'-    show (CmpTeles  cmp t t')   = show t ++ showComparison cmp ++ show t'-    show (CmpSorts cmp s s')    = show s ++ showComparison cmp ++ show s'-    show (Guard o pid)          = show o ++ " [blocked by problem " ++ prettyShow pid ++ "]"-    show (Assign m e)           = show m ++ " := " ++ show e-    show (TypedAssign m e a)    = show m ++ " := " ++ show e ++ " :? " ++ show a-    show (PostponedCheckArgs m es t0 t1) = show m ++ " := (_ : " ++ show t0 ++ ") " ++ unwords (map (paren . show) es)-                                                  ++ " : " ++ show t1-      where paren s | elem ' ' s = "(" ++ s ++ ")"-                    | otherwise  = s-    show (IsEmptyType a)        = "Is empty: " ++ show a-    show (SizeLtSat a)          = "Not empty type of sizes: " ++ show a-    show (FindInScopeOF s t cs) = "Resolve instance argument " ++ showCand (s,t) ++ ".\n  Candidates:\n    [ " ++-                                    List.intercalate "\n    , " (map showCand cs) ++ " ]"-      where-      showCand (tm,ty) = indent 6 $ show tm ++ " : " ++ show ty-      indent n s = List.intercalate ("\n" ++ replicate n ' ') $ lines s-    show (PTSInstance a b)      = "PTS instance for " ++ show (a,b)  instance (ToConcrete a c, ToConcrete b d) =>          ToConcrete (OutputForm a b) (OutputForm c d) where@@ -513,13 +537,14 @@       PostponedCheckArgs <$> toConcrete m <*> toConcrete args <*> toConcrete t0 <*> toConcrete t1     toConcrete (IsEmptyType a) = IsEmptyType <$> toConcreteCtx TopCtx a     toConcrete (SizeLtSat a) = SizeLtSat <$> toConcreteCtx TopCtx a-    toConcrete (FindInScopeOF s t cs) =-      FindInScopeOF <$> toConcrete s <*> toConcrete t-                    <*> mapM (\(tm,ty) -> (,) <$> toConcrete tm <*> toConcrete ty) cs+    toConcrete (FindInstanceOF s t cs) =+      FindInstanceOF <$> toConcrete s <*> toConcrete t+                     <*> mapM (\(tm,ty) -> (,) <$> toConcrete tm <*> toConcrete ty) cs     toConcrete (PTSInstance a b) = PTSInstance <$> toConcrete a <*> toConcrete b+    toConcrete (PostponedCheckFunDef q a) = PostponedCheckFunDef q <$> toConcrete a  instance (Pretty a, Pretty b) => Pretty (OutputConstraint' a b) where-  pretty (OfType' e t) = pretty e <+> text ":" <+> pretty t+  pretty (OfType' e t) = pretty e <+> ":" <+> pretty t  instance (ToConcrete a c, ToConcrete b d) =>             ToConcrete (OutputConstraint' a b) (OutputConstraint' c d) where@@ -566,7 +591,7 @@         case mvInstantiation mv of           InstV{}                        -> sol (MetaV m $ map Apply args)           Open{}                         -> unsol-          OpenIFS{}                      -> unsol+          OpenInstance{}                 -> unsol           BlockedConst{}                 -> unsol           PostponedTypeCheckingProblem{} -> unsol @@ -580,21 +605,25 @@                    TCM (OutputConstraint Expr NamedMeta)     rewriteJudg mv (HasType i t) = do       ms <- getMetaNameSuggestion i-      t <- normalForm norm t+      -- Andreas, 2019-03-17, issue #3638:+      -- Need to put meta type into correct context _before_ normalizing,+      -- otherwise rewrite rules in parametrized modules will not fire.       vs <- getContextArgs+      t <- t `piApplyM` permute (takeP (size vs) $ mvPermutation mv) vs+      t <- normalForm norm t       let x = NamedMeta ms i       reportSDoc "interactive.meta" 10 $ TP.vcat         [ TP.text $ unwords ["permuting", show i, "with", show $ mvPermutation mv]         , TP.nest 2 $ TP.vcat-          [ TP.text "len  =" TP.<+> TP.text (show $ length vs)-          , TP.text "args =" TP.<+> prettyTCM vs-          , TP.text "t    =" TP.<+> prettyTCM t-          , TP.text "x    =" TP.<+> TP.pretty x+          [ "len  =" TP.<+> TP.text (show $ length vs)+          , "args =" TP.<+> prettyTCM vs+          , "t    =" TP.<+> prettyTCM t+          , "x    =" TP.<+> TP.pretty x           ]         ]       reportSDoc "interactive.meta.scope" 20 $ TP.text $ show $ getMetaScope mv       -- Andreas, 2016-01-19, issue #1783: need piApplyM instead of just piApply-      OfType x <$> do reify =<< t `piApplyM` permute (takeP (size vs) $ mvPermutation mv) vs+      OfType x <$> reify t     rewriteJudg mv (IsSort i t) = do       ms <- getMetaNameSuggestion i       return $ JustSort $ NamedMeta ms i@@ -613,14 +642,14 @@ typesOfHiddenMetas :: Rewrite -> TCM [OutputConstraint Expr NamedMeta] typesOfHiddenMetas norm = liftTCM $ do   is    <- getInteractionMetas-  store <- Map.filterWithKey (openAndImplicit is) <$> getMetaStore-  mapM (typeOfMetaMI norm) $ Map.keys store+  store <- IntMap.filterWithKey (openAndImplicit is . MetaId) <$> getMetaStore+  mapM (typeOfMetaMI norm . MetaId) $ IntMap.keys store   where   openAndImplicit is x m =     case mvInstantiation m of       M.InstV{} -> False       M.Open    -> x `notElem` is-      M.OpenIFS -> x `notElem` is  -- OR: True !?+      M.OpenInstance -> x `notElem` is  -- OR: True !?       M.BlockedConst{} -> True       M.PostponedTypeCheckingProblem{} -> False @@ -641,19 +670,19 @@       TelV atel _ <- telView a       let arity = size atel           (delta1, delta2, _, a', as', vs') = splitTelForWith tel a (map OtherType as) vs-      a <- local (\e -> e { envPrintDomainFreePi = True }) $ do+      a <- localTC (\e -> e { envPrintDomainFreePi = True }) $ do         reify =<< cleanupType arity args =<< normalForm norm =<< fst <$> withFunctionType delta1 vs' as' delta2 a'       reportSDoc "interaction.helper" 10 $ TP.vcat-        [ TP.text "generating helper function"-        , TP.nest 2 $ TP.text "tel    = " TP.<+> inTopContext (prettyTCM tel)-        , TP.nest 2 $ TP.text "a      = " TP.<+> prettyTCM a-        , TP.nest 2 $ TP.text "vs     = " TP.<+> prettyTCM vs-        , TP.nest 2 $ TP.text "as     = " TP.<+> prettyTCM as-        , TP.nest 2 $ TP.text "delta1 = " TP.<+> inTopContext (prettyTCM delta1)-        , TP.nest 2 $ TP.text "delta2 = " TP.<+> inTopContext (addContext delta1 $ prettyTCM delta2)-        , TP.nest 2 $ TP.text "a'     = " TP.<+> inTopContext (addContext delta1 $ addContext delta2 $ prettyTCM a')-        , TP.nest 2 $ TP.text "as'    = " TP.<+> inTopContext (addContext delta1 $ prettyTCM as')-        , TP.nest 2 $ TP.text "vs'    = " TP.<+> inTopContext (addContext delta1 $ prettyTCM vs')+        [ "generating helper function"+        , TP.nest 2 $ "tel    = " TP.<+> inTopContext (prettyTCM tel)+        , TP.nest 2 $ "a      = " TP.<+> prettyTCM a+        , TP.nest 2 $ "vs     = " TP.<+> prettyTCM vs+        , TP.nest 2 $ "as     = " TP.<+> prettyTCM as+        , TP.nest 2 $ "delta1 = " TP.<+> inTopContext (prettyTCM delta1)+        , TP.nest 2 $ "delta2 = " TP.<+> inTopContext (addContext delta1 $ prettyTCM delta2)+        , TP.nest 2 $ "a'     = " TP.<+> inTopContext (addContext delta1 $ addContext delta2 $ prettyTCM a')+        , TP.nest 2 $ "as'    = " TP.<+> inTopContext (addContext delta1 $ prettyTCM as')+        , TP.nest 2 $ "vs'    = " TP.<+> inTopContext (addContext delta1 $ prettyTCM vs')         ]       return (OfType' h a)   where@@ -719,6 +748,7 @@       I.Sort{}     -> pure v       I.Level{}    -> pure v       I.MetaV{}    -> pure v+      I.Dummy{}    -> pure v     onNamesElims f = traverse $ traverse $ onNamesTm f     onNamesArgs f  = traverse $ traverse $ onNamesTm f     onNamesAbs f   = onNamesAbs' f (stringToArgName <.> f . argNameToString)@@ -728,9 +758,8 @@     unW "w" = return ".w"     unW s   = return s -    renameVar ('.':s) = pure s-    renameVar "w"     = betterName-    renameVar s       = pure s+    renameVar "w" = betterName+    renameVar s   = pure s      betterName = do       arg : args <- get@@ -751,15 +780,14 @@     let n         = length cxt         localVars = zipWith raise [1..] cxt         mkLet (x, lb) = do-          (tm, Dom c ty) <- getOpen lb-          return $ Dom c (x, ty)-    letVars <- mapM mkLet . Map.toDescList =<< asks envLetBindings-    gfilter visible . reverse <$> mapM out (letVars ++ localVars)-  where gfilter p = catMaybes . map p-        visible (OfType x y) | not (isNoName x) = Just (OfType' x y)+          (tm, !dom) <- getOpen lb+          return $ (,) x <$> dom+    letVars <- mapM mkLet . Map.toDescList =<< asksTC envLetBindings+    mapMaybe visible . reverse <$> mapM out (letVars ++ localVars)+  where visible (OfType x y) | not (isNoName x) = Just (OfType' x y)                              | otherwise        = Nothing         visible _            = __IMPOSSIBLE__-        out (Dom _ (x, t)) = do+        out (Dom{unDom = (x, t)}) = do           t' <- reify =<< normalForm norm t           return $ OfType x t' @@ -792,11 +820,12 @@   mv <- lookupMeta m   withMetaInfo' mv ret --- The intro tactic-+-- | The intro tactic.+-- -- Returns the terms (as strings) that can be -- used to refine the goal. Uses the coverage checker -- to find out which constructors are possible.+-- introTactic :: Bool -> InteractionId -> TCM [String] introTactic pmLambda ii = do   mi <- lookupInteractionId ii@@ -809,11 +838,12 @@         TelV tel' t <- telViewUpTo' (-1) notVisible t         -- if we cannot introduce a constructor, we try a lambda         let fallback = do-              TelV tel _ <- telView t+              cubical <- optCubical <$> pragmaOptions+              TelV tel _ <- (if cubical then telViewPath else telView) t               reportSDoc "interaction.intro" 20 $ TP.sep-                [ TP.text "introTactic/fallback"-                , TP.text "tel' = " TP.<+> prettyTCM tel'-                , TP.text "tel  = " TP.<+> prettyTCM tel+                [ "introTactic/fallback"+                , "tel' = " TP.<+> prettyTCM tel'+                , "tel  = " TP.<+> prettyTCM tel                 ]               case (tel', tel) of                 (EmptyTel, EmptyTel) -> return []@@ -832,13 +862,16 @@      `catchError` \_ -> return []     _ -> __IMPOSSIBLE__   where+    conName :: [NamedArg SplitPattern] -> [I.ConHead]     conName [p] = [ c | I.ConP c _ _ <- [namedArg p] ]     conName _   = __IMPOSSIBLE__ -    showTCM v = show <$> prettyTCM v+    showTCM :: PrettyTCM a => a -> TCM String+    showTCM v = render <$> prettyTCM v +    introFun :: ListTel -> TCM [String]     introFun tel = addContext tel' $ do-        reportSDoc "interaction.intro" 10 $ do TP.text "introFun" TP.<+> prettyTCM (telFromList tel)+        reportSDoc "interaction.intro" 10 $ do "introFun" TP.<+> prettyTCM (telFromList tel)         imp <- showImplicitArguments         let okHiding0 h = imp || h == NotHidden             -- if none of the vars were displayed, we would get a parse error@@ -861,6 +894,7 @@         makeName ("_", t) = ("x", t)         makeName (x, t)   = (x, t) +    introData :: I.Type -> TCM [String]     introData t = do       let tel  = telFromList [defaultDom ("_", t)]           pat  = [defaultArg $ unnamed $ debruijnNamedVar "c" 0]@@ -878,6 +912,10 @@       let e = C.Rec noRange $ for fs $ \ f ->             Left $ C.FieldAssignment f $ C.QuestionMark noRange Nothing       return [ prettyShow e ]+      -- Andreas, 2019-02-25, remark:+      -- prettyShow is ok here since we are just printing something like+      -- record { f1 = ? ; ... ; fn = ?}+      -- which does not involve any qualified names, and the fi are C.Name.  -- | Runs the given computation as if in an anonymous goal at the end --   of the top-level module.@@ -886,7 +924,7 @@ atTopLevel :: TCM a -> TCM a atTopLevel m = inConcreteMode $ do   let err = typeError $ GenericError "The file has not been loaded yet."-  caseMaybeM (use stCurrentModule) err $ \ current -> do+  caseMaybeM (useTC stCurrentModule) err $ \ current -> do     caseMaybeM (getVisitedModule $ toTopLevelModuleName current) __IMPOSSIBLE__ $ \ mi -> do       let scope = iInsideScope $ miInterface mi       tel <- lookupSection current@@ -918,17 +956,17 @@           gamma = fromMaybe __IMPOSSIBLE__ $                     zipWith' (\ x dom -> (x,) <$> dom) names types       reportSDoc "interaction.top" 20 $ TP.vcat-        [ TP.text "BasicOps.atTopLevel"-        , TP.text "  names = " TP.<+> TP.sep (map prettyA   names)-        , TP.text "  types = " TP.<+> TP.sep (map prettyTCM types)+        [ "BasicOps.atTopLevel"+        , "  names = " TP.<+> TP.sep (map prettyA   names)+        , "  types = " TP.<+> TP.sep (map prettyTCM types)         ]       M.withCurrentModule current $         withScope_ scope $           addContext gamma $ do             -- We're going inside the top-level module, so we have to set the             -- checkpoint for it and all its submodules to the new checkpoint.-            cp <- view eCurrentCheckpoint-            stModuleCheckpoints %= fmap (const cp)+            cp <- viewTC eCurrentCheckpoint+            stModuleCheckpoints `modifyTCLens` fmap (const cp)             m  -- | Parse a name.@@ -958,8 +996,10 @@      -- ^ The range of the next argument.   -> String      -- ^ The module name.-  -> TCM ([C.Name], [(C.Name, Type)])-     -- ^ Module names, names paired up with corresponding types.+  -> TCM ([C.Name], I.Telescope, [(C.Name, Type)])+     -- ^ Module names,+     --   context extension needed to print types,+     --   names paired up with corresponding types.  moduleContents norm rng s = traceCall ModuleContents $ do   e <- parseExpr rng s@@ -978,19 +1018,31 @@ getRecordContents   :: Rewrite  -- ^ Amount of normalization in types.   -> C.Expr   -- ^ Expression presumably of record type.-  -> TCM ([C.Name], [(C.Name, Type)])-              -- ^ Module names, names paired up with corresponding types.+  -> TCM ([C.Name], I.Telescope, [(C.Name, Type)])+              -- ^ Module names,+              --   context extension,+              --   names paired up with corresponding types. getRecordContents norm ce = do   e <- toAbstract ce   (_, t) <- inferExpr e   let notRecordType = typeError $ ShouldBeRecordType t   (q, vs, defn) <- fromMaybeM notRecordType $ isRecordType t   case defn of-    Record{ recFields = fs, recTel = tel } -> do+    Record{ recFields = fs, recTel = rtel } -> do       let xs   = map (nameConcrete . qnameName . unArg) fs-          doms = telToList $ apply tel vs-      ts <- mapM (normalForm norm) $ map (snd . unDom) doms-      return ([], zip xs ts)+          tel  = apply rtel vs+          doms = flattenTel tel+      -- Andreas, 2019-04-10, issue #3687: use flattenTel+      -- to bring types into correct scope.+      reportSDoc "interaction.contents.record" 20 $ TP.vcat+        [ "getRecordContents"+        , "  cxt  = " TP.<+> (prettyTCM =<< getContextTelescope)+        , "  tel  = " TP.<+> prettyTCM tel+        , "  doms = " TP.<+> prettyTCM doms+        , "  doms'= " TP.<+> (addContext tel $ prettyTCM doms)+        ]+      ts <- mapM (normalForm norm . unDom) doms+      return ([], tel, zip xs ts)     _ -> __IMPOSSIBLE__  -- | Returns the contents of the given module.@@ -998,8 +1050,10 @@ getModuleContents   :: Rewrite  -- ^ Amount of normalization in types.   -> C.QName  -- ^ Module name.-  -> TCM ([C.Name], [(C.Name, Type)])-              -- ^ Module names, names paired up with corresponding types.+  -> TCM ([C.Name], I.Telescope, [(C.Name, Type)])+              -- ^ Module names,+              --   context extension,+              --   names paired up with corresponding types. getModuleContents norm m = do   modScope <- getNamedScope . amodName =<< resolveModule m   let modules :: ThingsInScope AbstractModule@@ -1011,7 +1065,7 @@     d <- getConstInfo $ anameName n     t <- normalForm norm =<< (defType <$> instantiateDef d)     return (x, t)-  return (Map.keys modules, types)+  return (Map.keys modules, EmptyTel, types)   whyInScope :: String -> TCM (Maybe LocalVar, [AbstractName], [AbstractModule])
src/full/Agda/Interaction/CommandLine.hs view
@@ -20,8 +20,6 @@ import Agda.Syntax.Translation.ConcreteToAbstract import Agda.Syntax.Abstract.Pretty -import Text.PrettyPrint- import Agda.TheTypeChecker import Agda.TypeChecking.Constraints import Agda.TypeChecking.Monad@@ -33,6 +31,7 @@  import Agda.Utils.Except ( MonadError(catchError) ) import Agda.Utils.Monad+import Agda.Utils.Pretty  #include "undefined.h" import Agda.Utils.Impossible@@ -52,7 +51,7 @@     where         go (Return x)       = return x         go Continue         = loop-        go (ContinueIn env) = local (const env) loop+        go (ContinueIn env) = localTC (const env) loop          loop =             do  ms <- readline prompt@@ -101,7 +100,7 @@             [ "quit"        |>  \_ -> return $ Return ()             , "?"           |>  \_ -> continueAfter $ liftIO $ help commands             , "reload"      |>  \_ -> do reload-                                         ContinueIn <$> ask+                                         ContinueIn <$> askTC             , "constraints" |> \args -> continueAfter $ showConstraints args             , "Context"     |> \args -> continueAfter $ showContext args             , "give"        |> \args -> continueAfter $ giveMeta args@@ -125,7 +124,7 @@ withCurrentFile :: TCM a -> TCM a withCurrentFile cont = do   mpath <- getInputFile'-  local (\ e -> e { envCurrentPath = mpath }) cont+  localTC (\ e -> e { envCurrentPath = mpath }) cont  loadFile :: TCM () -> [String] -> TCM () loadFile reload [file] = do@@ -136,7 +135,7 @@ showConstraints :: [String] -> TCM () showConstraints [] =     do  cs <- BasicOps.getConstraints-        liftIO $ putStrLn $ unlines (List.map show cs)+        liftIO $ putStrLn $ unlines (List.map prettyShow cs) showConstraints _ = liftIO $ putStrLn ":constraints [cid]"  @@ -146,22 +145,22 @@         withInteractionId i $ do           s <- typeOfMeta AsIs i           r <- getInteractionRange i-          d <- showA s-          liftIO $ putStrLn $ d ++ " " ++ show r+          d <- prettyA s+          liftIO $ putStrLn $ show d ++ " " ++ show r showMetas [m,"normal"] =     do  i <- InteractionId <$> readM m         withInteractionId i $ do-          s <- showA =<< typeOfMeta Normalised i+          s <- prettyA =<< typeOfMeta Normalised i           r <- getInteractionRange i-          liftIO $ putStrLn $ s ++ " " ++ show r+          liftIO $ putStrLn $ show s ++ " " ++ show r showMetas [] =     do  interactionMetas <- typesOfVisibleMetas AsIs         hiddenMetas      <- typesOfHiddenMetas  AsIs-        mapM_ (liftIO . putStrLn) =<< mapM showII interactionMetas+        mapM_ (liftIO . print) =<< mapM showII interactionMetas         mapM_ print' hiddenMetas     where-        showII o = withInteractionId (outputFormId $ OutputForm noRange [] o) $ showA o-        showM  o = withMetaId (nmid $ outputFormId $ OutputForm noRange [] o) $ showA o+        showII o = withInteractionId (outputFormId $ OutputForm noRange [] o) $ prettyA o+        showM  o = withMetaId (nmid $ outputFormId $ OutputForm noRange [] o) $ prettyA o          metaId (OfType i _) = i         metaId (JustType i) = i@@ -171,7 +170,7 @@         print' x = do             r <- getMetaRange $ nmid $ metaId x             d <- showM x-            liftIO $ putStrLn $ d ++ "  [ at " ++ show r ++ " ]"+            liftIO $ putStrLn $ show d ++ "  [ at " ++ show r ++ " ]" showMetas _ = liftIO $ putStrLn $ ":meta [metaid]"  @@ -274,7 +273,7 @@                     ["normal"] -> normalise $ raise n t                     _          -> return $ raise n t             d <- prettyTCM t-            liftIO $ print $ text (I.argNameToString x) <+> text ":" <+> d+            liftIO $ print $ text (I.argNameToString x) <+> ":" <+> d showContext _ = liftIO $ putStrLn ":Context meta"  -- | The logo that prints when Agda is started in interactive mode.
src/full/Agda/Interaction/EmacsCommand.hs view
@@ -9,7 +9,6 @@   , response   , putResponse   , display_info'-  , display_warning   , clearRunningInfo   , clearWarning   , displayRunningInfo@@ -39,9 +38,9 @@  instance Pretty a => Pretty (Lisp a) where   pretty (A a )     = pretty a-  pretty (Cons a b) = parens (pretty a <+> text "." <+> pretty b)+  pretty (Cons a b) = parens (pretty a <+> "." <+> pretty b)   pretty (L xs)     = parens (hsep (map pretty xs))-  pretty (Q x)      = text "'" <> pretty x+  pretty (Q x)      = "'" <> pretty x  instance Show (Lisp String) where   showsPrec _ (A a)      = showString a@@ -82,9 +81,6 @@  display_info' :: Bool -> String -> String -> Lisp String display_info' = displayInBuffer "agda2-info-action"--display_warning :: String -> String -> Lisp String-display_warning = displayInBuffer "agda2-warning-action" False  ------------------------------------------------------------------------ -- Running info
src/full/Agda/Interaction/EmacsTop.hs view
@@ -3,30 +3,22 @@ module Agda.Interaction.EmacsTop     ( mimicGHCi     ) where-import Control.Monad.State -import Data.Char+import Control.Monad.State import qualified Data.List as List-import Data.Maybe -import System.IO--import Agda.Utils.Monad import Agda.Utils.Maybe import Agda.Utils.Pretty import Agda.Utils.String  import Agda.Syntax.Common- import Agda.TypeChecking.Monad-import qualified Agda.TypeChecking.Monad.Benchmark as Bench +import Agda.Interaction.AgdaTop import Agda.Interaction.Response as R-import Agda.Interaction.InteractionTop import Agda.Interaction.EmacsCommand hiding (putResponse) import Agda.Interaction.Highlighting.Emacs import Agda.Interaction.Highlighting.Precise (TokenBased(..))-import Agda.Interaction.Options  import Agda.VersionCommit @@ -37,64 +29,8 @@ -- --   'mimicGHCi' reads the Emacs frontend commands from stdin, --   interprets them and print the result into stdout.- mimicGHCi :: TCM () -> TCM ()-mimicGHCi setup = do-    liftIO $ do-      hSetBuffering stdout LineBuffering-      hSetBuffering stdin  LineBuffering-      hSetEncoding  stdout utf8-      hSetEncoding  stdin  utf8--    setInteractionOutputCallback $-        mapM_ print <=< lispifyResponse--    commands <- liftIO $ initialiseCommandQueue readCommand--    handleCommand_ (lift setup) `evalStateT` initCommandState commands--    opts <- commandLineOptions-    _ <- interact' `runStateT`-           (initCommandState commands)-             { optionsOnReload = opts{ optAbsoluteIncludePaths = [] } }-    return ()-  where-  interact' :: CommandM ()-  interact' = do-    Bench.reset-    done <- Bench.billTo [] $ do--      liftIO $ do-        putStr "Agda2> "-        hFlush stdout-      c <- nextCommand-      case c of-        Done      -> return True -- Done.-        Error s   -> liftIO (putStrLn s) >> return False-        Command c -> do-          maybeAbort (runInteraction c)-          return False--    lift Bench.print-    unless done interact'--  -- Reads the next command from stdin.--  readCommand :: IO Command-  readCommand = do-    done <- isEOF-    if done then-      return Done-    else do-      r <- getLine-      _ <- return $! length r     -- force to read the full input line-      case dropWhile isSpace r of-        ""          -> readCommand-        ('-':'-':_) -> readCommand-        _           -> case listToMaybe $ reads r of-          Just (x, "")  -> return $ Command x-          Just (_, rem) -> return $ Error $ "not consumed: " ++ rem-          _             -> return $ Error $ "cannot read: " ++ r+mimicGHCi = repl (liftIO . mapM_ print <=< liftIO . lispifyResponse) "Agda2> "  -- | Given strings of goals, warnings and errors, return a pair of the --   body and the title for the info buffer@@ -106,17 +42,17 @@     isE = not $ null e     title = List.intercalate "," $ catMaybes               [ " Goals"    <$ guard isG-              , " Warnings" <$ guard isW               , " Errors"   <$ guard isE+              , " Warnings" <$ guard isW               , " Done"     <$ guard (not (isG || isW || isE))               ]      body = List.intercalate "\n" $ catMaybes              [ g                    <$ guard isG-             , delimiter "Warnings" <$ guard (isW && (isG || isE))-             , w                    <$ guard isW              , delimiter "Errors"   <$ guard (isE && (isG || isW))              , e                    <$ guard isE+             , delimiter "Warnings" <$ guard (isW && (isG || isE))+             , w                    <$ guard isW              ]  -- | Convert Response to an elisp value for the interactive emacs frontend.@@ -132,9 +68,6 @@       where (body, title) = formatWarningsAndErrors g w e     Info_Auto s -> f s "*Auto*"     Info_Error s -> f s "*Error*"-    -- FNF: if Info_Warning comes back into use, the above should be-    -- clearWarning : f s "*Error*"-    --Info_Warning s -> [ display_warning "*Errors*" s ] -- FNF: currently unused     Info_Time s -> f (render s) "*Time*"     Info_NormalForm s -> f (render s) "*Normal Form*"   -- show?     Info_InferredType s -> f (render s) "*Inferred Type*"@@ -162,8 +95,6 @@          ] lispifyResponse Resp_DoneAborting = return [ L [ A "agda2-abort-done" ] ] lispifyResponse Resp_ClearRunningInfo = return [ clearRunningInfo ]--- FNF: if Info_Warning comes back into use, the above should be--- return [ clearRunningInfo, clearWarning ] lispifyResponse (Resp_RunningInfo n s)   | n <= 1    = return [ displayRunningInfo s ]   | otherwise = return [ L [A "agda2-verbose", A (quote s)] ]@@ -202,7 +133,7 @@       L [ A "agda2-solveAll-action", Q . L $ concatMap prn ps ]   ]   where-    prn (ii,e)= [showNumIId ii, A $ quote $ show e]+    prn (ii,e)= [showNumIId ii, A $ quote $ prettyShow e]  -- | Adds a \"last\" tag to a response. @@ -212,4 +143,4 @@ -- | Show an iteraction point identifier as an elisp expression.  showNumIId :: InteractionId -> Lisp String-showNumIId = A . tail . show+showNumIId = A . show . interactionId
src/full/Agda/Interaction/FindFile.hs view
@@ -13,7 +13,7 @@   , findFile, findFile', findFile''   , findInterfaceFile   , checkModuleName-  , moduleName', moduleName+  , moduleName   , rootNameModule   , replaceModuleExtension   ) where@@ -31,7 +31,7 @@ import Agda.Syntax.Common import Agda.Syntax.Concrete import Agda.Syntax.Parser-import Agda.Syntax.Parser.Literate (literateExts, literateExtsShortList)+import Agda.Syntax.Parser.Literate (literateExtsShortList) import Agda.Syntax.Position  import Agda.TypeChecking.Monad.Base@@ -44,6 +44,7 @@ import Agda.Utils.Except import Agda.Utils.FileName import Agda.Utils.Lens+import Agda.Utils.List ( stripSuffix ) import Agda.Utils.Null  #include "undefined.h"@@ -100,9 +101,9 @@ findFile' :: TopLevelModuleName -> TCM (Either FindError AbsolutePath) findFile' m = do     dirs         <- getIncludeDirs-    modFile      <- use stModuleToSource+    modFile      <- useTC stModuleToSource     (r, modFile) <- liftIO $ findFile'' dirs m modFile-    stModuleToSource .= modFile+    stModuleToSource `setTCLens` modFile     return r  -- | A variant of 'findFile'' which does not require 'TCM'.@@ -118,8 +119,8 @@   case Map.lookup m modFile of     Just f  -> return (Right f, modFile)     Nothing -> do-      files <- fileList sourceFileExts-      filesShortList <- fileList sourceFileExtsShortList+      files <- fileList acceptableFileExts+      filesShortList <- fileList parseFileExtsShortList       existingFiles <-         liftIO $ filterM (doesFileExistCaseSensitive . filePath) files       return $ case List.nub existingFiles of@@ -158,7 +159,7 @@   -> Maybe TopLevelModuleName      -- ^ The expected name, coming from an import statement.   -> TCM ()-checkModuleName name file mexpected = do+checkModuleName name file mexpected =   findFile' name >>= \case      Left (NotFound files)  -> typeError $@@ -176,59 +177,49 @@        else         typeError $ ModuleDefinedInOtherFile name file file' --- | Computes the module name of the top-level module in the given file.------   Warning! Parses the whole file to get the module name out.---   Use wisely!+-- | Computes the module name of the top-level module in the given+-- file. -----   No side effects!  Only in 'TCM' to raise errors.+-- If no top-level module name is given, then an attempt is made to+-- use the file name as a module name. -moduleName' :: AbsolutePath -> TCM TopLevelModuleName-moduleName' file = billTo [Bench.ModuleName] $ do-  q <- runPM (parseFile' moduleParser file)-  let name = topLevelModuleName q-  if moduleNameParts name == ["_"] then do-      q <- runPM (parse moduleNameParser defaultName)+-- TODO: Perhaps it makes sense to move this procedure to some other+-- module.++moduleName+  :: AbsolutePath+     -- ^ The path to the file.+  -> Module+     -- ^ The parsed module.+  -> TCM TopLevelModuleName+moduleName file parsedModule = billTo [Bench.ModuleName] $+  case moduleNameParts name of+    ["_"] -> do+      m <- runPM (parse moduleNameParser defaultName)              `catchError` \_ ->-           typeError $-             GenericError $ "File name " ++ show file ++-               " is invalid as it does not correspond to a valid module name."-      return $ TopLevelModuleName (getRange q) [defaultName]-    else return name+           typeError $ GenericError $+             "The file name " ++ show file +++             " is invalid because it does not correspond to a valid module name."+      case m of+        Qual {} ->+          typeError $ GenericError $+            "The file name " ++ show file ++ " is invalid because " +++            defaultName ++ " is not an unqualified module name."+        QName {} ->+          return $ TopLevelModuleName (getRange m) [defaultName]+    _ -> return name   where-    defaultName = rootNameModule file--sourceFileExts :: [String]-sourceFileExts = [".agda"] ++ literateExts+  name        = topLevelModuleName parsedModule+  defaultName = rootNameModule file -sourceFileExtsShortList :: [String]-sourceFileExtsShortList = [".agda"] ++ literateExtsShortList+parseFileExtsShortList :: [String]+parseFileExtsShortList = [".agda"] ++ literateExtsShortList  dropAgdaExtension :: String -> String-dropAgdaExtension s = case catMaybes [ stripExtension ext s-                                     | ext <- sourceFileExts ] of+dropAgdaExtension s = case catMaybes [ stripSuffix ext s+                                     | ext <- acceptableFileExts ] of     [name] -> name     _      -> __IMPOSSIBLE__-  where-    stripExtension :: String -> String -> Maybe String-    stripExtension e = fmap reverse . List.stripPrefix (reverse e) . reverse  rootNameModule :: AbsolutePath -> String rootNameModule = dropAgdaExtension . snd . splitFileName . filePath---- | A variant of 'moduleName'' which raises an error if the file name--- does not match the module name.------ The file name is interpreted relative to the current working--- directory (unless it is absolute).--moduleName :: AbsolutePath -> TCM TopLevelModuleName-moduleName file = do-  m <- moduleName' file-  let r = getRange m-  -- Andreas, 2016-07-11, issue 2092-  -- The error range should be set to the file with the wrong module name-  -- not the importing one (which would be the default).-  (if null r then id else traceCall (SetRange r)) $-    checkModuleName m file Nothing-  return m
src/full/Agda/Interaction/FindFile.hs-boot view
@@ -1,9 +1,9 @@ module Agda.Interaction.FindFile where +import Agda.Syntax.Concrete (Module) import Agda.Syntax.Concrete.Name (TopLevelModuleName) import Agda.TypeChecking.Monad.Base (TCM) import Agda.Utils.FileName (AbsolutePath) -moduleName :: AbsolutePath -> TCM TopLevelModuleName-moduleName' :: AbsolutePath -> TCM TopLevelModuleName+moduleName :: AbsolutePath -> Module -> TCM TopLevelModuleName checkModuleName :: TopLevelModuleName -> AbsolutePath -> Maybe TopLevelModuleName -> TCM ()
+ src/full/Agda/Interaction/Highlighting/Common.hs view
@@ -0,0 +1,48 @@+-- | Common syntax highlighting functions for Emacs and JSON++module Agda.Interaction.Highlighting.Common+  ( toAtoms+  , chooseHighlightingMethod+  ) where++import Agda.Interaction.Options+import Agda.Interaction.Highlighting.Precise+import Agda.Syntax.Common+import Agda.TypeChecking.Monad (HighlightingMethod(..))+import Data.Maybe (maybeToList)+import Data.Char (toLower)+import qualified Data.Set as Set++-- | Converts the 'aspect' and 'otherAspects' fields to strings that are+-- friendly to editors.+toAtoms :: Aspects -> [String]+toAtoms m = map toAtom (Set.toList $ otherAspects m)+         ++ toAtoms' (aspect m)+  where++  toAtom :: Show a => a -> String+  toAtom = map toLower . show++  kindToAtom (Constructor Inductive)   = "inductiveconstructor"+  kindToAtom (Constructor CoInductive) = "coinductiveconstructor"+  kindToAtom k                         = toAtom k++  toAtoms' Nothing               = []+  toAtoms' (Just (Name mKind op)) =+    map kindToAtom (maybeToList mKind) ++ opAtom+    where opAtom | op        = ["operator"]+                 | otherwise = []+  toAtoms' (Just a) = [toAtom a]++-- | Choose which method to use based on HighlightingInfo and HighlightingMethod+chooseHighlightingMethod+  :: HighlightingInfo+  -> HighlightingMethod+  -> HighlightingMethod+chooseHighlightingMethod info method = case ranges info of+  _             | method == Direct -> Direct+  ((_, mi) : _) | check mi         -> Direct+  _                                -> Indirect++  where check mi = otherAspects mi == Set.singleton TypeChecks+                || mi == mempty
src/full/Agda/Interaction/Highlighting/Emacs.hs view
@@ -7,25 +7,19 @@   , lispifyTokenBased   ) where +import Agda.Interaction.Highlighting.Common import Agda.Interaction.Highlighting.Precise-import Agda.Interaction.Highlighting.Range+import Agda.Interaction.Highlighting.Range (Range(..)) import Agda.Interaction.EmacsCommand import Agda.Interaction.Response-import Agda.Syntax.Common-import Agda.TypeChecking.Monad-  (TCM, envHighlightingMethod, HighlightingMethod(..), ModuleToSource)-import Agda.Utils.FileName-import qualified Agda.Utils.IO.UTF8 as UTF8-import Agda.Utils.String+import Agda.TypeChecking.Monad (HighlightingMethod(..), ModuleToSource)+import Agda.Utils.FileName (filePath)+import Agda.Utils.IO.TempFile (writeToTempFile)+import Agda.Utils.String (quote) -import qualified Control.Exception as E-import Control.Monad.Reader-import Data.Char+import qualified Data.List as List import qualified Data.Map as Map import Data.Maybe-import Data.Monoid-import qualified System.Directory as D-import qualified System.IO as IO  #include "undefined.h" import Agda.Utils.Impossible@@ -33,26 +27,6 @@ ------------------------------------------------------------------------ -- Read/show functions --- | Converts the 'aspect' and 'otherAspects' fields to atoms readable--- by the Emacs interface.--toAtoms :: Aspects -> [String]-toAtoms m = map toAtom (otherAspects m) ++ toAtoms' (aspect m)-  where-  toAtom :: Show a => a -> String-  toAtom = map toLower . show--  kindToAtom (Constructor Inductive)   = "inductiveconstructor"-  kindToAtom (Constructor CoInductive) = "coinductiveconstructor"-  kindToAtom k                         = toAtom k--  toAtoms' Nothing               = []-  toAtoms' (Just (Name mKind op)) =-    map kindToAtom (maybeToList mKind) ++ opAtom-    where opAtom | op        = ["operator"]-                 | otherwise = []-  toAtoms' (Just a) = [toAtom a]- -- | Shows meta information in such a way that it can easily be read -- by Emacs. @@ -76,10 +50,7 @@     Cons (A $ quote $ filePath f) (A $ show p)     where f = Map.findWithDefault __IMPOSSIBLE__ m modFile -  dropNils =-    reverse .-    dropWhile (== A "nil") .-    reverse+  dropNils = List.dropWhileEnd (== A "nil")  -- | Formats the 'TokenBased' tag for the Emacs backend. No quotes are -- added.@@ -103,27 +74,24 @@   -> ModuleToSource      -- ^ Must contain a mapping for every definition site's module.   -> IO (Lisp String)-lispifyHighlightingInfo h remove method modFile = do-  case ranges h of-    _             | method == Direct                   -> direct-    ((_, mi) : _) | otherAspects mi == [TypeChecks] ||-                    mi == mempty                       -> direct-    _                                                  -> indirect+lispifyHighlightingInfo h remove method modFile =+  case chooseHighlightingMethod h method of+    Direct   -> direct+    Indirect -> indirect   where-  info     = (case remove of+  info :: [Lisp String]+  info = (case remove of                 RemoveHighlighting -> A "remove"                 KeepHighlighting   -> A "nil") :              map (showAspects modFile) (ranges h) -  direct   = return $ L (A "agda2-highlight-add-annotations" :+  direct :: IO (Lisp String)+  direct = return $ L (A "agda2-highlight-add-annotations" :                          map Q info) +  indirect :: IO (Lisp String)   indirect = do-    dir <- D.getTemporaryDirectory-    f   <- E.bracket (IO.openTempFile dir "agda2-mode")-                     (IO.hClose . snd) $ \ (f, h) -> do-             UTF8.hPutStr h (show $ L info)-             return f+    filepath <- writeToTempFile (show $ L info)     return $ L [ A "agda2-highlight-load-and-delete-action"-               , A (quote f)+               , A (quote filepath)                ]
src/full/Agda/Interaction/Highlighting/Generate.hs view
@@ -5,7 +5,8 @@ module Agda.Interaction.Highlighting.Generate   ( Level(..)   , generateAndPrintSyntaxInfo-  , generateTokenInfo, generateTokenInfoFromString+  , generateTokenInfo, generateTokenInfoFromSource+  , generateTokenInfoFromString   , printSyntaxInfo   , printErrorInfo, errorHighlighting   , printUnsolvedInfo@@ -14,7 +15,7 @@   , warningHighlighting   , computeUnsolvedMetaWarnings   , computeUnsolvedConstraints-  , storeDisambiguatedName+  , storeDisambiguatedName, disambiguateRecordFields   ) where  import Prelude hiding (null)@@ -29,8 +30,12 @@ import qualified Data.Map as Map import Data.Maybe import Data.List ((\\), isPrefixOf)+import qualified Data.List as List import qualified Data.Foldable as Fold (fold, foldMap, toList) import qualified Data.IntMap as IntMap+import Data.Sequence (Seq)+import qualified Data.Set as Set+import qualified Data.Text.Lazy as T import Data.Void  import Agda.Interaction.Response (Response(Resp_HighlightingInfo))@@ -50,10 +55,12 @@ import Agda.Syntax.Abstract (IsProjP(..)) import qualified Agda.Syntax.Abstract as A import Agda.Syntax.Concrete (FieldAssignment'(..))+import Agda.Syntax.Concrete.Definitions ( DeclarationWarning(..) ) import qualified Agda.Syntax.Common as Common import qualified Agda.Syntax.Concrete.Name as C import qualified Agda.Syntax.Concrete as C import Agda.Syntax.Fixity+import Agda.Syntax.Notation import qualified Agda.Syntax.Info as SI import qualified Agda.Syntax.Internal as I import qualified Agda.Syntax.Literal as L@@ -103,7 +110,7 @@   r'        = rToR (P.continuousPerLine r)   delta     = rPre' `minus` r'   clear     = mempty-  highlight = parserBased { otherAspects = [TypeChecks] }+  highlight = parserBased { otherAspects = Set.singleton TypeChecks }    wrap rs x y = do     p rs x@@ -121,8 +128,8 @@   HighlightingInfo ->   tcm () printHighlightingInfo remove info = do-  modToSrc <- use stModuleToSource-  method   <- view eHighlightingMethod+  modToSrc <- useTC stModuleToSource+  method   <- viewTC eHighlightingMethod   liftTCM $ reportSLn "highlighting" 50 $ unlines     [ "Printing highlighting info:"     , show info@@ -161,7 +168,7 @@   -> TCM () generateAndPrintSyntaxInfo decl _ _ | null $ P.getRange decl = return () generateAndPrintSyntaxInfo decl hlLevel updateState = do-  file <- fromMaybe __IMPOSSIBLE__ <$> asks envCurrentPath+  file <- getCurrentPath    reportSLn "import.iface.create" 15 $       "Generating syntax info for " ++ filePath file ++ ' ' :@@ -184,18 +191,18 @@       Full{} -> generateConstructorInfo modMap file kinds decl       _      -> return mempty -    cm <- P.rangeFile <$> view eRange+    cm <- P.rangeFile <$> viewTC eRange     reportSLn "highlighting.warning" 60 $ "current path = " ++ show cm      warnInfo <- Fold.foldMap warningHighlighting-                 . filter ((cm ==) . tcWarningOrigin) <$> use stTCWarnings+                 . filter ((cm ==) . tcWarningOrigin) <$> useTC stTCWarnings      let (from, to) = case P.rangeToInterval (P.getRange decl) of           Nothing -> __IMPOSSIBLE__           Just i  -> ( fromIntegral $ P.posPos $ P.iStart i                      , fromIntegral $ P.posPos $ P.iEnd i)     (prevTokens, (curTokens, postTokens)) <--      second (splitAtC to) . splitAtC from <$> use stTokens+      second (splitAtC to) . splitAtC from <$> useTC stTokens      -- theRest needs to be placed before nameInfo here since record     -- field declarations contain QNames. constructorInfo also needs@@ -212,8 +219,8 @@                      curTokens      when updateState $ do-      stSyntaxInfo %= mappend syntaxInfo-      stTokens     .= prevTokens `mappend` postTokens+      stSyntaxInfo `modifyTCLens` mappend syntaxInfo+      stTokens     `setTCLens` (prevTokens `mappend` postTokens)      ifTopLevelAndHighlightingLevelIs NonInteractive $       printHighlightingInfo KeepHighlighting syntaxInfo@@ -222,12 +229,9 @@   names :: [A.AmbiguousQName]   names =     (map I.unambiguous $-     filter (not . extendedLambda) $+     filter (not . isExtendedLambdaName) $      universeBi decl) ++     universeBi decl-    where-    extendedLambda :: A.QName -> Bool-    extendedLambda = (extendedLambdaName `isPrefixOf`) . show . A.nameConcrete . A.qnameName    -- Bound variables, dotted patterns, record fields, module names,   -- the "as" and "to" symbols.@@ -243,13 +247,17 @@     , Fold.foldMap getPatSynArgs  $ universeBi decl     , Fold.foldMap getModuleName  $ universeBi decl     , Fold.foldMap getModuleInfo  $ universeBi decl-    , Fold.foldMap getNamedArg    $ universeBi decl+    , Fold.foldMap getNamedArgE   $ universeBi decl+    , Fold.foldMap getNamedArgP   $ universeBi decl+    , Fold.foldMap getNamedArgB   $ universeBi decl+    , Fold.foldMap getNamedArgL   $ universeBi decl     ]     where-    bound (A.BindName n) = nameToFile modMap file [] (A.nameConcrete n) P.noRange-                         (\isOp -> parserBased { aspect =-                                     Just $ Name (Just Bound) isOp })-                         (Just $ A.nameBindingSite n)+    bound (A.BindName n) =+      nameToFile modMap file [] (A.nameConcrete n) P.noRange+                 (\isOp -> parserBased { aspect =+                             Just $ Name (Just Bound) isOp })+                 (Just $ A.nameBindingSite n)      patsyn n =               -- TODO: resolve overloading               nameToFileA modMap file (I.headAmbQ n) True $ \isOp ->@@ -259,6 +267,7 @@     macro n = nameToFileA modMap file n True $ \isOp ->                   parserBased { aspect = Just $ Name (Just Macro) isOp } +    field :: [C.Name] -> C.Name -> File     field m n = nameToFile modMap file m n P.noRange                            (\isOp -> parserBased { aspect =                                        Just $ Name (Just Field) isOp })@@ -282,17 +291,32 @@      getVarAndField :: A.Expr -> File     getVarAndField (A.Var x)            = bound $ A.BindName x+    -- Andreas, 2018-06-09, issue #3120+    -- The highlighting for record field tags is now created by the type checker in+    -- function disambiguateRecordFields.+    -- Andreas, Nisse, 2018-10-26, issue #3322+    -- Still, we extract the highlighting info here for uses such as QuickLatex.+    -- The aspects from the disambiguation will be merged in.     getVarAndField (A.Rec       _ fs)   = mconcat [ field [] x | Left (FieldAssignment x _) <- fs ]     getVarAndField (A.RecUpdate _ _ fs) = mconcat [ field [] x |      (FieldAssignment x _) <- fs ]     getVarAndField _                    = mempty -    -- Ulf, 2014-04-09: It would be nicer to have it on Named_ a, but+    -- Ulf, 2019-01-30: It would be nicer to not have to specialize it, but     -- you can't have polymorphic functions in universeBi.-    getNamedArg :: Common.RString -> File-    getNamedArg x = singleton (rToR $ P.getRange x) $-                       parserBased { aspect =-                         Just $ Name (Just Argument) False }+    getNamedArgE :: Common.NamedArg A.Expr -> File+    getNamedArgE = getNamedArg+    getNamedArgP :: Common.NamedArg A.Pattern -> File+    getNamedArgP = getNamedArg+    getNamedArgB :: Common.NamedArg A.BindName -> File+    getNamedArgB = getNamedArg+    getNamedArgL :: Common.NamedArg A.LHSCore -> File+    getNamedArgL = getNamedArg +    getNamedArg :: Common.NamedArg a -> File+    getNamedArg x = caseMaybe (Common.nameOf $ Common.unArg x) mempty $ \ s ->+      singleton (rToR $ P.getRange s) $+        parserBased { aspect = Just $ Name (Just Argument) False }+     getLet :: A.LetBinding -> File     getLet (A.LetBind _ _ x _ _)     = bound x     getLet A.LetPatBind{}            = mempty@@ -301,11 +325,11 @@     getLet (A.LetDeclaredVariable x) = bound x      getLam :: A.LamBinding -> File-    getLam (A.DomainFree _ x) = bound x-    getLam (A.DomainFull {})  = mempty+    getLam (A.DomainFree x)  = bound $ Common.namedArg x+    getLam (A.DomainFull {}) = mempty      getTyped :: A.TypedBinding -> File-    getTyped (A.TBind _ xs _) = mconcat $ map (bound . dget) xs+    getTyped (A.TBind _ xs _) = mconcat $ map (bound . Common.namedArg) xs     getTyped A.TLet{}         = mempty      getPatSynArgs :: A.Declaration -> File@@ -319,8 +343,14 @@       | Just _ <- isProjP e = mempty       | otherwise =           singleton (rToR $ P.getRange pi)-                (parserBased { otherAspects = [DottedPattern] })+                (parserBased { otherAspects = Set.singleton DottedPattern })     getPattern' (A.PatternSynP _ q _) = patsyn q+    -- Andreas, 2018-06-09, issue #3120+    -- The highlighting for record field tags is now created by the type checker in+    -- function disambiguateRecordFields.+    -- Andreas, Nisse, 2018-10-26, issue #3322+    -- Still, we extract the highlighting info here for uses such as QuickLatex.+    -- The aspects from the disambiguation will be merged in.     getPattern' (A.RecP _ fs) = mconcat [ field [] x | FieldAssignment x _ <- fs ]     getPattern' _             = mempty @@ -336,7 +366,7 @@     getExpr _                = mempty      getFieldDecl :: A.Declaration -> File-    getFieldDecl (A.RecDef _ _ _ _ _ _ _ fs) = Fold.foldMap extractField fs+    getFieldDecl (A.RecDef _ _ _ _ _ _ _ _ fs) = Fold.foldMap extractField fs       where       extractField (A.ScopedDecl _ ds) = Fold.foldMap extractField ds       extractField (A.Field _ x _)     = field (concreteQualifier x)@@ -349,8 +379,7 @@       mconcat $ map (mod isTopLevelModule) xs       where       isTopLevelModule =-        case catMaybes $-             map (join .+        case mapMaybe (join .                   fmap (Strict.toLazy . P.srcFile) .                   P.rStart .                   A.nameBindingSite) xs of@@ -368,13 +397,28 @@ -- | Generate and return the syntax highlighting information for the -- tokens in the given file. -generateTokenInfo-  :: AbsolutePath          -- ^ The module to highlight.-  -> TCM CompressedFile+generateTokenInfo :: AbsolutePath -> TCM CompressedFile generateTokenInfo file =-  runPM $ tokenHighlighting <$> Pa.parseFile' Pa.tokensParser file+  generateTokenInfoFromSource file . T.unpack =<<+    runPM (Pa.readFilePM file) --- | Same as 'generateTokenInfo' but takes a string instead of a filename.+-- | Generate and return the syntax highlighting information for the+-- tokens in the given file.++generateTokenInfoFromSource+  :: AbsolutePath+     -- ^ The module to highlight.+  -> String+     -- ^ The file contents. Note that the file is /not/ read from+     -- disk.+  -> TCM CompressedFile+generateTokenInfoFromSource file input =+  runPM $ tokenHighlighting <$> fst <$> Pa.parseFile Pa.tokensParser file input++-- | Generate and return the syntax highlighting information for the+-- tokens in the given string, which is assumed to correspond to the+-- given range.+ generateTokenInfoFromString :: P.Range -> String -> TCM CompressedFile generateTokenInfoFromString r _ | r == P.noRange = return mempty generateTokenInfoFromString r s = do@@ -394,6 +438,7 @@    tokenToCFile :: T.Token -> CompressedFile   tokenToCFile (T.TokSetN (i, _))               = aToF PrimitiveType (P.getRange i)+  tokenToCFile (T.TokPropN (i, _))              = aToF PrimitiveType (P.getRange i)   tokenToCFile (T.TokKeyword T.KwSet  i)        = aToF PrimitiveType (P.getRange i)   tokenToCFile (T.TokKeyword T.KwProp i)        = aToF PrimitiveType (P.getRange i)   tokenToCFile (T.TokKeyword T.KwForall i)      = aToF Symbol (P.getRange i)@@ -407,12 +452,11 @@   tokenToCFile (T.TokLiteral (L.LitQName  r _)) = aToF String r   tokenToCFile (T.TokLiteral (L.LitMeta r _ _)) = aToF String r   tokenToCFile (T.TokComment (i, _))            = aToF Comment (P.getRange i)-  tokenToCFile (T.TokTeX (i, _))                = aToF Comment (P.getRange i)+  tokenToCFile (T.TokTeX (i, _))                = aToF Background (P.getRange i)+  tokenToCFile (T.TokMarkup (i, _))             = aToF Markup (P.getRange i)   tokenToCFile (T.TokId {})                     = mempty   tokenToCFile (T.TokQId {})                    = mempty-  tokenToCFile (T.TokString (i,s))-    | "--" `isPrefixOf` s                       = aToF Option (P.getRange i)-    | otherwise                                 = mempty+  tokenToCFile (T.TokString (i,s))              = aToF Pragma (P.getRange i)   tokenToCFile (T.TokDummy {})                  = mempty   tokenToCFile (T.TokEOF {})                    = mempty @@ -429,9 +473,9 @@           -> A.Declaration           -> TCM NameKinds nameKinds hlLevel decl = do-  imported <- fix <$> use stImports+  imported <- fix <$> useTC stImports   local    <- case hlLevel of-    Full{} -> fix <$> use stSignature+    Full{} -> fix <$> useTC stSignature     _      -> return HMap.empty       -- Traverses the syntax tree and constructs a map from qualified       -- names to name kinds. TODO: Handle open public.@@ -455,6 +499,8 @@    defnToKind :: Defn -> NameKind   defnToKind   M.Axiom{}                           = Postulate+  defnToKind   M.DataOrRecSig{}                    = Postulate+  defnToKind   M.GeneralizableVar{}                = Generalizable   defnToKind d@M.Function{} | isProperProjection d = Field                             | otherwise            = Function   defnToKind   M.Datatype{}                        = Datatype@@ -481,17 +527,18 @@   declToKind (A.ScopedDecl {})      = id   declToKind (A.Open {})            = id   declToKind (A.PatternSynDef q _ _) = insert q (Constructor Common.Inductive)+  declToKind (A.Generalize _ _ _ q _) = insert q Generalizable   declToKind (A.FunDef  _ q _ _)     = insert q Function   declToKind (A.UnquoteDecl _ _ qs _) = foldr (\ q f -> insert q Function . f) id qs   declToKind (A.UnquoteDef _ qs _)    = foldr (\ q f -> insert q Function . f) id qs-  declToKind (A.DataSig _ q _ _)    = insert q Datatype-  declToKind (A.DataDef _ q _ cs)   = \m ->+  declToKind (A.DataSig _ q _ _)      = insert q Datatype+  declToKind (A.DataDef _ q _ _ cs)   = \m ->                                       insert q Datatype $                                       foldr (\d -> insert (A.axiomName d)                                                           (Constructor Common.Inductive))                                             m cs-  declToKind (A.RecSig _ q _ _)     = insert q Record-  declToKind (A.RecDef _ q _ _ c _ _ _) = insert q Record .+  declToKind (A.RecSig _ q _ _)       = insert q Record+  declToKind (A.RecDef _ q _ _ _ c _ _ _) = insert q Record .                                       case c of                                         Nothing -> id                                         Just q  -> insert q (Constructor Common.Inductive)@@ -520,7 +567,7 @@         end   = fromIntegral $ P.posPos $ P.iEnd   $ last is      -- Get all disambiguated names that fall within the range of decl.-    m0 <- use stDisambiguatedNames+    m0 <- useTC stDisambiguatedNames     let (_, m1) = IntMap.split (pred start) m0         (m2, _) = IntMap.split end m1         constrs = IntMap.elems m2@@ -531,7 +578,7 @@  printSyntaxInfo :: P.Range -> TCM () printSyntaxInfo r = do-  syntaxInfo <- use stSyntaxInfo+  syntaxInfo <- useTC stSyntaxInfo   ifTopLevelAndHighlightingLevelIs NonInteractive $       printHighlightingInfo KeepHighlighting (selectC r syntaxInfo) @@ -546,12 +593,6 @@ --   Does something special for termination errors.  errorHighlighting :: TCErr -> TCM File--errorHighlighting (TypeError s cl@Closure{ clValue = TerminationCheckFailed termErrs }) =-  -- For termination errors, we keep the previous highlighting,-  -- just additionally mark the bad calls.-  return $ terminationErrorHighlighting termErrs- errorHighlighting e = do    -- Erase previous highlighting.@@ -561,7 +602,7 @@   -- Print new highlighting.   s <- E.prettyError e   let error = singleton (rToR r)-         $ parserBased { otherAspects = [Error]+         $ parserBased { otherAspects = Set.singleton Error                        , note         = Just s                        }   return $ mconcat [ erase, error ]@@ -572,17 +613,25 @@ warningHighlighting w = case tcWarning w of   TerminationIssue terrs     -> terminationErrorHighlighting terrs   NotStrictlyPositive d ocs  -> positivityErrorHighlighting d ocs-  UnreachableClauses{}       -> unreachableErrorHighlighting $ P.getRange w+  UnreachableClauses{}       -> deadcodeHighlighting $ P.getRange w   CoverageIssue{}            -> coverageErrorHighlighting $ P.getRange w   CoverageNoExactSplit{}     -> catchallHighlighting $ P.getRange w   UnsolvedConstraints cs     -> constraintsHighlighting cs   UnsolvedMetaVariables rs   -> metasHighlighting rs+  AbsurdPatternRequiresNoRHS{} -> deadcodeHighlighting $ P.getRange w+  ModuleDoesntExport{}         -> deadcodeHighlighting $ P.getRange w   -- expanded catch-all case to get a warning for new constructors+  CantGeneralizeOverSorts{}  -> mempty   UnsolvedInteractionMetas{} -> mempty   OldBuiltin{}               -> mempty-  EmptyRewritePragma{}       -> mempty+  EmptyRewritePragma{}       -> deadcodeHighlighting $ P.getRange w+  IllformedAsClause{}        -> deadcodeHighlighting $ P.getRange w   UselessPublic{}            -> mempty   UselessInline{}            -> mempty+  WrongInstanceDeclaration{} -> mempty+  InstanceWithExplicitArg{}  -> deadcodeHighlighting $ P.getRange w+  InstanceNoOutputTypeName{} -> mempty+  InstanceArgWithExplicitArg{} -> mempty   ParseWarning{}             -> mempty   InversionDepthReached{}    -> mempty   GenericWarning{}           -> mempty@@ -591,19 +640,41 @@   SafeFlagPragma{}           -> mempty   SafeFlagNonTerminating     -> mempty   SafeFlagTerminating        -> mempty-  SafeFlagPrimTrustMe        -> mempty+  SafeFlagWithoutKFlagPrimEraseEquality -> mempty+  WithoutKFlagPrimEraseEquality -> mempty   SafeFlagNoPositivityCheck  -> mempty   SafeFlagPolarity           -> mempty+  SafeFlagNoUniverseCheck    -> mempty   DeprecationWarning{}       -> mempty-  NicifierIssue{}            -> mempty   UserWarning{}              -> mempty+  LibraryWarning{}           -> mempty+  InfectiveImport{}          -> mempty+  CoInfectiveImport{}        -> mempty+  NicifierIssue w           -> case w of+    -- we intentionally override the binding of `w` here so that our pattern of+    -- using `P.getRange w` still yields the most precise range information we+    -- can get.+    NotAllowedInMutual{} -> deadcodeHighlighting $ P.getRange w+    EmptyAbstract{}      -> deadcodeHighlighting $ P.getRange w+    EmptyInstance{}      -> deadcodeHighlighting $ P.getRange w+    EmptyMacro{}         -> deadcodeHighlighting $ P.getRange w+    EmptyMutual{}        -> deadcodeHighlighting $ P.getRange w+    EmptyPostulate{}     -> deadcodeHighlighting $ P.getRange w+    EmptyPrivate{}       -> deadcodeHighlighting $ P.getRange w+    EmptyGeneralize{}    -> deadcodeHighlighting $ P.getRange w+    UselessAbstract{}    -> deadcodeHighlighting $ P.getRange w+    UselessInstance{}    -> deadcodeHighlighting $ P.getRange w+    UselessPrivate{}     -> deadcodeHighlighting $ P.getRange w+    _ -> mempty -- TODO: explore highlighting opportunities here! ++ -- | Generate syntax highlighting for termination errors.  terminationErrorHighlighting :: [TerminationError] -> File terminationErrorHighlighting termErrs = functionDefs `mappend` callSites   where-    m            = parserBased { otherAspects = [TerminationProblem] }+    m            = parserBased { otherAspects = Set.singleton TerminationProblem }     functionDefs = Fold.foldMap (\x -> singleton (rToR $ bindingSite x) m) $                    concatMap M.termErrFunctions termErrs     callSites    = Fold.foldMap (\r -> singleton (rToR r) m) $@@ -613,24 +684,25 @@ -- definitions.  -- TODO: highlight also the problematic occurrences-positivityErrorHighlighting :: I.QName -> OccursWhere -> File-positivityErrorHighlighting q o = several (rToR <$> P.getRange q : rs) m+positivityErrorHighlighting :: I.QName -> Seq OccursWhere -> File+positivityErrorHighlighting q os =+  several (rToR <$> P.getRange q : rs) m   where-    rs = case o of Unknown -> []; Known r _ -> [r]-    m  = parserBased { otherAspects = [PositivityProblem] }+    rs = map (\(OccursWhere r _ _) -> r) (Fold.toList os)+    m  = parserBased { otherAspects = Set.singleton PositivityProblem } -unreachableErrorHighlighting :: P.Range -> File-unreachableErrorHighlighting r = singleton (rToR $ P.continuousPerLine r) m-  where m = parserBased { otherAspects = [ReachabilityProblem] }+deadcodeHighlighting :: P.Range -> File+deadcodeHighlighting r = singleton (rToR $ P.continuousPerLine r) m+  where m = parserBased { otherAspects = Set.singleton Deadcode }  coverageErrorHighlighting :: P.Range -> File coverageErrorHighlighting r = singleton (rToR $ P.continuousPerLine r) m-  where m = parserBased { otherAspects = [CoverageProblem] }+  where m = parserBased { otherAspects = Set.singleton CoverageProblem }   catchallHighlighting :: P.Range -> File catchallHighlighting r = singleton (rToR $ P.continuousPerLine r) m-  where m = parserBased { otherAspects = [CatchallClause] }+  where m = parserBased { otherAspects = Set.singleton CatchallClause }   -- | Generates and prints syntax highlighting information for unsolved@@ -662,7 +734,7 @@  metasHighlighting :: [P.Range] -> File metasHighlighting rs = several (map (rToR . P.continuousPerLine) rs)-                     $ parserBased { otherAspects = [UnsolvedMeta] }+                     $ parserBased { otherAspects = Set.singleton UnsolvedMeta }  -- | Generates syntax highlighting information for unsolved constraints --   (ideally: that are not connected to a meta variable).@@ -673,7 +745,7 @@ constraintsHighlighting :: Constraints -> File constraintsHighlighting cs =   several (map (rToR . P.continuousPerLine) rs)-          (parserBased { otherAspects = [UnsolvedConstraint] })+          (parserBased { otherAspects = Set.singleton UnsolvedConstraint })   where   -- get ranges of interesting unsolved constraints   rs = (`mapMaybe` (map theConstraint cs)) $ \case@@ -746,7 +818,7 @@     mempty   where   aspects    = m $ C.isOperator x-  fileNames  = catMaybes $ map (fmap P.srcFile . P.rStart . P.getRange) (x : xs)+  fileNames  = mapMaybe (fmap P.srcFile . P.rStart . P.getRange) (x : xs)   frFile     = singleton (rToR fr) (aspects { definitionSite = notHere <$> mFilePos })   rs         = map P.getRange (x : xs) @@ -787,6 +859,7 @@   isLocal :: NameKind -> Bool   isLocal = \case     Bound         -> True+    Generalizable -> True     Argument      -> True     Constructor{} -> False     Datatype      -> False@@ -798,7 +871,6 @@     Record        -> False     Macro         -> False - -- | A variant of 'nameToFile' for qualified abstract names.  nameToFileA@@ -823,6 +895,7 @@              r              m              (if include then Just $ bindingSite x else Nothing)+    `mappend` notationFile   where     -- Andreas, 2016-09-08, for issue #2140:     -- Range of name from fixity declaration:@@ -831,6 +904,13 @@     -- (I do not understand how we get them as they should not be serialized...)     r = if P.rangeFile fr == Strict.Just file then fr else P.noRange +    notationFile = mconcat $ map genPartFile $ theNotation $ A.nameFixity $ A.qnameName x+    boundAspect = parserBased{ aspect = Just $ Name (Just Bound) False }+    genPartFile (BindHole r i)   = several [rToR r, rToR $ getRange i] boundAspect+    genPartFile (NormalHole r i) = several [rToR r, rToR $ getRange i] boundAspect+    genPartFile WildHole{}       = mempty+    genPartFile (IdPart x)       = singleton (rToR $ P.getRange x) (m False)+ concreteBase :: I.QName -> C.Name concreteBase = A.nameConcrete . A.qnameName @@ -844,6 +924,15 @@ --   To be used later during syntax highlighting. storeDisambiguatedName :: A.QName -> TCM () storeDisambiguatedName q = whenJust (start $ P.getRange q) $ \ i ->-  stDisambiguatedNames %= IntMap.insert i q+  stDisambiguatedNames `modifyTCLens` IntMap.insert i q   where   start r = fromIntegral . P.posPos <$> P.rStart' r++-- | Store a disambiguation of record field tags for the purpose of highlighting.+disambiguateRecordFields+  :: [C.Name]   -- ^ Record field names in a record expression.+  -> [A.QName]  -- ^ Record field names in the corresponding record type definition+  -> TCM ()+disambiguateRecordFields cxs axs = forM_ cxs $ \ cx -> do+  caseMaybe (List.find ((cx ==) . A.nameConcrete . A.qnameName) axs) (return ()) $ \ ax -> do+    storeDisambiguatedName ax { A.qnameName = (A.qnameName ax) { A.nameConcrete = cx } }
src/full/Agda/Interaction/Highlighting/HTML.hs view
@@ -1,5 +1,4 @@ {-# LANGUAGE CPP               #-}-{-# LANGUAGE OverloadedStrings #-}  -- | Function for generating highlighted, hyperlinked HTML from Agda -- sources.@@ -16,6 +15,7 @@   ) where  import Prelude hiding ((!!), concatMap)+import Control.Arrow ((***)) import Control.Monad import Control.Monad.Trans @@ -26,7 +26,9 @@ import qualified Data.IntMap as IntMap import qualified Data.Map    as Map import qualified Data.List   as List+import Data.List.Split (splitWhen, chunksOf) import Data.Text.Lazy (Text)+import qualified Data.Text.Lazy as T  import qualified Network.URI.Encode @@ -42,8 +44,9 @@  import Paths_Agda -import Agda.Interaction.Highlighting.Precise import Agda.Interaction.Options+import Agda.Interaction.Highlighting.Precise+import Agda.Interaction.Highlighting.Common  import Agda.Interaction.Highlighting.Generate   (computeUnsolvedMetaWarnings, computeUnsolvedConstraints)@@ -52,7 +55,7 @@ import Agda.Syntax.Common import Agda.Syntax.Abstract.Name (ModuleName) -import Agda.TypeChecking.Monad (TCM)+import Agda.TypeChecking.Monad (TCM, useTC) import qualified Agda.TypeChecking.Monad as TCM  import Agda.Utils.FileName (filePath)@@ -70,35 +73,79 @@ defaultCSSFile :: FilePath defaultCSSFile = "Agda.css" +-- | The directive inserted before the rendered code blocks++rstDelimiter :: String+rstDelimiter = ".. raw:: html\n"++-- | Determine how to highlight the file++highlightOnlyCode :: HtmlHighlight -> FileType -> Bool+highlightOnlyCode HighlightAll  _ = False+highlightOnlyCode HighlightCode _ = True+highlightOnlyCode HighlightAuto AgdaFileType = False+highlightOnlyCode HighlightAuto MdFileType   = True+highlightOnlyCode HighlightAuto RstFileType  = True+highlightOnlyCode HighlightAuto OrgFileType  = True+highlightOnlyCode HighlightAuto TexFileType  = False++-- | Determine the generated file extension++highlightedFileExt :: HtmlHighlight -> FileType -> String+highlightedFileExt hh ft+  | not $ highlightOnlyCode hh ft = "html"+  | otherwise = case ft of+      AgdaFileType -> "html"+      MdFileType   -> "md"+      RstFileType  -> "rst"+      TexFileType  -> "tex"+      OrgFileType  -> "org"+ -- | Generates HTML files from all the sources which have been --   visited during the type checking phase. -- --   This function should only be called after type checking has --   completed successfully. +type PageGen = FilePath    -- ^ Output directory+  -> FileType              -- ^ Source file type+  -> Bool                  -- ^ Return value of `highlightOnlyCode`+  -> String                -- ^ Output file extension (return+                           --   value of `highlightedFileExt`)+  -> C.TopLevelModuleName+  -> Text+  -> CompressedFile        -- ^ Highlighting information+  -> TCM ()+ generateHTML :: TCM () generateHTML = generateHTMLWithPageGen pageGen   where-  pageGen :: FilePath -> C.TopLevelModuleName -> CompressedFile -> TCM ()-  pageGen dir mod hinfo = generatePage renderer dir mod+  pageGen :: PageGen+  pageGen dir ft pc ext mod contents hinfo =+    generatePage (renderer pc ft) ext dir mod     where-    renderer :: FilePath -> FilePath -> String -> Text-    renderer css _ contents = page css mod $ code $ tokenStream contents hinfo+    renderer :: Bool -> FileType -> FilePath -> FilePath -> Text+    renderer onlyCode fileType css _ =+      page css onlyCode mod $+      code onlyCode fileType $+      tokenStream contents hinfo  -- | Prepare information for HTML page generation. -----   The page generator receives the file path of the module,---   the top level module name of the module---   and the highlighting information of the module.+--   The page generator receives the output directory as well as the+--   module's top level module name, its source code, and its+--   highlighting information.  generateHTMLWithPageGen-  :: (FilePath -> C.TopLevelModuleName -> CompressedFile -> TCM ())  -- ^ Page generator+  :: PageGen+     -- ^ Page generator.   -> TCM () generateHTMLWithPageGen generatePage = do       options <- TCM.commandLineOptions        -- There is a default directory given by 'defaultHTMLDir'       let dir = optHTMLDir options+      let htmlHighlight = optHTMLHighlight options       liftIO $ createDirectoryIfMissing True dir        -- If the default CSS file should be used, then it is copied to@@ -113,37 +160,42 @@         , "reached from the given module, including library files."         ] -      -- Pull highlighting info from the state and generate all the-      -- web pages.--      mapM_ (uncurry $ generatePage dir) =<<-        map (mapSnd $ TCM.iHighlighting . TCM.miInterface) .-          Map.toList <$> TCM.getVisitedModules+      -- Pull source code and highlighting info from the state and+      -- generate all the web pages.+      mapM_ (\(n, mi) ->+              let i  = TCM.miInterface mi+                  ft = TCM.iFileType i in+              generatePage dir ft+                (highlightOnlyCode htmlHighlight ft)+                (highlightedFileExt htmlHighlight ft) n+                (TCM.iSource i) (TCM.iHighlighting i)) .+        Map.toList =<< TCM.getVisitedModules  -- | Converts module names to the corresponding HTML file names. -modToFile :: C.TopLevelModuleName -> FilePath-modToFile m =+modToFile :: C.TopLevelModuleName -> String -> FilePath+modToFile m ext =   Network.URI.Encode.encode $-    render (pretty m) <.> "html"+    render (pretty m) <.> ext  -- | Generates a highlighted, hyperlinked version of the given module.  generatePage-  :: (FilePath -> FilePath -> String -> Text)  -- ^ Page renderer-  -> FilePath              -- ^ Directory in which to create files.-  -> C.TopLevelModuleName  -- ^ Module to be highlighted.+  :: (FilePath -> FilePath -> Text)  -- ^ Page renderer.+  -> String                          -- ^ Output file extension.+  -> FilePath                        -- ^ Directory in which to create+                                     --   files.+  -> C.TopLevelModuleName            -- ^ Module to be highlighted.   -> TCM ()-generatePage renderpage dir mod = do-  f <- fromMaybe __IMPOSSIBLE__ . Map.lookup mod <$> use TCM.stModuleToSource-  contents <- liftIO $ UTF8.readTextFile $ filePath f-  css      <- fromMaybe defaultCSSFile . optCSSFile <$>-                TCM.commandLineOptions-  let html = renderpage css (filePath f) contents+generatePage renderPage ext dir mod = do+  f   <- fromMaybe __IMPOSSIBLE__ . Map.lookup mod <$> useTC TCM.stModuleToSource+  css <- fromMaybe defaultCSSFile . optCSSFile <$> TCM.commandLineOptions+  let target = dir </> modToFile mod ext+  let html = renderPage css $ filePath f   TCM.reportSLn "html" 1 $ "Generating HTML for " ++                            render (pretty mod) ++                            " (" ++ target ++ ")."   liftIO $ UTF8.writeTextToFile target html-  where target = dir </> modToFile mod   -- | Attach multiple Attributes@@ -154,29 +206,40 @@ -- | Constructs the web page, including headers.  page :: FilePath              -- ^ URL to the CSS file.+     -> Bool                  -- ^ Whether to reserve literate      -> C.TopLevelModuleName  -- ^ Module to be highlighted.      -> Html      -> Text-page css modName pagecontent = renderHtml $ docTypeHtml $ hdr <> rest-+page css htmlHighlight modName pageContent =+  renderHtml $ if htmlHighlight+               then pageContent+               else docTypeHtml $ hdr <> rest   where      hdr = Html5.head $ mconcat       [ meta !! [ charset "utf-8" ]       , Html5.title (toHtml $ render $ pretty modName)       , link !! [ rel "stylesheet"-                , href (stringValue css)+                , href $ stringValue css                 ]       ] -    rest = body (pre pagecontent)+    rest = body $ (pre ! class_ "Agda") pageContent +-- | Position, Contents, Infomation++type TokenInfo =+  ( Int+  , String+  , Aspects+  )+ -- | Constructs token stream ready to print.  tokenStream-     :: String         -- ^ The contents of the module.+     :: Text           -- ^ The contents of the module.      -> CompressedFile -- ^ Highlighting information.-     -> [(Int, String, Aspects)]  -- ^ (position, contents, info)+     -> [TokenInfo] tokenStream contents info =   map (\cs -> case cs of           (mi, (pos, _)) : _ ->@@ -184,27 +247,77 @@           [] -> __IMPOSSIBLE__) $   List.groupBy ((==) `on` fst) $   map (\(pos, c) -> (IntMap.lookup pos infoMap, (pos, c))) $-  zip [1..] contents+  zip [1..] (T.unpack contents)   where   infoMap = toMap (decompress info)  -- | Constructs the HTML displaying the code. -code :: [(Int, String, Aspects)]+code :: Bool     -- ^ Whether to generate non-code contents as-is+     -> FileType -- ^ Source file type+     -> [TokenInfo]      -> Html-code = mconcat . map mkHtml+code onlyCode fileType = mconcat . if onlyCode+  then case fileType of+         -- Explicitly written all cases, so people+         -- get compile error when adding new file types+         -- when they forget to modify the code here+         RstFileType  -> map mkRst . splitByMarkup+         MdFileType   -> map mkMd . chunksOf 2 . splitByMarkup+         AgdaFileType -> map mkHtml+         -- Any points for using this option?+         TexFileType  -> map mkMd . chunksOf 2 . splitByMarkup+         OrgFileType  -> map mkOrg . splitByMarkup+  else map mkHtml   where-  mkHtml :: (Int, String, Aspects) -> Html+  trd (_, _, a) = a++  splitByMarkup :: [TokenInfo] -> [[TokenInfo]]+  splitByMarkup = splitWhen $ (== Just Markup) . aspect . trd++  mkHtml :: TokenInfo -> Html   mkHtml (pos, s, mi) =     -- Andreas, 2017-06-16, issue #2605:     -- Do not create anchors for whitespace.     applyUnless (mi == mempty) (annotate pos mi) $ toHtml s +  -- | Proposed in #3373, implemented in #3384+  mkRst :: [TokenInfo] -> Html+  mkRst = mconcat . (toHtml rstDelimiter :) . map go+    where+      go token@(_, s, mi) = if aspect mi == Just Background+        then preEscapedToHtml s+        else mkHtml token++  -- | Proposed in #3137, implemented in #3313+  --   Improvement proposed in #3366, implemented in #3367+  mkMd :: [[TokenInfo]] -> Html+  mkMd = mconcat . go+    where+      work token@(_, s, mi) = case aspect mi of+        Just Background -> preEscapedToHtml s+        Just Markup     -> __IMPOSSIBLE__+        _               -> mkHtml token+      go [a, b] = [ mconcat $ work <$> a+                  , pre ! class_ "Agda" $ mconcat $ work <$> b+                  ]+      go [a]    = work <$> a+      go _      = __IMPOSSIBLE__++  mkOrg :: [TokenInfo] -> Html+  mkOrg = mconcat . map go+    where+      go token@(_, s, mi) = if aspect mi == Just Background+        then preEscapedToHtml s+        else mkHtml token+   -- | Put anchors that enable referencing that token.-  --   We put a fail safe numeric anchor (file position) for internal references (issue #2756),-  --   as well as a heuristic name anchor for external references (issue #2604).+  --   We put a fail safe numeric anchor (file position) for internal references+  --   (issue #2756), as well as a heuristic name anchor for external references+  --   (issue #2604).   annotate :: Int -> Aspects -> Html -> Html-  annotate pos mi = applyWhen hereAnchor (anchorage nameAttributes mempty <>) . anchorage posAttributes+  annotate pos mi = applyWhen hereAnchor+      (anchorage nameAttributes mempty <>) . anchorage posAttributes     where     -- | Warp an anchor (<A> tag) with the given attributes around some HTML.     anchorage :: [Attribute] -> Html -> Html@@ -224,7 +337,7 @@      classes = concat       [ concatMap noteClasses (note mi)-      , otherAspectClasses (otherAspects mi)+      , otherAspectClasses (toList $ otherAspects mi)       , concatMap aspectClasses (aspect mi)       ] @@ -239,6 +352,7 @@       opClass = if op then ["Operator"] else []     aspectClasses a = [show a] +     otherAspectClasses = map show      -- Notes are not included.@@ -267,4 +381,4 @@         (++ "#" ++          Network.URI.Encode.encode (show pos))          -- Network.URI.Encode.encode (fromMaybe (show pos) aName)) -- Named links disabled-        (Network.URI.Encode.encode $ modToFile m)+        (Network.URI.Encode.encode $ modToFile m "html")
+ src/full/Agda/Interaction/Highlighting/JSON.hs view
@@ -0,0 +1,79 @@+{-# LANGUAGE CPP #-}++-- | Functions which give precise syntax highlighting info in JSON format.++module Agda.Interaction.Highlighting.JSON (jsonifyHighlightingInfo) where++import Agda.Interaction.Highlighting.Common+import Agda.Interaction.Highlighting.Precise hiding (String)+import Agda.Interaction.Highlighting.Range (Range(..))+import Agda.Interaction.Response+import Agda.TypeChecking.Monad (HighlightingMethod(..), ModuleToSource)+import Agda.Utils.FileName (filePath)+import Agda.Utils.IO.TempFile (writeToTempFile)++import Data.Aeson+import qualified Data.ByteString.Lazy.Char8 as BS+import qualified Data.Map as Map++#include "undefined.h"+import Agda.Utils.Impossible++-- | Encode meta information into a JSON Value+showAspects+  :: ModuleToSource+     -- ^ Must contain a mapping for the definition site's module, if any.+  -> (Range, Aspects) -> Value+showAspects modFile (range, aspect) = object+  [ "range" .= [from range, to range]+  , "atoms" .= toAtoms aspect+  , "tokenBased" .= tokenBased aspect+  , "note" .= note aspect+  , "definitionSite" .= fmap defSite (definitionSite aspect)+  ]+  where+    defSite (DefinitionSite mdl position _ _) = object+      [ "filepath" .= filePath (Map.findWithDefault __IMPOSSIBLE__ mdl modFile)+      , "position" .= position+      ]++instance ToJSON TokenBased where+    toJSON TokenBased = String "TokenBased"+    toJSON NotOnlyTokenBased = String "NotOnlyTokenBased"++-- | Turns syntax highlighting information into a JSON value+jsonifyHighlightingInfo+  :: HighlightingInfo+  -> RemoveTokenBasedHighlighting+  -> HighlightingMethod+  -> ModuleToSource+     -- ^ Must contain a mapping for every definition site's module.+  -> IO Value+jsonifyHighlightingInfo info remove method modFile =+  case chooseHighlightingMethod info method of+    Direct   -> direct+    Indirect -> indirect+  where+    result :: Value+    result = object+      [ "remove" .= case remove of+          RemoveHighlighting -> True+          KeepHighlighting -> False+      , "payload" .= map (showAspects modFile) (ranges info)+      ]++    direct :: IO Value+    direct = return $ object+      [ "kind"   .= String "HighlightingInfo"+      , "direct" .= True+      , "info"   .= result+      ]++    indirect :: IO Value+    indirect = do+      filepath <- writeToTempFile (BS.unpack (encode result))+      return $ object+        [ "kind"     .= String "HighlightingInfo"+        , "direct"   .= False+        , "filepath" .= filepath+        ]
src/full/Agda/Interaction/Highlighting/LaTeX.hs view
@@ -185,21 +185,6 @@ (<+>) :: Text -> Text -> Text (<+>) = T.append -isInfixOf' :: Text -> Text -> Maybe (Text, Text)-isInfixOf' needle haystack = go (T.tails haystack) 0-  where-  go []                                         !n = Nothing-  go ((T.stripPrefix needle -> Just suf) : xss)  n = Just (T.take n haystack, suf)-  go (_                                  : xss)  n = go xss (n + 1)---- Same as above, but starts searching from the back rather than the--- front.-isInfixOfRev :: Text -> Text -> Maybe (Text, Text)-isInfixOfRev needle haystack-  = case T.reverse needle `isInfixOf'` T.reverse haystack of-      Nothing         -> Nothing-      Just (pre, suf) -> Just (T.reverse suf, T.reverse pre)- -- | Does the string consist solely of whitespace?  isSpaces :: Text -> Bool@@ -307,10 +292,10 @@ logHelper debug text extra =   when (debug `elem` debugs) $ do     lift $ T.putStrLn $ T.pack (show debug ++ ": ") <+>-      T.pack "'" <+> text <+> T.pack "' " <+>+      "'" <+> text <+> "' " <+>       if null extra          then T.empty-         else T.pack "(" <+> T.pack (unwords extra) <+> T.pack ")"+         else "(" <+> T.pack (unwords extra) <+> ")"  log :: Debug -> Text -> LaTeX () log MoveColumn text = do@@ -337,15 +322,15 @@ -- alignment, similar to lhs2TeX's approach.  nl, beginCode, endCode :: Text-nl        = T.pack "%\n"-beginCode = T.pack "\\begin{code}"-endCode   = T.pack "\\end{code}"+nl        = "%\n"+beginCode = "\\begin{code}"+endCode   = "\\end{code}"  -- | A command that is used when two tokens are put next to each other -- in the same column.  agdaSpace :: Text-agdaSpace = cmdPrefix <+> T.pack "Space" <+> cmdArg T.empty <+> nl+agdaSpace = cmdPrefix <+> "Space" <+> cmdArg T.empty <+> nl  -- | The column's name. --@@ -360,7 +345,7 @@ -- | Opens a column with the given name.  ptOpen' :: Text -> Text-ptOpen' name = T.pack "\\>[" <+> name <+> T.singleton ']'+ptOpen' name = "\\>[" <+> name <+> "]"  -- | Opens the given column. @@ -371,7 +356,7 @@ -- lines.  ptOpenBeginningOfLine :: Text-ptOpenBeginningOfLine = ptOpen' (T.pack ".")+ptOpenBeginningOfLine = ptOpen' "." <+> "[@{}l@{}]"  -- | Opens the given column, and inserts an indentation instruction -- with the given argument at the end of it.@@ -381,34 +366,34 @@   -> Int              -- ^ Indentation instruction argument.   -> Text ptOpenIndent c delta =-  ptOpen c <+> T.pack "[@{}l@{"+  ptOpen c <+> "[@{}l@{"            <+> cmdPrefix-           <+> T.pack "Indent"+           <+> "Indent"            <+> cmdArg (T.pack $ show delta)-           <+> T.pack "}]"+           <+> "}]"  ptClose :: Text-ptClose = T.pack "\\<"+ptClose = "\\<"  ptClose' :: AlignmentColumn -> Text ptClose' c =-  ptClose <+> T.singleton '[' <+> columnName c <+> T.singleton ']'+  ptClose <+> "[" <+> columnName c <+> "]"  ptNL :: Text-ptNL = nl <+> T.pack "\\\\\n"+ptNL = nl <+> "\\\\\n"  ptEmptyLine :: Text ptEmptyLine =-  nl <+> T.pack "\\\\["+  nl <+> "\\\\["      <+> cmdPrefix-     <+> T.pack "EmptyExtraSkip"-     <+> T.pack "]%\n"+     <+> "EmptyExtraSkip"+     <+> "]%\n"  cmdPrefix :: Text-cmdPrefix = T.pack "\\Agda"+cmdPrefix = "\\Agda"  cmdArg :: Text -> Text-cmdArg x = T.singleton '{' <+> x <+> T.singleton '}'+cmdArg x = "{" <+> x <+> "}"  ------------------------------------------------------------------------ -- * Output generation from a stream of labelled tokens.@@ -429,7 +414,7 @@  -- | Deals with literate text, which is output verbatim processComment = mapM_ $ \t -> do-  unless (T.singleton '%' == T.take 1 (T.stripStart (text t))) $ do+  unless ("%" == T.take 1 (T.stripStart (text t))) $ do     moveColumnForToken t   output (Text (text t)) @@ -464,8 +449,8 @@             -- to its aspect (if any) and other aspects (e.g. error, unsolved meta)             foldr (\c t -> cmdPrefix <+> T.pack c <+> cmdArg t)                   (escape tok)-                  $ concatMap fromAspect (toList $ aspect $ info tok')-                    ++ map fromOtherAspect (otherAspects $ info tok')+                  $ map fromOtherAspect (toList $ otherAspects $ info tok') +++                    concatMap fromAspect (toList $ aspect $ info tok')      -- Non-whitespace tokens at the start of a line trigger an     -- alignment column.@@ -482,12 +467,14 @@     fromAspect :: Aspect -> [String]     fromAspect a = let s = [show a] in case a of       Comment           -> s-      Option            -> s       Keyword           -> s       String            -> s       Number            -> s       Symbol            -> s       PrimitiveType     -> s+      Pragma            -> s+      Background        -> s+      Markup            -> s       Name Nothing isOp -> fromAspect (Name (Just Postulate) isOp)         -- At the time of writing the case above can be encountered in         -- --only-scope-checking mode, for instance for the token "Size"@@ -501,6 +488,7 @@         (\c -> if isOp then ["Operator", c] else [c]) $         case kind of           Bound                     -> s+          Generalizable             -> s           Constructor Inductive     -> "InductiveConstructor"           Constructor CoInductive   -> "CoinductiveConstructor"           Datatype                  -> s@@ -532,7 +520,6 @@     '~'  -> "\\textasciitilde{}"     '^'  -> "\\textasciicircum{}"     '\\' -> "\\textbackslash{}"-    '-'  -> "{-}"     _    -> [ c ] escape _                         = __IMPOSSIBLE__ @@ -599,9 +586,9 @@ -- properly stringLiteral :: Token -> Tokens stringLiteral t | aspect (info t) == Just String =-  reverse $ foldl (\xs x -> t { text = x } : xs) []+  map (\ x -> t { text = x })           $ concatMap leadingSpaces-          $ List.intersperse (T.pack "\n")+          $ List.intersperse "\n"           $ T.lines (text t)   where   leadingSpaces :: Text -> [Text]@@ -654,10 +641,9 @@   inAbsPath <- liftM filePath (Find.findFile mod)    liftIO $ do-    source <- UTF8.readTextFile inAbsPath     latex <- E.encodeUtf8 `fmap`                toLaTeX (O.optCountClusters $ O.optPragmaOptions options)-                       (mkAbsolute inAbsPath) source hi+                       (mkAbsolute inAbsPath) (iSource i) hi     createDirectoryIfMissing True $ dir </> takeDirectory outPath     BS.writeFile (dir </> outPath) latex @@ -679,7 +665,7 @@   :: Bool      -- ^ Count extended grapheme clusters?   -> AbsolutePath-  -> String+  -> L.Text   -> HighlightingInfo   -> IO L.Text toLaTeX cc path source hi@@ -698,14 +684,14 @@             withTokenText $ \suf ->               fromMaybe suf $                 fmap (T.dropWhileEnd isSpaceNotNewline) $-                  T.stripSuffix (T.singleton '\n') suf)+                  T.stripSuffix "\n" suf)         .         (withLast $ withTokenText $ T.dropWhileEnd isSpaceNotNewline)         .         (withFirst $           withTokenText $ \pre ->               fromMaybe pre $-                  T.stripPrefix (T.singleton '\n') $+                  T.stripPrefix "\n" $                     T.dropWhile isSpaceNotNewline pre)       else         -- do nothing@@ -738,7 +724,7 @@   -- Map each character to its role   . atomizeLayers . literateTeX (startPos (Just path)) -  $ source+  $ L.unpack source   where   infoMap = toMap (decompress hi) 
src/full/Agda/Interaction/Highlighting/Precise.hs view
@@ -38,46 +38,60 @@   , mergeC   ) where -import Agda.Utils.String-import Agda.Utils.List-import Data.Maybe-import qualified Data.List as List-import Data.Function-import Data.Semigroup import Control.Applicative ((<$>), (<*>)) import Control.Arrow (second) import Control.Monad++import Data.Function+import qualified Data.List as List+import Data.Maybe+import Data.Semigroup+ import Data.IntMap (IntMap) import qualified Data.IntMap as IntMap +import Data.Set (Set)+import qualified Data.Set as Set+ import qualified Agda.Syntax.Position as P import qualified Agda.Syntax.Common as Common import qualified Agda.Syntax.Concrete as SC  import Agda.Interaction.Highlighting.Range +import Agda.Utils.String+import Agda.Utils.List+ ------------------------------------------------------------------------ -- Files  -- | Syntactic aspects of the code. (These cannot overlap.)---   They can be obtained from the lexed tokens already,---   except for the 'NameKind'.  data Aspect   = Comment-  | Option   | Keyword   | String   | Number   | Symbol                     -- ^ Symbols like forall, =, ->, etc.   | PrimitiveType              -- ^ Things like Set and Prop.   | Name (Maybe NameKind) Bool -- ^ Is the name an operator part?+  | Pragma                     -- ^ Text occurring in pragmas that+                               --   does not have a more specific+                               --   aspect.+  | Background                 -- ^ Non-code contents in literate Agda+  | Markup+    -- ^ Delimiters used to separate the Agda code blocks from the+    -- other contents in literate Agda     deriving (Eq, Show)  -- | @NameKind@s are figured out during scope checking.  data NameKind   = Bound                         -- ^ Bound variable.+  | Generalizable                 -- ^ Generalizable variable.+                                  --   (This includes generalizable+                                  --   variables that have been+                                  --   generalized).   | Constructor Common.Induction  -- ^ Inductive or coinductive constructor.   | Datatype   | Field                         -- ^ Record field.@@ -102,22 +116,26 @@     -- could for instance be an emptyness constraint.   | TerminationProblem   | PositivityProblem-  | ReachabilityProblem+  | Deadcode+    -- ^ Used for highlighting unreachable clauses, unreachable RHS+    -- (because of an absurd pattern), etc.   | CoverageProblem   | IncompletePattern     -- ^ When this constructor is used it is probably a good idea to     -- include a 'note' explaining why the pattern is incomplete.-  | CatchallClause   | TypeChecks     -- ^ Code which is being type-checked.-    deriving (Eq, Show, Enum, Bounded)+  -- NB: We put CatchallClause last so that it is overwritten by other,+  -- more important, aspects in the emacs mode.+  | CatchallClause+    deriving (Eq, Ord, Show, Enum, Bounded)  -- | Meta information which can be associated with a -- character\/character range.  data Aspects = Aspects   { aspect       :: Maybe Aspect-  , otherAspects :: [OtherAspect]+  , otherAspects :: Set OtherAspect   , note         :: Maybe String     -- ^ This note, if present, can be displayed as a tool-tip or     -- something like that. It should contain useful information about@@ -154,7 +172,7 @@  instance Eq Aspects where   Aspects a o _ d t == Aspects a' o' _ d' t' =-    (a, List.nub o, d, t) == (a', List.nub o', d', t')+    (a, o, d, t) == (a', o', d', t')  -- | A 'File' is a mapping from file positions to meta information. --@@ -204,7 +222,7 @@ mergeAspects :: Aspects -> Aspects -> Aspects mergeAspects m1 m2 = Aspects   { aspect       = (mplus `on` aspect) m1 m2-  , otherAspects = List.nub $ ((++) `on` otherAspects) m1 m2+  , otherAspects = (Set.union `on` otherAspects) m1 m2   , note         = case (note m1, note m2) of       (Just n1, Just n2) -> Just $          if n1 == n2@@ -223,7 +241,7 @@ instance Monoid Aspects where   mempty = Aspects     { aspect         = Nothing-    , otherAspects   = []+    , otherAspects   = Set.empty     , note           = Nothing     , definitionSite = Nothing     , tokenBased     = mempty
src/full/Agda/Interaction/Highlighting/Vim.hs view
@@ -27,6 +27,7 @@ escape :: String -> String escape = concatMap esc     where+        escchars :: String         escchars = "$\\^.*~[]"         esc c   | c `elem` escchars = ['\\',c]                 | otherwise         = [c]@@ -77,9 +78,9 @@         midefs = concatMap parts defs         miflds = concatMap parts flds -        parts (NoName _ _) = []-        parts (Name _ [_]) = []-        parts (Name _ ps)  = [ rawNameToString x | Id x <- ps ]+        parts (NoName _ _)    = []+        parts (Name _ _ [_])  = []+        parts (Name _ _ ps)   = [ rawNameToString x | Id x <- ps ]  generateVimFile :: FilePath -> TCM () generateVimFile file = do
src/full/Agda/Interaction/Imports.hs view
@@ -24,6 +24,8 @@ import Data.Monoid (mempty, mappend) import Data.Map (Map) import Data.Set (Set)+import Data.Text.Lazy (Text)+import qualified Data.Text.Lazy as T  import System.Directory (doesFileExist, getModificationTime, removeFile) import System.FilePath ((</>))@@ -35,6 +37,7 @@ import qualified Agda.Syntax.Abstract as A import qualified Agda.Syntax.Concrete as C import Agda.Syntax.Abstract.Name+import Agda.Syntax.Common import Agda.Syntax.Parser import Agda.Syntax.Position import Agda.Syntax.Scope.Base@@ -83,6 +86,29 @@ #include "undefined.h" import Agda.Utils.Impossible +-- | Some information about the source code.++data SourceInfo = SourceInfo+  { siSource     :: Text                  -- ^ Source code.+  , siFileType   :: FileType              -- ^ Source file type+  , siModule     :: C.Module              -- ^ The parsed module.+  , siModuleName :: C.TopLevelModuleName  -- ^ The top-level module name.+  }++-- | Computes a 'SourceInfo' record for the given file.++sourceInfo :: AbsolutePath -> TCM SourceInfo+sourceInfo f = Bench.billTo [Bench.Parsing] $ do+  source                <- runPM $ readFilePM f+  (parsedMod, fileType) <- runPM $+                           parseFile moduleParser f $ T.unpack source+  moduleName            <- moduleName f parsedMod+  return $ SourceInfo { siSource     = source+                      , siFileType   = fileType+                      , siModule     = parsedMod+                      , siModuleName = moduleName+                      }+ -- | Is the aim to type-check the top-level module, or only to -- scope-check it? @@ -118,7 +144,7 @@         prim    = [ x | (_,Prim x) <- builtin ]         bi      = Map.fromList [ (x,Builtin t) | (x,Builtin t) <- builtin ]         warns   = iWarnings i-    bs <- gets stBuiltinThings+    bs <- getsTC stBuiltinThings     reportSLn "import.iface.merge" 10 $ "Merging interface"     reportSLn "import.iface.merge" 20 $       "  Current builtins " ++ show (Map.keys bs) ++ "\n" ++@@ -139,18 +165,18 @@     where         rebind (x, q) = do             PrimImpl _ pf <- lookupPrimitiveFunction x-            stImportedBuiltins %= Map.insert x (Prim pf{ primFunName = q })+            stImportedBuiltins `modifyTCLens` Map.insert x (Prim pf{ primFunName = q })  addImportedThings ::   Signature -> BuiltinThings PrimFun ->   A.PatternSynDefns -> DisplayForms -> Map A.QName String -> [TCWarning] -> TCM () addImportedThings isig ibuiltin patsyns display userwarn warnings = do-  stImports              %= \ imp -> unionSignatures [imp, isig]-  stImportedBuiltins     %= \ imp -> Map.union imp ibuiltin-  stImportedUserWarnings %= \ imp -> Map.union imp userwarn-  stPatternSynImports    %= \ imp -> Map.union imp patsyns-  stImportedDisplayForms %= \ imp -> HMap.unionWith (++) imp display-  stTCWarnings           %= \ imp -> List.union imp warnings+  stImports              `modifyTCLens` \ imp -> unionSignatures [imp, isig]+  stImportedBuiltins     `modifyTCLens` \ imp -> Map.union imp ibuiltin+  stImportedUserWarnings `modifyTCLens` \ imp -> Map.union imp userwarn+  stPatternSynImports    `modifyTCLens` \ imp -> Map.union imp patsyns+  stImportedDisplayForms `modifyTCLens` \ imp -> HMap.unionWith (++) imp display+  stTCWarnings           `modifyTCLens` \ imp -> List.union imp warnings   addImportedInstances isig  -- | Scope checks the given module. A proper version of the module@@ -172,7 +198,7 @@     return (iModuleName i `withRangesOfQ` mnameToConcrete x, s)  data MaybeWarnings' a = NoWarnings | SomeWarnings a-  deriving (Functor, Foldable, Traversable)+  deriving (Show, Functor, Foldable, Traversable) type MaybeWarnings = MaybeWarnings' [TCWarning]  applyFlagsToMaybeWarnings :: MaybeWarnings -> TCM MaybeWarnings@@ -197,16 +223,27 @@  alreadyVisited :: C.TopLevelModuleName ->                   MainInterface ->+                  PragmaOptions ->                   TCM (Interface, MaybeWarnings) ->                   TCM (Interface, MaybeWarnings)-alreadyVisited x isMain getIface = do+alreadyVisited x isMain currentOptions getIface = do     mm <- getVisitedModule x     case mm of         -- A module with warnings should never be allowed to be         -- imported from another module.         Just mi | not (miWarnings mi) -> do           reportSLn "import.visit" 10 $ "  Already visited " ++ prettyShow x-          return (miInterface mi, NoWarnings)+          let i = miInterface mi+          -- Check that imported options are compatible with current ones,+          -- but give primitive modules a pass+          optsCompat <- if miPrimitive mi then return True else do+            ifM (asksTC envCheckOptionConsistency)+            {-then-} (checkOptionsCompatible currentOptions (iOptionsUsed i)+                                             (iModuleName i))+            {-else-} (return True)+          if optsCompat then return (i , NoWarnings) else do+            wt <- getMaybeWarnings' isMain ErrorWarnings+            return (i, wt)         _ -> do           reportSLn "import.visit" 5 $ "  Getting interface for " ++ prettyShow x           r@(i, wt) <- getIface@@ -215,6 +252,7 @@             visitModule $ ModuleInfo               { miInterface  = i               , miWarnings   = hasWarnings wt+              , miPrimitive  = False -- will be updated later for primitive modules               }           return r @@ -232,32 +270,51 @@ --   however, that if the file has already been type-checked, then a --   complete interface is returned. -typeCheckMain :: AbsolutePath -> Mode -> TCM (Interface, MaybeWarnings)-typeCheckMain f mode = do+typeCheckMain+  :: AbsolutePath+     -- ^ The path to the file.+  -> Mode+     -- ^ Should the file be type-checked, or only scope-checked?+  -> SourceInfo+     -- ^ Information about the source code.+  -> TCM (Interface, MaybeWarnings)+typeCheckMain f mode si = do   -- liftIO $ putStrLn $ "This is typeCheckMain " ++ prettyShow f   -- liftIO . putStrLn . show =<< getVerbosity   reportSLn "import.main" 10 $ "Importing the primitive modules."   libdir <- liftIO defaultLibDir+  let libdirPrim = libdir </> "prim"   reportSLn "import.main" 20 $ "Library dir = " ++ show libdir-  -- To allow posulating the built-ins, check the primitive module-  -- in unsafe mode-  _ <- bracket_ (gets $ Lens.getSafeMode) Lens.putSafeMode $ do-    Lens.putSafeMode False-    -- Turn off import-chasing messages.-    -- We have to modify the persistent verbosity setting, since-    -- getInterface resets the current verbosity settings to the persistent ones.-    bracket_ (gets $ Lens.getPersistentVerbosity) Lens.putPersistentVerbosity $ do-      Lens.modifyPersistentVerbosity (Trie.delete [])  -- set root verbosity to 0-      -- We don't want to generate highlighting information for Agda.Primitive.-      withHighlightingLevel None $-        getInterface_ =<< do-          moduleName $ mkAbsolute $-            libdir </> "prim" </> "Agda" </> "Primitive.agda"+  -- Turn off import-chasing messages.+  -- We have to modify the persistent verbosity setting, since+  -- getInterface resets the current verbosity settings to the persistent ones.+  bracket_ (getsTC Lens.getPersistentVerbosity) Lens.putPersistentVerbosity $ do+    Lens.modifyPersistentVerbosity (Trie.delete [])  -- set root verbosity to 0++    -- We don't want to generate highlighting information for Agda.Primitive.+    withHighlightingLevel None $ withoutOptionsChecking $+      forM_ (Set.map (libdirPrim </>) Lens.primitiveModules) $ \f -> do+        let file = mkAbsolute f+        si <- sourceInfo file+        checkModuleName' (siModuleName si) file+        _ <- getInterface_ (siModuleName si) (Just si)+        -- record that the just visited module is primitive+        mapVisitedModule (siModuleName si) (\ m -> m { miPrimitive = True })+   reportSLn "import.main" 10 $ "Done importing the primitive modules." -  -- Now do the type checking via getInterface.-  m <- moduleName f-  getInterface' m (MainInterface mode)+  -- Now do the type checking via getInterface'.+  checkModuleName' (siModuleName si) f+  getInterface' (siModuleName si) (MainInterface mode) (Just si)+  where+  checkModuleName' m f =+    -- Andreas, 2016-07-11, issue 2092+    -- The error range should be set to the file with the wrong module name+    -- not the importing one (which would be the default).+    (if null r then id else traceCall (SetRange r)) $+      checkModuleName m f Nothing+    where+    r = getRange m  -- | Tries to return the interface associated to the given (imported) module. --   The time stamp of the relevant interface file is also returned.@@ -268,13 +325,17 @@ --   Do not use this for the main file, use 'typeCheckMain' instead.  getInterface :: ModuleName -> TCM Interface-getInterface = getInterface_ . toTopLevelModuleName+getInterface m = getInterface_ (toTopLevelModuleName m) Nothing  -- | See 'getInterface'. -getInterface_ :: C.TopLevelModuleName -> TCM Interface-getInterface_ x = do-  (i, wt) <- getInterface' x NotMainInterface+getInterface_+  :: C.TopLevelModuleName+  -> Maybe SourceInfo+     -- ^ Optional information about the source code.+  -> TCM Interface+getInterface_ x msi = do+  (i, wt) <- getInterface' x NotMainInterface msi   case wt of     SomeWarnings w  -> tcWarningsToError (filter (notIM . tcWarning) w)     NoWarnings      -> return i@@ -291,28 +352,41 @@ getInterface'   :: C.TopLevelModuleName   -> MainInterface+  -> Maybe SourceInfo+     -- ^ Optional information about the source code.   -> TCM (Interface, MaybeWarnings)-getInterface' x isMain = do+getInterface' x isMain msi = do   withIncreasedModuleNestingLevel $ do     -- Preserve the pragma options unless we are checking the main     -- interface.-    bracket_ (use stPragmaOptions)-             (unless (includeStateChanges isMain) . (stPragmaOptions .=)) $ do-     -- Forget the pragma options (locally).-     setCommandLineOptions . stPersistentOptions . stPersistentState =<< get+    bracket_ (useTC stPragmaOptions)+             (unless (includeStateChanges isMain) . (stPragmaOptions `setTCLens`)) $ do+     -- We remember but reset the pragma options locally+     -- For the main interface, we also remember the pragmas from the file+     when (includeStateChanges isMain) $ do+       pragmas <- concreteOptionsToOptionPragmas+                    (fst $ maybe __IMPOSSIBLE__ siModule msi)+       mapM_ setOptionsFromPragma pragmas+     currentOptions <- useTC stPragmaOptions+     -- Now reset the options+     setCommandLineOptions . stPersistentOptions . stPersistentState =<< getTC -     alreadyVisited x isMain $ addImportCycleCheck x $ do+     alreadyVisited x isMain currentOptions $ addImportCycleCheck x $ do       file <- findFile x  -- requires source to exist        reportSLn "import.iface" 10 $ "  Check for cycle"       checkForImportCycle        uptodate <- Bench.billTo [Bench.Import] $ do-        ignore <- ignoreInterfaces+        ignore <- (ignoreInterfaces `and2M`+                    (not <$> Lens.isBuiltinModule (filePath file)))+                  `or2M` ignoreAllInterfaces         cached <- runMaybeT $ isCached x file           -- If it's cached ignoreInterfaces has no effect;           -- to avoid typechecking a file more than once.-        sourceH <- liftIO $ hashFile file+        sourceH <- case msi of+                     Nothing -> liftIO $ hashTextFile file+                     Just si -> return $ hashText (siSource si)         ifaceH  <-           case cached of             Nothing -> fmap fst <$> getInterfaceFileHashes (filePath $ toIFile file)@@ -333,8 +407,8 @@         let maySkip = True          if uptodate && maySkip-          then getStoredInterface x file isMain-          else typeCheck          x file isMain+          then getStoredInterface x file isMain msi+          else typeCheck          x file isMain msi        -- Ensure that the given module name matches the one in the file.       let topLevelName = toTopLevelModuleName $ iModuleName i@@ -346,23 +420,55 @@       visited <- isVisited x       reportSLn "import.iface" 5 $ if visited then "  We've been here. Don't merge."                                    else "  New module. Let's check it out."++      -- Check that imported module options are consistent with+      -- current options (issue #2487)+      -- compute updated warnings if needed+      wt' <- ifM (not <$> asksTC envCheckOptionConsistency)+                 {- then -} (return wt) {- else -} $ do+        optComp <- checkOptionsCompatible currentOptions (iOptionsUsed i) (iModuleName i)+        -- we might have aquired some more warnings when consistency checking+        if optComp then return wt else getMaybeWarnings' isMain ErrorWarnings+       unless (visited || stateChangesIncluded) $ do         mergeInterface i         Bench.billTo [Bench.Highlighting] $           ifTopLevelAndHighlightingLevelIs NonInteractive $             highlightFromInterface i file -      stCurrentModule .= Just (iModuleName i)+      stCurrentModule `setTCLens` Just (iModuleName i)        -- Interfaces are not stored if we are only scope-checking, or       -- if any warnings were encountered.-      case (isMain, wt) of+      case (isMain, wt') of         (MainInterface ScopeCheck, _) -> return ()         (_, SomeWarnings w)           -> return ()         _                             -> storeDecodedModule i -      return (i, wt)+      return (i, wt') +-- | Check if the options used for checking an imported module are+--   compatible with the current options. Raises Non-fatal errors if+--   not.+checkOptionsCompatible :: PragmaOptions -> PragmaOptions -> ModuleName -> TCM Bool+checkOptionsCompatible current imported importedModule = flip execStateT True $ do+  reportSDoc "import.iface.options" 5 $ P.nest 2 $ "current options  =" P.<+> showOptions current+  reportSDoc "import.iface.options" 5 $ P.nest 2 $ "imported options =" P.<+> showOptions imported+  forM_ coinfectiveOptions $ \ (opt, optName) -> do+    unless ((opt current) `implies` (opt imported)) $ do+      put False+      warning (CoInfectiveImport optName importedModule)+  forM_ infectiveOptions $ \ (opt, optName) -> do+    unless ((opt imported) `implies` (opt current)) $ do+      put False+      warning (InfectiveImport optName importedModule)+  where+    implies :: Bool -> Bool -> Bool+    p `implies` q = p <= q++    showOptions opts = P.prettyList (map (\ (o, n) -> P.text n P.<> ": " P.<+> (P.pretty $ o opts))+                                 (coinfectiveOptions ++ infectiveOptions))+ -- | Check whether interface file exists and is in cache --   in the correct version (as testified by the interface file hash). @@ -398,12 +504,14 @@   -> AbsolutePath      -- ^ File we process.   -> MainInterface+  -> Maybe SourceInfo+     -- ^ Optional information about the source code.   -> TCM (Bool, (Interface, MaybeWarnings))      -- ^ @Bool@ is: do we have to merge the interface?-getStoredInterface x file isMain = do+getStoredInterface x file isMain msi = do   -- If something goes wrong (interface outdated etc.)   -- we revert to fresh type checking.-  let fallback = typeCheck x file isMain+  let fallback = typeCheck x file isMain msi    -- Examine the hash of the interface file. If it is different from the   -- stored version (in stDecodedModules), or if there is no stored version,@@ -435,26 +543,43 @@     Just i        -> do       reportSLn "import.iface" 5 $ "  imports: " ++ show (iImportedModules i) -      hs <- map iFullHash <$> mapM getInterface (map fst $ iImportedModules i)+      -- We set the pragma options of the skipped file here, so that+      -- we can check that they are compatible with those of the+      -- imported modules. Also, if the top-level file is skipped we+      -- want the pragmas to apply to interactive commands in the UI.+      mapM_ setOptionsFromPragma (iPragmaOptions i) -      -- If any of the imports are newer we need to retype check-      if hs /= map snd (iImportedModules i)-        then do-          -- liftIO close -- Close the interface file. See above.-          fallback-        else do-          unless cached $ do-            chaseMsg "Loading " x $ Just ifile-            -- print imported warnings-            let ws = filter ((Strict.Just file ==) . tcWarningOrigin) (iWarnings i)-            unless (null ws) $ reportSDoc "warning" 1 $ P.vcat $ P.prettyTCM <$> ws+      -- Check that options that matter haven't changed compared to+      -- current options (issue #2487)+      optionsChanged <-ifM ((not <$> asksTC envCheckOptionConsistency) `or2M`+                            Lens.isBuiltinModule (filePath file))+                       {-then-} (return False) {-else-} $ do+        currentOptions <- useTC stPragmaOptions+        let disagreements =+              [ optName | (opt, optName) <- restartOptions,+                          (opt currentOptions) /= (opt (iOptionsUsed i))]+        if null disagreements then return False else do+          reportSLn "import.iface.options" 4 $ "  Changes in the following options in " ++ prettyShow (filePath file) ++ ", re-typechecking: "  ++ prettyShow disagreements+          return True -          -- We set the pragma options of the skipped file here,-          -- because if the top-level file is skipped we want the-          -- pragmas to apply to interactive commands in the UI.-          mapM_ setOptionsFromPragma (iPragmaOptions i)-          return (False, (i, NoWarnings))+      if optionsChanged then fallback else do +        hs <- map iFullHash <$> mapM getInterface (map fst $ iImportedModules i)++        -- If any of the imports are newer we need to retype check+        if hs /= map snd (iImportedModules i)+          then do+            -- liftIO close -- Close the interface file. See above.+            fallback+          else do+            unless cached $ do+              chaseMsg "Loading " x $ Just ifile+              -- print imported warnings+              let ws = filter ((Strict.Just file ==) . tcWarningOrigin) (iWarnings i)+              unless (null ws) $ reportSDoc "warning" 1 $ P.vcat $ P.prettyTCM <$> ws++            return (False, (i, NoWarnings))+ -- | Run the type checker on a file and create an interface. -- --   Mostly, this function calls 'createInterface'.@@ -468,9 +593,11 @@   -> AbsolutePath      -- ^ File we process.   -> MainInterface+  -> Maybe SourceInfo+     -- ^ Optional information about the source code.   -> TCM (Bool, (Interface, MaybeWarnings))      -- ^ @Bool@ is: do we have to merge the interface?-typeCheck x file isMain = do+typeCheck x file isMain msi = do   unless (includeStateChanges isMain) cleanCachedLog   let checkMsg = case isMain of                    MainInterface ScopeCheck -> "Reading "@@ -488,32 +615,34 @@    case isMain of     MainInterface _ -> do-      r <- withMsgs $ createInterface file x isMain+      r <- withMsgs $ createInterface file x isMain msi       return (True, r)      NotMainInterface -> do       ms       <- getImportPath-      nesting  <- asks envModuleNestingLevel-      range    <- asks envRange-      call     <- asks envCall-      mf       <- use stModuleToSource+      nesting  <- asksTC envModuleNestingLevel+      range    <- asksTC envRange+      call     <- asksTC envCall+      mf       <- useTC stModuleToSource       vs       <- getVisitedModules       ds       <- getDecodedModules-      opts     <- stPersistentOptions . stPersistentState <$> get-      isig     <- use stImports-      ibuiltin <- use stImportedBuiltins-      display  <- use stImportsDisplayForms-      userwarn <- use stImportedUserWarnings+      opts     <- stPersistentOptions . stPersistentState <$> getTC+      isig     <- useTC stImports+      ibuiltin <- useTC stImportedBuiltins+      display  <- useTC stImportsDisplayForms+      userwarn <- useTC stImportedUserWarnings       ipatsyns <- getPatternSynImports       ho       <- getInteractionOutputCallback       -- Every interface is treated in isolation. Note: Some changes to       -- the persistent state may not be preserved if an error other       -- than a type error or an IO exception is encountered in an       -- imported module.-      r <- noCacheForImportedModule $+      r <- withoutCache $+           -- The cache should not be used for an imported module, and it+           -- should be restored after the module has been type-checked            freshTCM $              withImportPath ms $-             local (\e -> e { envModuleNestingLevel = nesting+             localTC (\e -> e { envModuleNestingLevel = nesting                               -- Andreas, 2014-08-18:                               -- Preserve the range of import statement                               -- for reporting termination errors in@@ -524,15 +653,15 @@                setDecodedModules ds                setCommandLineOptions opts                setInteractionOutputCallback ho-               stModuleToSource .= mf+               stModuleToSource `setTCLens` mf                setVisitedModules vs                addImportedThings isig ibuiltin ipatsyns display userwarn [] -               r  <- withMsgs $ createInterface file x isMain-               mf <- use stModuleToSource+               r  <- withMsgs $ createInterface file x isMain msi+               mf <- useTC stModuleToSource                ds <- getDecodedModules                return (r, do-                  stModuleToSource .= mf+                  stModuleToSource `setTCLens` mf                   setDecodedModules ds                   case r of                     (i, NoWarnings) -> storeDecodedModule i@@ -552,7 +681,7 @@                 -- file, only the cached interface. (This comment is not                 -- correct, see                 -- test/Fail/customised/NestedProjectRoots.err.)-                getStoredInterface x file isMain+                getStoredInterface x file isMain msi               _ -> return (False, r)  -- | Formats and outputs the "Checking", "Finished" and "Loading " messages.@@ -563,7 +692,7 @@   -> Maybe String         -- ^ Optionally: the file name.   -> TCM () chaseMsg kind x file = do-  indentation <- (`replicate` ' ') <$> asks envModuleNestingLevel+  indentation <- (`replicate` ' ') <$> asksTC envModuleNestingLevel   let maybeFile = caseMaybe file "." $ \ f -> " (" ++ f ++ ")."       vLvl | kind == "Checking" = 1            | otherwise          = 2@@ -640,6 +769,14 @@ removePrivates :: ScopeInfo -> ScopeInfo removePrivates si = si { scopeModules = restrictPrivate <$> scopeModules si } +concreteOptionsToOptionPragmas :: [C.Pragma] -> TCM [OptionsPragma]+concreteOptionsToOptionPragmas p = do+  pragmas <- concat <$> concreteToAbstract_ p+  -- identity for top-level pragmas at the moment+  let getOptions (A.OptionsPragma opts) = Just opts+      getOptions _                      = Nothing+  return $ mapMaybe getOptions pragmas+ -- | Tries to type check a module and write out its interface. The -- function only writes out an interface file if it does not encounter -- any warnings.@@ -650,14 +787,12 @@ createInterface   :: AbsolutePath          -- ^ The file to type check.   -> C.TopLevelModuleName  -- ^ The expected module name.-  -> MainInterface+  -> MainInterface         -- ^ Are we dealing with the main module?+  -> Maybe SourceInfo      -- ^ Optional information about the source code.   -> TCM (Interface, MaybeWarnings)-createInterface file mname isMain = Bench.billTo [Bench.TopModule mname] $-  local (\e -> e { envCurrentPath = Just file }) $ do-    modFile       <- use stModuleToSource-    fileTokenInfo <- Bench.billTo [Bench.Highlighting] $-                       generateTokenInfo file-    stTokens .= fileTokenInfo+createInterface file mname isMain msi =+  Bench.billTo [Bench.TopModule mname] $+  localTC (\e -> e { envCurrentPath = Just file }) $ do      reportSLn "import.iface.create" 5 $       "Creating interface for " ++ prettyShow mname ++ "."@@ -666,15 +801,20 @@       reportSLn "import.iface.create" 10 $         "  visited: " ++ List.intercalate ", " (map prettyShow visited) -    -- Parsing.-    (pragmas, top) <- Bench.billTo [Bench.Parsing] $-      runPM $ parseFile' moduleParser file+    (source, fileType, (pragmas, top)) <- do+      si <- case msi of+        Nothing -> sourceInfo file+        Just si -> return si+      case si of+        SourceInfo {..} -> return (siSource, siFileType, siModule) -    pragmas <- concat <$> concreteToAbstract_ pragmas-               -- identity for top-level pragmas at the moment-    let getOptions (A.OptionsPragma opts) = Just opts-        getOptions _                      = Nothing-        options = catMaybes $ map getOptions pragmas+    modFile       <- useTC stModuleToSource+    fileTokenInfo <- Bench.billTo [Bench.Highlighting] $+                       generateTokenInfoFromSource+                         file (T.unpack source)+    stTokens `setTCLens` fileTokenInfo++    options <- concreteOptionsToOptionPragmas pragmas     mapM_ setOptionsFromPragma options  @@ -707,7 +847,7 @@      -- invalidate cache if pragmas change, TODO move     cachingStarts-    opts <- use stPragmaOptions+    opts <- useTC stPragmaOptions     me <- readFromCachedLog     case me of       Just (Pragmas opts', _) | opts == opts'@@ -746,21 +886,21 @@     Bench.billTo [Bench.Highlighting] $ do        -- Move any remaining token highlighting to stSyntaxInfo.-      toks <- use stTokens+      toks <- useTC stTokens       ifTopLevelAndHighlightingLevelIs NonInteractive $         printHighlightingInfo KeepHighlighting toks-      stTokens .= mempty+      stTokens `setTCLens` mempty        -- Grabbing warnings and unsolved metas to highlight them       warnings <- getAllWarnings AllWarnings       unless (null warnings) $ reportSDoc "import.iface.create" 20 $-        P.text "collected warnings: " P.<> prettyTCM warnings+        "collected warnings: " P.<> prettyTCM warnings       unsolved <- getAllUnsolved       unless (null unsolved) $ reportSDoc "import.iface.create" 20 $-        P.text "collected unsolved: " P.<> prettyTCM unsolved+        "collected unsolved: " P.<> prettyTCM unsolved       let warningInfo = compress $ foldMap warningHighlighting $ unsolved ++ warnings -      stSyntaxInfo %= \inf -> (inf `mappend` toks) `mappend` warningInfo+      stSyntaxInfo `modifyTCLens` \inf -> (inf `mappend` toks) `mappend` warningInfo        whenM (optGenerateVimFile <$> commandLineOptions) $         -- Generate Vim file.@@ -785,20 +925,25 @@     -- When open metas are allowed,     -- permanently freeze them now by turning them into postulates.     -- This will enable serialization.-    -- savedMetaStore <- use stMetaStore+    -- savedMetaStore <- useTC stMetaStore+    allowUnsolved <- optAllowUnsolved <$> pragmaOptions     unless (includeStateChanges isMain) $-      whenM (optAllowUnsolved <$> pragmaOptions) $ do+      -- Andreas, 2018-11-15, re issue #3393:+      -- We do not get here when checking the main module+      -- (then includeStateChanges is True).+      when allowUnsolved $ do+        reportSLn "import.iface.create" 7 $ "Turning unsolved metas (if any) into postulates."         withCurrentModule (scopeCurrent scope) $           openMetasToPostulates         -- Clear constraints as they might refer to what         -- they think are open metas.-        stAwakeConstraints    .= []-        stSleepingConstraints .= []+        stAwakeConstraints    `setTCLens` []+        stSleepingConstraints `setTCLens` []      -- Serialization.     reportSLn "import.iface.create" 7 $ "Starting serialization."     i <- Bench.billTo [Bench.Serialization, Bench.BuildInterface] $ do-      buildInterface file topLevel options+      buildInterface source fileType topLevel options      reportSLn "tc.top" 101 $ unlines $       "Signature:" :@@ -816,9 +961,18 @@      reportSLn "import.iface.create" 7 $ "Considering writing to interface file."     case (mallWarnings, isMain) of-      (SomeWarnings allWarnings, _) -> return ()-      (_, MainInterface ScopeCheck) -> return ()+      (SomeWarnings allWarnings, _) -> do+        -- Andreas, 2018-11-15, re issue #3393+        -- The following is not sufficient to fix #3393+        -- since the replacement of metas by postulates did not happen.+        -- -- | not (allowUnsolved && all (isUnsolvedWarning . tcWarning) allWarnings) -> do+        reportSLn "import.iface.create" 7 $ "We have warnings, skipping writing interface file."+        return ()+      (_, MainInterface ScopeCheck) -> do+        reportSLn "import.iface.create" 7 $ "We are just scope-checking, skipping writing interface file."+        return ()       _ -> Bench.billTo [Bench.Serialization] $ do+        reportSLn "import.iface.create" 7 $ "Actually calling writeInterface."         -- The file was successfully type-checked (and no warnings were         -- encountered), so the interface should be written out.         let ifile = filePath $ toIFile file@@ -827,7 +981,7 @@      -- -- Restore the open metas, as we might continue in interaction mode.     -- Actually, we do not serialize the metas if checking the MainInterface-    -- stMetaStore .= savedMetaStore+    -- stMetaStore `setTCLens` savedMetaStore      -- Profiling: Print statistics.     printStatistics 30 (Just mname) =<< getStatistics@@ -835,7 +989,7 @@     -- Get the statistics of the current module     -- and add it to the accumulated statistics.     localStatistics <- getStatistics-    lensAccumStatistics %= Map.unionWith (+) localStatistics+    lensAccumStatistics `modifyTCLens` Map.unionWith (+) localStatistics     verboseS "profile" 1 $ do       reportSLn "import.iface" 5 $ "Accumulated statistics." @@ -876,7 +1030,7 @@ getAllWarnings' :: MainInterface -> WhichWarnings -> TCM [TCWarning] getAllWarnings' isMain ww = do   unsolved            <- getAllUnsolved-  collectedTCWarnings <- use stTCWarnings+  collectedTCWarnings <- useTC stTCWarnings    let showWarn w = classifyWarning w <= ww &&                     not (null unsolved && onlyShowIfUnsolved w)@@ -897,12 +1051,12 @@            then NoWarnings            else SomeWarnings allWarnings -errorWarningsOfTCErr :: TCErr -> TCM [TCWarning]-errorWarningsOfTCErr err = case err of+getAllWarningsOfTCErr :: TCErr -> TCM [TCWarning]+getAllWarningsOfTCErr err = case err of   TypeError tcst cls -> case clValue cls of     NonFatalErrors{} -> return []-    _ -> localState $ do-      put tcst+    _ -> localTCState $ do+      putTC tcst       ws <- getAllWarnings AllWarnings       -- We filter out the unsolved(Metas/Constraints) to stay       -- true to the previous error messages.@@ -920,13 +1074,16 @@ -- have been successfully type checked.  buildInterface-  :: AbsolutePath+  :: Text+     -- ^ Source code.+  -> FileType+     -- ^ Agda file? Literate Agda file?   -> TopLevelInfo      -- ^ 'TopLevelInfo' for the current module.   -> [OptionsPragma]      -- ^ Options set in @OPTIONS@ pragmas.   -> TCM Interface-buildInterface file topLevel pragmas = do+buildInterface source fileType topLevel pragmas = do     reportSLn "import.iface" 5 "Building interface..."     let m = topLevelModuleName topLevel     scope'  <- getScope@@ -941,28 +1098,31 @@     -- that introduced this change seems to have made Agda a bit     -- faster and interface file sizes a bit smaller, at least for the     -- standard library).-    builtin <- use stLocalBuiltins+    builtin <- useTC stLocalBuiltins     ms      <- getImports     mhs     <- mapM (\ m -> (m,) <$> moduleHash m) $ Set.toList ms-    foreignCode <- use stForeignCode+    foreignCode <- useTC stForeignCode     -- Ulf, 2016-04-12:     -- Non-closed display forms are not applicable outside the module anyway,     -- and should be dead-code eliminated (#1928).-    display <- HMap.filter (not . null) . HMap.map (filter isClosed) <$> use stImportsDisplayForms+    display <- HMap.filter (not . null) . HMap.map (filter isClosed) <$> useTC stImportsDisplayForms     -- TODO: Kill some ranges?     (display, sig) <- eliminateDeadCode display =<< getSignature-    userwarns <- use stLocalUserWarnings-    syntaxInfo <- use stSyntaxInfo+    userwarns <- useTC stLocalUserWarnings+    syntaxInfo <- useTC stSyntaxInfo+    optionsUsed <- useTC stPragmaOptions+     -- Andreas, 2015-02-09 kill ranges in pattern synonyms before     -- serialization to avoid error locations pointing to external files-    -- when expanding a pattern synoym.+    -- when expanding a pattern synonym.     patsyns <- killRange <$> getPatternSyns-    h       <- liftIO $ hashFile file     let builtin' = Map.mapWithKey (\ x b -> (x,) . primFunName <$> b) builtin     warnings <- getAllWarnings AllWarnings     reportSLn "import.iface" 7 "  instantiating all meta variables"     i <- instantiateFull $ Interface-      { iSourceHash      = h+      { iSourceHash      = hashText source+      , iSource          = source+      , iFileType        = fileType       , iImportedModules = mhs       , iModuleName      = m       , iScope           = empty -- publicModules scope@@ -974,6 +1134,7 @@       , iForeignCode     = foreignCode       , iHighlighting    = syntaxInfo       , iPragmaOptions   = pragmas+      , iOptionsUsed     = optionsUsed       , iPatternSyns     = patsyns       , iWarnings        = warnings       }
src/full/Agda/Interaction/InteractionTop.hs view
@@ -15,6 +15,7 @@ import Control.Concurrent import Control.Concurrent.Async import Control.Concurrent.STM.TChan+import Control.Concurrent.STM.TVar import qualified Control.Exception as E import Control.Monad.Identity import Control.Monad.Reader@@ -67,7 +68,7 @@ import qualified Agda.Interaction.Response as R import qualified Agda.Interaction.BasicOps as B import Agda.Interaction.BasicOps hiding (whyInScope)-import Agda.Interaction.Highlighting.Precise hiding (Postulate)+import Agda.Interaction.Highlighting.Precise hiding (Error, Postulate) import qualified Agda.Interaction.Imports as Imp import Agda.TypeChecking.Warnings import Agda.Interaction.Highlighting.Generate@@ -96,9 +97,10 @@ import qualified Agda.Utils.Maybe.Strict as Strict import Agda.Utils.Monad import Agda.Utils.Null-import Agda.Utils.Pretty+import Agda.Utils.Pretty as P import Agda.Utils.String import Agda.Utils.Time+import Agda.Utils.Tuple  #include "undefined.h" import Agda.Utils.Impossible@@ -126,15 +128,11 @@     -- ^ We remember (the scope of) old interaction points to make it     --   possible to parse and compute highlighting information for the     --   expression that it got replaced by.-  , commandQueue :: CommandQueue-    -- ^ Command queue.+  , commandQueue :: !CommandQueue+    -- ^ The command queue.     ---    -- The commands in the queue are processed in the order in which-    -- they are received. Abort commands do not have precedence over-    -- other commands, they only abort the immediately preceding-    -- command. (The Emacs mode is expected not to send a new command,-    -- other than the abort command, before the previous command has-    -- completed.)+    -- This queue should only be manipulated by+    -- 'initialiseCommandQueue' and 'maybeAbort'.   }  type OldInteractionScopes = Map InteractionId ScopeInfo@@ -162,16 +160,16 @@ localStateCommandM :: CommandM a -> CommandM a localStateCommandM m = do   cSt <- get-  tcSt <- lift $ get+  tcSt <- getTC   x <- m-  lift $ put tcSt+  putTC tcSt   put cSt   return x  -- | Restore 'TCState', do not touch 'CommandState'.  liftLocalState :: TCM a -> CommandM a-liftLocalState = lift . localState+liftLocalState = lift . localTCState  -- | Build an opposite action to 'lift' for state monads. @@ -186,11 +184,22 @@     put st     return a +revLiftTC+    :: MonadTCState m+    => (forall c . m c -> TCState -> k (c, TCState))  -- ^ run+    -> (forall b . k b -> m b)                        -- ^ lift+    -> (forall x . (m a -> k x) -> k x) -> m a        -- ^ reverse lift in double negative position+revLiftTC run lift f = do+    st <- getTC+    (a, st) <- lift $ f (`run` st)+    putTC st+    return a+ -- | Opposite of 'liftIO' for 'CommandM'. --   Use only if main errors are already catched.  commandMToIO :: (forall x . (CommandM a -> IO x) -> IO x) -> CommandM a-commandMToIO ci_i = revLift runStateT lift $ \ct -> revLift runSafeTCM liftIO $ ci_i . (. ct)+commandMToIO ci_i = revLift runStateT lift $ \ct -> revLiftTC runSafeTCM liftIO $ ci_i . (. ct)  -- | Lift a TCM action transformer to a CommandM action transformer. @@ -246,7 +255,7 @@  handleCommand :: (forall a. CommandM a -> CommandM a) -> CommandM () -> CommandM () -> CommandM () handleCommand wrap onFail cmd = handleNastyErrors $ wrap $ do-    oldState <- lift get+    oldState <- getTC      -- -- Andreas, 2016-11-18 OLD CODE:     -- -- onFail and handleErr are executed in "new" command state (not TCState).@@ -264,16 +273,16 @@       -- Andreas, 2016-11-18, issue #2174       -- Reset TCState after error is handled, to get rid of metas created during failed command       lift $ do-        newPersistentState <- use lensPersistentState-        put oldState-        lensPersistentState .= newPersistentState+        newPersistentState <- useTC lensPersistentState+        putTC oldState+        lensPersistentState `setTCLens` newPersistentState    where     -- Preserves state so we can do unsolved meta highlighting     catchErr :: CommandM a -> (TCErr -> CommandM a) -> CommandM a     catchErr m h = do       s       <- get-      (x, s') <- lift $ do disableDestructiveUpdate (runStateT m s)+      (x, s') <- lift $ do runStateT m s          `catchError_` \ e ->            runStateT (h e) s       put s'@@ -305,17 +314,21 @@         meta    <- lift $ computeUnsolvedMetaWarnings         constr  <- lift $ computeUnsolvedConstraints         err     <- lift $ errorHighlighting e-        modFile <- lift $ use stModuleToSource-        method  <- lift $ view eHighlightingMethod+        modFile <- lift $ useTC stModuleToSource+        method  <- lift $ viewTC eHighlightingMethod         let info = compress $ mconcat $                      -- Errors take precedence over unsolved things.                      err : if unsolvedNotOK then [meta, constr] else []         s1 <- lift $ prettyError e-        s2 <- lift $ prettyTCWarnings' =<< Imp.errorWarningsOfTCErr e-        let s = List.intercalate "\n" $ filter (not . null) $ s1 : s2-        x <- lift $ optShowImplicit <$> use stPragmaOptions+        s2 <- lift $ prettyTCWarnings' =<< Imp.getAllWarningsOfTCErr e+        let strErr  = if null s2 then s1+                                 else delimiter "Error" ++ "\n" ++ s1+        let strWarn = List.intercalate "\n" $ delimiter "Warning(s)"+                                            : filter (not . null) s2+        let str     = if null s2 then strErr else strErr ++ "\n\n" ++ strWarn+        x <- lift $ optShowImplicit <$> useTC stPragmaOptions         unless (null s1) $ mapM_ putResponse $-            [ Resp_DisplayInfo $ Info_Error s ] +++            [ Resp_DisplayInfo $ Info_Error str ] ++             tellEmacsToJumpToError (getRange e) ++             [ Resp_HighlightingInfo info KeepHighlighting                                     method modFile ] ++@@ -360,74 +373,124 @@ ------------------------------------------------------------------------ -- Command queues --- | Commands.+-- | A generalised command type. -data Command-  = Command IOTCM-    -- ^ An 'IOTCM' command.+data Command' a+  = Command !a+    -- ^ A command.   | Done     -- ^ Stop processing commands.   | Error String     -- ^ An error message for a command that could not be parsed.   deriving Show --- | Command queues.+-- | IOTCM commands. -type CommandQueue = TChan Command+type Command = Command' IOTCM --- | The next command.+-- | Command queues. -nextCommand :: CommandM Command-nextCommand =-  liftIO . atomically . readTChan =<< gets commandQueue+data CommandQueue = CommandQueue+  { commands :: !(TChan (Integer, Command))+    -- ^ Commands that should be processed, in the order in which they+    -- should be processed. Each command is associated with a number,+    -- and the numbers are strictly increasing. Abort commands are not+    -- put on this queue.+  , abort :: !(TVar (Maybe Integer))+    -- ^ When this variable is set to @Just n@ an attempt is made to+    -- abort all commands with a command number that is at most @n@.+  } --- | Runs the given computation, but if an abort command is--- encountered (and acted upon), then the computation is interrupted,--- the persistent state and all options are restored, and some--- commands are sent to the frontend.+-- | If the next command from the command queue is anything but an+-- actual command, then the command is returned.+--+-- If the command is an 'IOTCM' command, then the following happens:+-- The given computation is applied to the command and executed. If an+-- abort command is encountered (and acted upon), then the computation+-- is interrupted, the persistent state and all options are restored,+-- and some commands are sent to the frontend. If the computation was+-- not interrupted, then its result is returned.  -- TODO: It might be nice if some of the changes to the persistent -- state inflicted by the interrupted computation were preserved. -maybeAbort :: CommandM () -> CommandM ()-maybeAbort c = do+maybeAbort :: (IOTCM -> CommandM a) -> CommandM (Command' (Maybe a))+maybeAbort m = do   commandState <- get-  tcState      <- lift get-  tcEnv        <- lift ask-  result       <- liftIO $ race-                    (runTCM tcEnv tcState $ runStateT c commandState)-                    (waitForAbort $ commandQueue commandState)-  case result of-    Left (((), commandState), tcState) -> do-      lift $ put tcState-      put commandState-    Right () -> do-      lift $ put $ initState-        { stPersistentState = stPersistentState tcState-        , stPreScopeState   =-            (stPreScopeState initState)-              { stPrePragmaOptions =-                  stPrePragmaOptions-                    (stPreScopeState tcState)-              }-        }-      put $ (initCommandState (commandQueue commandState))-        { optionsOnReload = optionsOnReload commandState-        }-      putResponse Resp_DoneAborting-      displayStatus+  let q = commandQueue commandState+  (n, c) <- liftIO $ atomically $ readTChan (commands q)+  case c of+    Done      -> return Done+    Error e   -> return (Error e)+    Command c -> do+      tcState <- getTC+      tcEnv   <- askTC+      result  <- liftIO $ race+                   (runTCM tcEnv tcState $ runStateT (m c) commandState)+                   (waitForAbort n q)+      case result of+        Left ((x, commandState), tcState) -> do+          putTC tcState+          put commandState+          return (Command (Just x))+        Right a -> do+          liftIO $ popAbortedCommands q a+          putTC $ initState+            { stPersistentState = stPersistentState tcState+            , stPreScopeState   =+                (stPreScopeState initState)+                  { stPrePragmaOptions =+                      stPrePragmaOptions+                        (stPreScopeState tcState)+                  }+            }+          put $ (initCommandState (commandQueue commandState))+            { optionsOnReload = optionsOnReload commandState+            }+          putResponse Resp_DoneAborting+          displayStatus+          return (Command Nothing)   where -  -- | Returns if the first element in the queue is an abort command.-  -- The abort command is removed from the queue.+  -- | Returns if the currently executing command should be aborted.+  -- The "abort number" is returned. -  waitForAbort :: CommandQueue -> IO ()-  waitForAbort q = atomically $ do-    c <- peekTChan q-    case c of-      Command (IOTCM _ _ _ Cmd_abort) -> void $ readTChan q-      _                               -> retry+  waitForAbort+    :: Integer+       -- ^ The number of the currently executing command.+    -> CommandQueue+       -- ^ The command queue.+    -> IO Integer+  waitForAbort n q = do+    atomically $ do+      a <- readTVar (abort q)+      case a of+        Just a | n <= a -> return a+        _               -> retry +  -- | Removes every command for which the command number is at most+  -- the given number (the "abort number") from the command queue.+  --+  -- New commands could be added to the end of the queue while this+  -- computation is running. This does not lead to a race condition,+  -- because those commands have higher command numbers, so they will+  -- not be removed.++  popAbortedCommands :: CommandQueue -> Integer -> IO ()+  popAbortedCommands q n = do+    done <- atomically $ do+      c <- tryReadTChan (commands q)+      case c of+        Nothing -> return True+        Just c  ->+          if fst c <= n then+            return False+           else do+            unGetTChan (commands q) c+            return True+    unless done $+      popAbortedCommands q n+ -- | Creates a command queue, and forks a thread that writes commands -- to the queue. The queue is returned. @@ -436,16 +499,28 @@      -- ^ Returns the next command.   -> IO CommandQueue initialiseCommandQueue next = do-  q <- newTChanIO-  let readCommands = do+  commands <- newTChanIO+  abort    <- newTVarIO Nothing++  let -- Read commands. The argument is the number of the previous+      -- command (other than abort commands) that was read, if any.+      readCommands n = do         c <- next-        atomically $ writeTChan q c         case c of-          Done -> return ()-          _    -> readCommands-  _ <- forkIO readCommands-  return q+          Command (IOTCM _ _ _ Cmd_abort) -> do+            atomically $ writeTVar abort (Just n)+            readCommands n+          _ -> do+            n <- return (succ n)+            atomically $ writeTChan commands (n, c)+            case c of+              Done -> return ()+              _    -> readCommands n +  _ <- forkIO (readCommands 0)++  return (CommandQueue { .. })+ ---------------------------------------------------------------------------- -- | An interactive computation. @@ -481,6 +556,10 @@   | Cmd_solveAll B.Rewrite   | Cmd_solveOne B.Rewrite InteractionId range String +    -- | Solve (all goals / the goal at point) by using Auto.+  | Cmd_autoOne            InteractionId range String+  | Cmd_autoAll+     -- | Parse the given expression (as if it were defined at the     -- top-level of the current module) and infer its type.   | Cmd_infer_toplevel  B.Rewrite  -- Normalise the type?@@ -510,8 +589,7 @@     -- command tries not to do that. One result of this is that the     -- command uses the current include directories, whatever they happen     -- to be.-  | Cmd_load_highlighting_info-                        FilePath+  | Cmd_load_highlighting_info FilePath      -- | Tells Agda to compute token-based highlighting information     -- for the file.@@ -555,8 +633,6 @@    | Cmd_refine_or_intro Bool InteractionId range String -  | Cmd_auto            InteractionId range String-   | Cmd_context         B.Rewrite InteractionId range String    | Cmd_helper_function B.Rewrite InteractionId range String@@ -565,6 +641,11 @@    | Cmd_goal_type       B.Rewrite InteractionId range String +  -- | Grabs the current goal's type and checks the expression in the hole+  -- against it. Returns the elaborated term.+  | Cmd_elaborate_give+                        B.Rewrite InteractionId range String+     -- | Displays the current goal and context.   | Cmd_goal_type_context B.Rewrite InteractionId range String @@ -727,11 +808,13 @@ updateInteractionPointsAfter Cmd_refine{}                        = True updateInteractionPointsAfter Cmd_intro{}                         = True updateInteractionPointsAfter Cmd_refine_or_intro{}               = True-updateInteractionPointsAfter Cmd_auto{}                          = True+updateInteractionPointsAfter Cmd_autoOne{}                       = True+updateInteractionPointsAfter Cmd_autoAll{}                       = True updateInteractionPointsAfter Cmd_context{}                       = False updateInteractionPointsAfter Cmd_helper_function{}               = False updateInteractionPointsAfter Cmd_infer{}                         = False updateInteractionPointsAfter Cmd_goal_type{}                     = False+updateInteractionPointsAfter Cmd_elaborate_give{}                = True updateInteractionPointsAfter Cmd_goal_type_context{}             = False updateInteractionPointsAfter Cmd_goal_type_context_infer{}       = False updateInteractionPointsAfter Cmd_goal_type_context_check{}       = False@@ -775,7 +858,7 @@           ]  interpret Cmd_constraints =-    display_info . Info_Constraints . unlines . map show =<< lift B.getConstraints+    display_info . Info_Constraints . show . vcat . map pretty =<< lift B.getConstraints  interpret Cmd_metas = do -- CL.showMetas []   unsolvedNotOK <- lift $ not . optAllowUnsolved <$> pragmaOptions@@ -825,7 +908,7 @@              ps { optShowImplicit = not $ optShowImplicit ps } }  interpret (Cmd_load_highlighting_info source) = do-  l <- envHighlightingLevel <$> ask+  l <- asksTC envHighlightingLevel   when (l /= None) $ do     -- Make sure that the include directories have     -- been set.@@ -836,26 +919,28 @@       absSource <- liftIO $ absolute source       case ex of         False -> return Nothing-        True  -> do-          mmi <- (getVisitedModule =<<-                    moduleName absSource)-                   `catchError`-                 \_ -> return Nothing+        True  -> (do+          si <- Imp.sourceInfo absSource+          let m = Imp.siModuleName si+          checkModuleName m absSource Nothing+          mmi <- getVisitedModule m           case mmi of             Nothing -> return Nothing-            Just mi -> do-              sourceH <- liftIO $ hashFile absSource-              if sourceH == iSourceHash (miInterface mi)+            Just mi ->+              if hashText (Imp.siSource si) ==+                 iSourceHash (miInterface mi)                then do-                modFile <- use stModuleToSource-                method  <- view eHighlightingMethod+                modFile <- useTC stModuleToSource+                method  <- viewTC eHighlightingMethod                 return $ Just (iHighlighting $ miInterface mi, method, modFile)                else-                return Nothing+                return Nothing)+            `catchError`+          \_ -> return Nothing     mapM_ putResponse resp  interpret (Cmd_tokenHighlighting source remove) = do-  info <- do l <- envHighlightingLevel <$> ask+  info <- do l <- asksTC envHighlightingLevel              if l == None                then return Nothing                else do@@ -872,7 +957,7 @@     Nothing   -> return ()  interpret (Cmd_highlight ii rng s) = do-  l <- envHighlightingLevel <$> ask+  l <- asksTC envHighlightingLevel   when (l /= None) $ do     scope <- getOldInteractionScope ii     removeOldInteractionScope ii@@ -903,13 +988,13 @@   ss <- lift $ B.introTactic pmLambda ii   liftCommandMT (B.withInteractionId ii) $ case ss of     []    -> do-      display_info $ Info_Intro $ text "No introduction forms found."+      display_info $ Info_Intro $ "No introduction forms found."     [s]   -> give_gen WithoutForce ii rng s Intro     _:_:_ -> do       display_info $ Info_Intro $-        sep [ text "Don't know which constructor to introduce of"+        sep [ "Don't know which constructor to introduce of"             , let mkOr []     = []-                  mkOr [x, y] = [text x <+> text "or" <+> text y]+                  mkOr [x, y] = [text x <+> "or" <+> text y]                   mkOr (x:xs) = text x : mkOr xs               in nest 2 $ fsep $ punctuate comma (mkOr ss)             ]@@ -918,12 +1003,12 @@   let s' = trim s   in (if null s' then Cmd_intro pmLambda else Cmd_refine) ii r s' -interpret (Cmd_auto ii rng s) = do+interpret (Cmd_autoOne ii rng s) = do   -- Andreas, 2014-07-05 Issue 1226:   -- Save the state to have access to even those interaction ids   -- that Auto solves (since Auto gives the solution right away).-  st <- lift $ get-  (time , res) <- maybeTimed $ lift $ Auto.auto ii rng s+  st <- getTC+  (time , res) <- maybeTimed $ Auto.auto ii rng s   case autoProgress res of    Solutions sols -> do     lift $ reportSLn "auto" 10 $ "Auto produced the following solutions " ++ show sols@@ -932,7 +1017,7 @@       -- For highlighting, Resp_GiveAction needs to access       -- the @oldInteractionScope@s of the interaction points solved by Auto.       -- We dig them out from the state before Auto was invoked.-      insertOldInteractionScope ii =<< liftLocalState (put st >> getInteractionScope ii)+      insertOldInteractionScope ii =<< liftLocalState (putTC st >> getInteractionScope ii)       -- Andreas, 2014-07-07: NOT TRUE:       -- -- Andreas, 2014-07-05: The following should be obsolete,       -- -- as Auto has removed the interaction points already:@@ -951,6 +1036,23 @@    Refinement s -> give_gen WithoutForce ii rng s Refine   maybe (return ()) (display_info . Info_Time) time +interpret Cmd_autoAll = do+  iis <- getInteractionPoints+  unless (null iis) $ do+    let time = 1000 `div` length iis+    st <- getTC+    solved <- forM iis $ \ ii -> do+      rng <- getInteractionRange ii+      res <- Auto.auto ii rng ("-t " ++ show time ++ "ms")+      case autoProgress res of+        Solutions sols -> forM sols $ \ (jj, s) -> do+            oldInteractionScope <- liftLocalState (putTC st >> getInteractionScope jj)+            insertOldInteractionScope jj oldInteractionScope+            putResponse $ Resp_GiveAction ii $ Give_String s+            return jj+        _ -> return []+    modifyTheInteractionPoints (List.\\ concat solved)+ interpret (Cmd_context norm ii _ _) =   display_info . Info_Context =<< liftLocalState (prettyContext norm False ii) @@ -966,6 +1068,18 @@   display_info . Info_CurrentGoal     =<< liftLocalState (B.withInteractionId ii $ prettyTypeOfMeta norm ii) +interpret (Cmd_elaborate_give norm ii rng s) = do+  have <- liftLocalState $ B.withInteractionId ii $ do+    expr <- B.parseExprIn ii rng s+    goal <- B.typeOfMeta AsIs ii+    term <- case goal of+      OfType _ ty -> checkExpr expr =<< isType_ ty+      _           -> __IMPOSSIBLE__+    nf <- normalForm norm term+    txt <- localTC (\ e -> e { envPrintMetasBare = True }) (TCP.prettyTCM nf)+    return $ show txt+  give_gen WithoutForce ii rng have ElaborateGive+ interpret (Cmd_goal_type_context norm ii rng s) =   cmd_goal_type_context_and empty norm ii rng s @@ -976,7 +1090,7 @@   have <- if all Char.isSpace s then return empty else liftLocalState $ do     typ <- B.withInteractionId ii $       prettyATop =<< B.typeInMeta ii norm =<< B.parseExprIn ii rng s-    return $ text "Have:" <+> typ+    return $ "Have:" <+> typ   cmd_goal_type_context_and have norm ii rng s  interpret (Cmd_goal_type_context_check norm ii rng s) = do@@ -987,7 +1101,7 @@       OfType _ ty -> checkExpr expr =<< isType_ ty       _           -> __IMPOSSIBLE__     txt <- TCP.prettyTCM =<< normalForm norm term-    return $ text "Elaborates to:" <+> txt+    return $ "Elaborates to:" <+> txt   cmd_goal_type_context_and have norm ii rng s  interpret (Cmd_show_module_contents norm ii rng s) =@@ -1004,20 +1118,21 @@   liftCommandMT (B.withInteractionId ii) $ do     hidden <- lift $ showImplicitArguments     tel <- lift $ lookupSection (qnameModule f) -- don't shadow the names in this telescope+    unicode <- getsTC $ optUseUnicode . getPragmaOptions     pcs      :: [Doc]      <- lift $ inTopContext $ addContext tel $ mapM prettyA cs-    let pcs' :: [String]    = List.map (extlam_dropName casectxt . render) pcs+    let pcs' :: [String]    = List.map (extlam_dropName unicode casectxt . render) pcs     lift $ reportSDoc "interaction.case" 60 $ TCP.vcat-      [ TCP.text "InteractionTop.Cmd_make_case"+      [ "InteractionTop.Cmd_make_case"       , TCP.nest 2 $ TCP.vcat-        [ TCP.text "cs   = " TCP.<+> TCP.vcat (map prettyA cs)-        , TCP.text "pcs  = " TCP.<+> TCP.vcat (map return pcs)-        , TCP.text "pcs' = " TCP.<+> TCP.vcat (map TCP.text pcs')+        [ "cs   = " TCP.<+> TCP.vcat (map prettyA cs)+        , "pcs  = " TCP.<+> TCP.vcat (map return pcs)+        , "pcs' = " TCP.<+> TCP.vcat (map TCP.text pcs')         ]       ]     lift $ reportSDoc "interaction.case" 90 $ TCP.vcat-      [ TCP.text "InteractionTop.Cmd_make_case"+      [ "InteractionTop.Cmd_make_case"       , TCP.nest 2 $ TCP.vcat-        [ TCP.text "cs   = " TCP.<+> TCP.text (show cs)+        [ "cs   = " TCP.<+> TCP.text (show cs)         ]       ]     putResponse $ Resp_MakeCase (makeCaseVariant casectxt) pcs'@@ -1031,12 +1146,14 @@     -- very dirty hack, string manipulation by dropping the function name     -- and replacing the last " = " with " -> ". It's important not to replace     -- the equal sign in named implicit with an arrow!-    extlam_dropName :: CaseContext -> String -> String-    extlam_dropName Nothing x = x-    extlam_dropName Just{}  x+    extlam_dropName :: Bool -> CaseContext -> String -> String+    extlam_dropName _ Nothing x = x+    extlam_dropName unicode Just{}  x         = unwords $ reverse $ replEquals $ reverse $ drop 1 $ words x       where-        replEquals ("=" : ws) = "→" : ws+        replEquals ("=" : ws)+           | unicode   = "→" : ws+           | otherwise = "->" : ws         replEquals (w   : ws) = w : replEquals ws         replEquals []         = [] @@ -1073,10 +1190,11 @@ solveInstantiatedGoals :: B.Rewrite -> Maybe InteractionId -> CommandM () solveInstantiatedGoals norm mii = do   -- Andreas, 2016-10-23 issue #2280: throw away meta elims.-  out <- lift $ local (\ e -> e { envPrintMetasBare = True }) $ do+  out <- lift $ localTC (\ e -> e { envPrintMetasBare = True }) $ do     sip <- B.getSolvedInteractionPoints False norm            -- only solve metas which have a proper instantiation, i.e., not another meta-    maybe id (\ ii -> filter ((ii ==) . fst)) mii <$> mapM prt sip+    let sip' = maybe id (\ ii -> filter ((ii ==) . fst3)) mii sip+    mapM prt sip'   putResponse $ Resp_SolveAll out   where       prt (i, m, e) = do@@ -1091,12 +1209,12 @@   ims <- B.typesOfVisibleMetas B.AsIs   di <- forM ims $ \ i ->     B.withInteractionId (B.outputFormId $ B.OutputForm noRange [] i) $-      showATop i+      prettyATop i   -- Show unsolved implicit arguments simplified.   unsolvedNotOK <- not . optAllowUnsolved <$> pragmaOptions   hms <- (guard unsolvedNotOK >>) <$> B.typesOfHiddenMetas B.Simplified   dh <- mapM showA' hms-  return $ di ++ dh+  return $ map show di ++ dh   where     metaId (B.OfType i _) = i     metaId (B.JustType i) = i@@ -1107,8 +1225,8 @@     showA' m = do       let i = nmid $ metaId m       r <- getMetaRange i-      d <- B.withMetaId i (showATop m)-      return $ d ++ "  [ at " ++ show r ++ " ]"+      d <- B.withMetaId i (prettyATop m)+      return $ show d ++ "  [ at " ++ show r ++ " ]"   -- | @cmd_load' file argv unsolvedOk cmd@@@ -1128,25 +1246,30 @@ cmd_load' file argv unsolvedOK mode cmd = do     f <- liftIO $ absolute file     ex <- liftIO $ doesFileExist $ filePath f-    let relativeTo | ex        = ProjectRoot f-                   | otherwise = CurrentDir+    unless ex $ typeError $ GenericError $+      "The file " ++ file ++ " was not found."      -- Forget the previous "current file" and interaction points.-    modify $ \st -> st { theInteractionPoints = []-                       , theCurrentFile       = Nothing-                       }+    modify $ \ st -> st { theInteractionPoints = []+                        , theCurrentFile       = Nothing+                        }      t <- liftIO $ getModificationTime file +    -- Parse the file.+    si <- lift (Imp.sourceInfo f)+     -- All options are reset when a file is reloaded, including the     -- choice of whether or not to display implicit arguments.     opts0 <- gets optionsOnReload-    z <- liftIO $ runOptM $ parseStandardOptions' argv opts0+    backends <- useTC stBackends+    z <- liftIO $ runOptM $ parseBackendOptions backends argv opts0     case z of       Left err   -> lift $ typeError $ GenericError err-      Right opts -> do+      Right (_, opts) -> do         let update o = o { optAllowUnsolved = unsolvedOK && optAllowUnsolved o}-        lift $ TM.setCommandLineOptions' relativeTo $ mapPragmaOptions update opts+            root     = projectRoot f (Imp.siModuleName si)+        lift $ TM.setCommandLineOptions' root $ mapPragmaOptions update opts         displayStatus      -- Reset the state, preserving options and decoded modules. Note@@ -1162,7 +1285,7 @@     putResponse (Resp_ClearHighlighting NotOnlyTokenBased)  -    ok <- lift $ Imp.typeCheckMain f mode+    ok <- lift $ Imp.typeCheckMain f mode si      -- The module type checked. If the file was not changed while the     -- type checker was running then the interaction points and the@@ -1180,7 +1303,7 @@ withCurrentFile :: CommandM a -> CommandM a withCurrentFile m = do   mfile <- fmap fst <$> gets theCurrentFile-  local (\ e -> e { envCurrentPath = mfile }) m+  localTC (\ e -> e { envCurrentPath = mfile }) m  -- | Available backends. @@ -1201,7 +1324,7 @@               _            -> OtherBackend t     return (b, s) -data GiveRefine = Give | Refine | Intro+data GiveRefine = Give | Refine | Intro | ElaborateGive   deriving (Eq, Show)  -- | A "give"-like action (give, refine, etc).@@ -1227,9 +1350,10 @@   unless (null s) $ do     let give_ref =           case giveRefine of-            Give   -> B.give-            Refine -> B.refine-            Intro  -> B.refine+            Give          -> B.give+            Refine        -> B.refine+            Intro         -> B.refine+            ElaborateGive -> B.give     -- save scope of the interaction point (for printing the given expr. later)     scope     <- lift $ getInteractionScope ii     -- parse string and "give", obtaining an abstract expression@@ -1263,13 +1387,13 @@     -- WRONG: let literally = (giveRefine == Give || null iis) && rng /= noRange     -- Ulf, 2015-03-30, if we're doing intro we can't do literal give since     -- there is nothing in the hole (issue 1892).-    let literally = giveRefine /= Intro && ae == ae0 && rng /= noRange+    let literally = giveRefine /= Intro && giveRefine /= ElaborateGive && ae == ae0 && rng /= noRange     -- Ulf, 2014-01-24: This works for give since we're highlighting the string     -- that's already in the buffer. Doing it before the give action means that     -- the highlighting is moved together with the text when the hole goes away.     -- To make it work for refine we'd have to adjust the ranges.     when literally $ lift $ do-      l <- envHighlightingLevel <$> ask+      l <- asksTC envHighlightingLevel       when (l /= None) $ do         printHighlightingInfo KeepHighlighting =<<           generateTokenInfoFromString rng s@@ -1286,16 +1410,16 @@     mkNewTxt True  C.Paren{} = Give_Paren     mkNewTxt True  _         = Give_NoParen     -- Otherwise, we replace it by the reified value Agda computed.-    mkNewTxt False ce        = Give_String $ show ce+    mkNewTxt False ce        = Give_String $ prettyShow ce  highlightExpr :: A.Expr -> TCM () highlightExpr e =-  local (\e -> e { envModuleNestingLevel = 0+  localTC (\e -> e { envModuleNestingLevel = 0                  , envHighlightingLevel  = NonInteractive                  , envHighlightingMethod = Direct }) $     generateAndPrintSyntaxInfo decl Full True   where-    dummy = mkName_ (NameId 0 0) "dummy"+    dummy = mkName_ (NameId 0 0) ("dummy" :: String)     info  = mkDefInfo (nameConcrete dummy) noFixity' PublicAccess ConcreteDef (getRange e)     decl  = A.Axiom NoFunSig info defaultArgInfo Nothing (qnameFromList [dummy]) e @@ -1314,7 +1438,7 @@   form <- B.typeOfMeta norm ii   case form of     B.OfType _ e -> prettyATop e-    _            -> text <$> showATop form+    _            -> prettyATop form  -- | Pretty-prints the context of the given meta-variable. @@ -1324,11 +1448,25 @@   -> InteractionId   -> TCM Doc prettyContext norm rev ii = B.withInteractionId ii $ do-  ctx <- B.contextOfMeta ii norm+  ctx <- filter (not . shouldHide) <$> B.contextOfMeta ii norm   es  <- mapM (prettyATop . B.ofExpr) ctx-  ns  <- mapM (showATop   . B.ofName) ctx+  xs  <- mapM (abstractToConcrete_ . B.ofName) ctx+  let ns = map (nameConcrete . B.ofName) ctx+      ss = map C.isInScope xs   return $ align 10 $ applyWhen rev reverse $-    filter (not . null . fst) $ zip ns $ map (text ":" <+>) es+      zip (zipWith prettyCtxName ns xs)+          (zipWith prettyCtxType es ss)+  where+    shouldHide (OfType' n e) = isNoName n || nameIsRecordName n+    prettyCtxName :: C.Name -> C.Name -> String+    prettyCtxName n x+      | n == x                 = prettyShow x+      | isInScope n == InScope = prettyShow n ++ " = " ++ prettyShow x+      | otherwise              = prettyShow x+    prettyCtxType e nis = ":" <+> (e P.<> notInScopeMarker nis)+    notInScopeMarker nis = case isInScope nis of+      C.InScope    -> ""+      C.NotInScope -> "  (not in scope)"  -- | Create type of application of new helper function that would solve the goal. @@ -1348,7 +1486,7 @@     goal <- B.withInteractionId ii $ prettyTypeOfMeta norm ii     ctx  <- prettyContext norm True ii     return $ vcat-      [ text "Goal:" <+> goal+      [ "Goal:" <+> goal       , doc       , text (replicate 60 '\x2014')       , ctx@@ -1360,14 +1498,14 @@ showModuleContents :: B.Rewrite -> Range -> String -> CommandM () showModuleContents norm rng s = display_info . Info_ModuleContents =<< do   liftLocalState $ do-    (modules, types) <- B.moduleContents norm rng s-    types' <- forM types $ \ (x, t) -> do+    (modules, tel, types) <- B.moduleContents norm rng s+    types' <- addContext tel $ forM types $ \ (x, t) -> do       t <- TCP.prettyTCM t-      return (prettyShow x, text ":" <+> t)+      return (prettyShow x, ":" <+> t)     return $ vcat-      [ text "Modules"-      , nest 2 $ vcat $ map (text . show) modules-      , text "Names"+      [ "Modules"+      , nest 2 $ vcat $ map pretty modules+      , "Names"       , nest 2 $ align 10 types'       ] @@ -1382,9 +1520,9 @@        hits <- findMentions norm rg tnm        forM hits $ \ (x, t) -> do          t <- TCP.prettyTCM t-         return (prettyShow x, text ":" <+> t)+         return (prettyShow x, ":" <+> t)     display_info $ Info_SearchAbout $-      text "Definitions about" <+> text (List.intercalate ", " $ words nm) $$+      "Definitions about" <+> text (List.intercalate ", " $ words nm) $$       nest 2 (align 10 fancy)  -- | Explain why something is in scope.@@ -1404,9 +1542,9 @@       ]       where         prettyRange :: Range -> TCM Doc-        prettyRange r = text . show . (fmap . fmap) mkRel <$> do+        prettyRange r = pretty . (fmap . fmap) mkRel <$> do           return r-        mkRel = Str . makeRelative cwd . filePath+        mkRel = makeRelative cwd . filePath          -- variable :: Maybe _ -> [_] -> TCM Doc         variable Nothing xs = names xs@@ -1419,49 +1557,51 @@           where             asVar :: TCM Doc             asVar = do-              TCP.text "* a variable bound at" TCP.<+> TCP.prettyTCM (nameBindingSite $ localVar x)+              "* a variable bound at" TCP.<+> TCP.prettyTCM (nameBindingSite $ localVar x)             shadowing :: LocalVar -> TCM Doc-            shadowing (LocalVar _ _ [])    = TCP.text "shadowing"-            shadowing _ = TCP.text "in conflict with"+            shadowing (LocalVar _ _ [])    = "shadowing"+            shadowing _ = "in conflict with"         names   xs = TCP.vcat $ map pName xs         modules ms = TCP.vcat $ map pMod ms -        pKind DefName        = TCP.text "defined name"-        pKind ConName        = TCP.text "constructor"-        pKind FldName        = TCP.text "record field"-        pKind PatternSynName = TCP.text "pattern synonym"-        pKind MacroName      = TCP.text "macro name"-        pKind QuotableName   = TCP.text "quotable name"+        pKind DefName        = "defined name"+        pKind ConName        = "constructor"+        pKind FldName        = "record field"+        pKind PatternSynName = "pattern synonym"+        pKind GeneralizeName = "generalizable variable"+        pKind DisallowedGeneralizeName = "generalizable variable from let open"+        pKind MacroName      = "macro name"+        pKind QuotableName   = "quotable name"          pName :: AbstractName -> TCM Doc         pName a = TCP.sep-          [ TCP.text "* a"+          [ "* a"             TCP.<+> pKind (anameKind a)             TCP.<+> TCP.text (prettyShow $ anameName a)-          , TCP.nest 2 $ TCP.text "brought into scope by"+          , TCP.nest 2 $ "brought into scope by"           ] TCP.$$           TCP.nest 2 (pWhy (nameBindingSite $ qnameName $ anameName a) (anameLineage a))         pMod :: AbstractModule -> TCM Doc         pMod  a = TCP.sep-          [ TCP.text "* a module" TCP.<+> TCP.text (prettyShow $ amodName a)-          , TCP.nest 2 $ TCP.text "brought into scope by"+          [ "* a module" TCP.<+> TCP.text (prettyShow $ amodName a)+          , TCP.nest 2 $ "brought into scope by"           ] TCP.$$           TCP.nest 2 (pWhy (nameBindingSite $ qnameName $ mnameToQName $ amodName a) (amodLineage a))          pWhy :: Range -> WhyInScope -> TCM Doc-        pWhy r Defined = TCP.text "- its definition at" TCP.<+> TCP.prettyTCM r+        pWhy r Defined = "- its definition at" TCP.<+> TCP.prettyTCM r         pWhy r (Opened (C.QName x) w) | isNoName x = pWhy r w         pWhy r (Opened m w) =-          TCP.text "- the opening of"-          TCP.<+> TCP.text (show m)-          TCP.<+> TCP.text "at"+          "- the opening of"+          TCP.<+> TCP.prettyTCM m+          TCP.<+> "at"           TCP.<+> TCP.prettyTCM (getRange m)           TCP.$$           pWhy r w         pWhy r (Applied m w) =-          TCP.text "- the application of"-          TCP.<+> TCP.text (show m)-          TCP.<+> TCP.text "at"+          "- the application of"+          TCP.<+> TCP.prettyTCM m+          TCP.<+> "at"           TCP.<+> TCP.prettyTCM (getRange m)           TCP.$$           pWhy r w@@ -1553,7 +1693,7 @@   doTime <- lift $ hasVerbosity "profile.interactive" 10   if not doTime then (Nothing,) <$> work else do     (r, time) <- measureTime work-    return (Just $ text "Time:" <+> pretty time, r)+    return (Just $ "Time:" <+> pretty time, r)  -- | Tell to highlight the code using the given highlighting -- info (unless it is @Nothing@).
+ src/full/Agda/Interaction/JSONTop.hs view
@@ -0,0 +1,132 @@+module Agda.Interaction.JSONTop+    ( jsonREPL+    ) where+import Control.Monad.State++import Data.Aeson hiding (Result(..))+import Data.ByteString.Lazy (ByteString)+import qualified Data.ByteString.Lazy.Char8 as BS++import Agda.Interaction.AgdaTop+import Agda.Interaction.Response as R+import Agda.Interaction.EmacsCommand hiding (putResponse)+import Agda.Interaction.Highlighting.JSON+import Agda.Interaction.Highlighting.Precise (TokenBased(..))+import Agda.Syntax.Common+import Agda.TypeChecking.Monad+import Agda.Utils.Pretty+import Agda.VersionCommit++----------------------------------++-- | 'jsonREPL' is a interpreter like 'mimicGHCi', but outputs JSON-encoded strings.+--+--   'jsonREPL' reads Haskell values (that starts from 'IOTCM' ...) from stdin,+--   interprets them, and outputs JSON-encoded strings. into stdout.++jsonREPL :: TCM () -> TCM ()+jsonREPL = repl (liftIO . BS.putStrLn <=< liftIO . jsonifyResponse) "JSON> "++instance ToJSON Status where+  toJSON status = object+    [ "showImplicitArguments" .= sShowImplicitArguments status+    , "checked" .= sChecked status+    ]++instance ToJSON InteractionId where+  toJSON (InteractionId i) = toJSON i++instance ToJSON GiveResult where+  toJSON (Give_String s) = toJSON s+  toJSON Give_Paren = toJSON True+  toJSON Give_NoParen = toJSON False++instance ToJSON MakeCaseVariant where+  toJSON R.Function = String "Function"+  toJSON R.ExtendedLambda = String "ExtendedLambda"++instance ToJSON DisplayInfo where+  toJSON (Info_CompilationOk warnings errors) = object+    [ "kind"        .= String "CompilationOk"+    , "warnings"    .= warnings+    , "errors"      .= errors+    ]+  toJSON (Info_Constraints constraints) = object+    [ "kind"        .= String "Constraints"+    , "constraints" .= constraints+    ]+  toJSON (Info_AllGoalsWarnings goals warnings errors) = object+    [ "kind"        .= String "AllGoalsWarnings"+    , "goals"       .= goals+    , "warnings"    .= warnings+    , "errors"      .= errors+    ]+  toJSON (Info_Time doc) = object [ "kind" .= String "Time", "payload" .= render doc ]+  toJSON (Info_Error msg) = object [ "kind" .= String "Error", "payload" .= msg ]+  toJSON (Info_Intro doc) = object [ "kind" .= String "Intro", "payload" .= render doc ]+  toJSON (Info_Auto msg) = object [ "kind" .= String "Auto", "payload" .= msg ]+  toJSON (Info_ModuleContents doc) = object [ "kind" .= String "ModuleContents", "payload" .= render doc ]+  toJSON (Info_SearchAbout doc) = object [ "kind" .= String "SearchAbout", "payload" .= render doc ]+  toJSON (Info_WhyInScope doc) = object [ "kind" .= String "WhyInScope", "payload" .= render doc ]+  toJSON (Info_NormalForm doc) = object [ "kind" .= String "NormalForm", "payload" .= render doc ]+  toJSON (Info_GoalType doc) = object [ "kind" .= String "GoalType", "payload" .= render doc ]+  toJSON (Info_CurrentGoal doc) = object [ "kind" .= String "CurrentGoal", "payload" .= render doc ]+  toJSON (Info_InferredType doc) = object [ "kind" .= String "InferredType", "payload" .= render doc ]+  toJSON (Info_Context doc) = object [ "kind" .= String "Context", "payload" .= render doc ]+  toJSON (Info_HelperFunction doc) = object [ "kind" .= String "HelperFunction", "payload" .= render doc ]+  toJSON Info_Version = object+    [ "kind" .= String "Version"+    , "version" .= (("Agda version " ++ versionWithCommitInfo) :: String)+    ]++-- | Convert Response to an JSON value for interactive editor frontends.+jsonifyResponse :: Response -> IO ByteString+jsonifyResponse (Resp_HighlightingInfo info remove method modFile) =+   encode <$> jsonifyHighlightingInfo info remove method modFile+jsonifyResponse (Resp_DisplayInfo info) = return $ encode $ object+  [ "kind" .= String "DisplayInfo"+  , "info" .= info+  ]+jsonifyResponse (Resp_ClearHighlighting tokenBased) = return $ encode $ object+  [ "kind"          .= String "ClearHighlighting"+  , "tokenBased"    .= tokenBased+  ]+jsonifyResponse Resp_DoneAborting = return $ encode $ object [ "kind" .= String "DoneAborting" ]+jsonifyResponse Resp_ClearRunningInfo = return $ encode $ object [ "kind" .= String "ClearRunningInfo" ]+jsonifyResponse (Resp_RunningInfo debugLevel msg) = return $ encode $ object+  [ "kind"          .= String "RunningInfo"+  , "debugLevel"    .= debugLevel+  , "message"       .= msg+  ]+jsonifyResponse (Resp_Status status) = return $ encode $ object+  [ "kind"          .= String "Status"+  , "status"        .= status+  ]+jsonifyResponse (Resp_JumpToError filepath position) = return $ encode $ object+  [ "kind"          .= String "JumpToError"+  , "filepath"      .= filepath+  , "position"      .= position+  ]+jsonifyResponse (Resp_InteractionPoints interactionPoints) = return $ encode $ object+  [ "kind"              .= String "InteractionPoints"+  , "interactionPoints" .= interactionPoints+  ]+jsonifyResponse (Resp_GiveAction i giveResult) = return $ encode $ object+  [ "kind"              .= String "GiveAction"+  , "interactionPoint"  .= i+  , "giveResult"        .= giveResult+  ]+jsonifyResponse (Resp_MakeCase variant clauses) = return $ encode $ object+  [ "kind"          .= String "MakeCase"+  , "variant"       .= variant+  , "clauses"       .= clauses+  ]+jsonifyResponse (Resp_SolveAll solutions) = return $ encode $ object+  [ "kind"          .= String "SolveAll"+  , "solutions"     .= map encodeSolution solutions+  ]+  where+    encodeSolution (i, expr) = object+      [ "interactionPoint"  .= i+      , "expression"        .= show expr+      ]
src/full/Agda/Interaction/Library.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DeriveDataTypeable #-} -- | Library management. -- --   Sample use:@@ -22,16 +23,21 @@   , libraryIncludePaths   , LibName   , LibM+  , LibWarning(..)+  , LibPositionInfo(..)+  , libraryWarningName   -- * Exported for testing   , VersionView(..), versionView, unVersionView   , findLib'   ) where -import Control.Arrow (first, second)+import Control.Arrow ( (***) ) import Control.Exception import Control.Monad.Writer import Data.Char+import Data.Data ( Data ) import Data.Either+import Data.Bifunctor ( first ) import Data.Function import qualified Data.List as List import Data.Maybe@@ -42,6 +48,7 @@  import Agda.Interaction.Library.Base import Agda.Interaction.Library.Parse+import Agda.Interaction.Options.Warnings  import Agda.Utils.Environment import Agda.Utils.Except ( ExceptT, runExceptT, MonadError(throwError) )@@ -55,7 +62,7 @@ import Agda.Version  --------------------------------------------------------------------------- Types and Monads+-- * Types and Monads ------------------------------------------------------------------------  @@ -77,9 +84,41 @@       --   Note: a priori, there is no reason why the version numbers should be @Int@s.   } deriving (Eq, Show) +-- | Raise collected 'LibErrors' as exception.+--+mkLibM :: [AgdaLibFile] -> LibErrorIO a -> LibM a+mkLibM libs m = do+  (x, ews) <- liftIO $ runWriterT m+  let (errs, warns) = partitionEithers ews+  tell warns+  unless (null errs) $ do+    let doc = vcat $ map (formatLibError libs) errs+    throwError doc+  return x++------------------------------------------------------------------------+-- * Library warnings and errors+------------------------------------------------------------------------+++data LibPositionInfo = LibPositionInfo+  { libFilePos :: Maybe FilePath -- ^ Name of @libraries@ file+  , lineNumPos :: LineNumber     -- ^ Line number in @libraries@ file.+  , filePos    :: FilePath       -- ^ Library file+  }+  deriving (Show, Data)++data LibWarning = LibWarning LibPositionInfo LibWarning'+  deriving (Show, Data)++data LibError = LibError (Maybe LibPositionInfo) LibError'++libraryWarningName :: LibWarning -> WarningName+libraryWarningName (LibWarning c (UnknownField{})) = LibUnknownField_+ -- | Collected errors while processing library files. ---data LibError+data LibError'   = LibNotFound LibrariesFile LibName       -- ^ Raised when a library name could no successfully be resolved       --   to an @.agda-lib@ file.@@ -90,24 +129,27 @@       -- ^ Generic error.   deriving (Show) --- | Collects 'LibError's.+-- | Collects 'LibError's and 'LibWarning's. ---type LibErrorIO = WriterT [LibError] IO+type LibErrorIO = WriterT [Either LibError LibWarning] IO --- | Throws 'Doc' exceptions.-type LibM = ExceptT Doc IO+-- | Throws 'Doc' exceptions, still collects 'LibWarning's.+type LibM = ExceptT Doc (WriterT [LibWarning] IO) --- | Raise collected 'LibErrors' as exception.----mkLibM :: [AgdaLibFile] -> LibErrorIO a -> LibM a-mkLibM libs m = do-  (x, err) <- lift $ runWriterT m-  case err of-    [] -> return x-    _  -> throwError =<< do lift $ vcat <$> mapM (formatLibError libs) err+warnings :: MonadWriter [Either LibError LibWarning] m => [LibWarning] -> m ()+warnings = tell . map Right +warning :: MonadWriter [Either LibError LibWarning] m => LibWarning -> m ()+warning = warnings . pure++raiseErrors' :: MonadWriter [Either LibError LibWarning] m => [LibError'] -> m ()+raiseErrors' = tell . map (Left . (LibError Nothing))++raiseErrors :: MonadWriter [Either LibError LibWarning] m => [LibError] -> m ()+raiseErrors = tell . map Left+ --------------------------------------------------------------------------- Resources+-- * Resources ------------------------------------------------------------------------  -- | Get the path to @~/.agda@ (system-specific).@@ -178,7 +220,7 @@     then (,[]) <$> if optDefaultLibs then (libNameForCurrentDir :) <$> readDefaultsFile else return []     else libsAndPaths <$> parseLibFiles Nothing (map (0,) libs)   where-    libsAndPaths ls = (concatMap libDepends ls, concatMap libIncludes ls)+    libsAndPaths ls = (concatMap libDepends ls, List.nub (concatMap libIncludes ls))  -- | Return list of libraries to be used by default. --@@ -192,7 +234,7 @@       ls <- lift $ map snd . stripCommentLines <$> readFile file       return $ concatMap splitCommas ls   `catchIO` \ e -> do-    tell [ OtherError $ unlines ["Failed to read defaults file.", show e] ]+    raiseErrors' [ OtherError $ unlines ["Failed to read defaults file.", show e] ]     return []  ------------------------------------------------------------------------@@ -228,9 +270,9 @@     if not (lfExists file) then return [] else do       ls    <- lift $ stripCommentLines <$> readFile (lfPath file)       files <- lift $ sequence [ (i, ) <$> expandEnvironmentVariables s | (i, s) <- ls ]-      parseLibFiles (Just file) files+      parseLibFiles (Just file) $ List.nubBy ((==) `on` snd) files   `catchIO` \ e -> do-    tell [ OtherError $ unlines ["Failed to read installed libraries.", show e] ]+    raiseErrors' [ OtherError $ unlines ["Failed to read installed libraries.", show e] ]     return []  -- | Parse the given library files.@@ -239,19 +281,19 @@   :: Maybe LibrariesFile       -- ^ Name of @libraries@ file for error reporting.   -> [(LineNumber, FilePath)]  -- ^ Library files paired with their line number in @libraries@.   -> LibErrorIO [AgdaLibFile]  -- ^ Content of library files.  (Might have empty @LibName@s.)-parseLibFiles libFile files = do-  rs <- lift $ mapM (parseLibFile . snd) files-  -- Format and raise the errors.-  let loc line | Just f <- libFile = lfPath f ++ ":" ++ show line ++ ": "-               | otherwise         = ""-  tell [ OtherError $ pos ++ err-       | ((line, path), Left err) <- zip files rs-       , let pos = if List.isPrefixOf "Failed to read" err-                   then loc line-                   else path ++ ":" ++ (if all isDigit (take 1 err) then "" else " ")-       ]-  return $ rights rs+parseLibFiles mlibFile files = do+  rs' <- lift $ mapM (parseLibFile . snd) files+  let ann (ln, fp) (e, ws) = (first (Just pos,) e, map (LibWarning pos) ws)+        where pos = LibPositionInfo (lfPath <$> mlibFile) ln fp+  let (xs, warns) = unzip $ zipWith ann files (map runP rs')+      (errs, als) = partitionEithers xs +  unless (null warns) $ warnings $ concat warns+  unless (null errs)  $+    raiseErrors $ map (\(mc,s) -> LibError mc $ OtherError s) errs++  return $ List.nubBy ((==) `on` libFile) $ als+ -- | Remove trailing white space and line comments. -- stripCommentLines :: String -> [(LineNumber, String)]@@ -260,28 +302,6 @@     strip (i, s) = [ (i, s') | not $ null s' ]       where s' = trimLineComment s --- | Pretty-print 'LibError'.-formatLibError :: [AgdaLibFile] -> LibError -> IO Doc-formatLibError installed = \case--  LibNotFound file lib -> return $ vcat $-    [ text $ "Library '" ++ lib ++ "' not found."-    , sep [ text "Add the path to its .agda-lib file to"-          , nest 2 $ text $ "'" ++ lfPath file ++ "'"-          , text "to install."-          ]-    , text "Installed libraries:"-    ] ++-    map (nest 2)-      (if null installed then [text "(none)"]-      else [ sep [ text $ libName l, nest 2 $ parens $ text $ libFile l ] | l <- installed ])--  AmbiguousLib lib tgts -> return $ vcat $-    [ sep [ text $ "Ambiguous library '" ++ lib ++ "'.", text "Could refer to any one of" ]-    ] ++ [ nest 2 $ text (libName l) <+> parens (text $ libFile l) | l <- tgts ]--  OtherError err -> return $ text err- ------------------------------------------------------------------------ -- * Resolving library names to include pathes ------------------------------------------------------------------------@@ -305,15 +325,15 @@       :: LibrariesFile  -- ^ Only for error reporting.       -> [LibName]  -- ^ Already resolved libraries.       -> [LibName]  -- ^ Work list: libraries left to be resolved.-      -> Writer [LibError] [AgdaLibFile]+      -> Writer [Either LibError LibWarning] [AgdaLibFile]     find _ _ [] = pure []     find file visited (x : xs)       | elem x visited = find file visited xs       | otherwise =           case findLib x libs of             [l] -> (l :) <$> find file (x : visited) (libDepends l ++ xs)-            []  -> tell [LibNotFound file x] >> find file (x : visited) xs-            ls  -> tell [AmbiguousLib x ls]  >> find file (x : visited) xs+            []  -> raiseErrors' [LibNotFound file x] >> find file (x : visited) xs+            ls  -> raiseErrors' [AmbiguousLib x ls]  >> find file (x : visited) xs  -- | @findLib x libs@ retrieves the matches for @x@ from list @libs@. --@@ -383,3 +403,50 @@ unVersionView = \case   VersionView base [] -> base   VersionView base vs -> base ++ "-" ++ List.intercalate "." (map show vs)++------------------------------------------------------------------------+-- * Prettyprinting errors and warnings+------------------------------------------------------------------------++formatLibPositionInfo :: LibPositionInfo -> String -> Doc+formatLibPositionInfo (LibPositionInfo libFile lineNum file) err = text $+  let loc | Just lf <- libFile = lf ++ ":" ++ show lineNum ++ ": "+          | otherwise = ""+  in if List.isPrefixOf "Failed to read" err+     then loc+     else file ++ ":" ++ (if all isDigit (take 1 err) then "" else " ")++-- | Pretty-print 'LibError'.+formatLibError :: [AgdaLibFile] -> LibError -> Doc+formatLibError installed (LibError mc e) = prefix <+> body where+  prefix = case mc of+    Nothing                      -> ""+    Just c | OtherError err <- e -> formatLibPositionInfo c err+    _                            -> ""++  body = case e of+    LibNotFound file lib -> vcat $+      [ text $ "Library '" ++ lib ++ "' not found."+      , sep [ "Add the path to its .agda-lib file to"+            , nest 2 $ text $ "'" ++ lfPath file ++ "'"+            , "to install."+            ]+      , "Installed libraries:"+      ] +++      map (nest 2)+         (if null installed then ["(none)"]+          else [ sep [ text $ libName l, nest 2 $ parens $ text $ libFile l ]+               | l <- installed ])++    AmbiguousLib lib tgts -> vcat $+      [ sep [ text $ "Ambiguous library '" ++ lib ++ "'."+            , "Could refer to any one of" ]+      ] ++ [ nest 2 $ text (libName l) <+> parens (text $ libFile l) | l <- tgts ]++    OtherError err -> text err++instance Pretty LibWarning where+  pretty (LibWarning c w) = formatLibPositionInfo c "" <+> pretty w++instance Pretty LibWarning' where+  pretty (UnknownField s) = text $ "Unknown field '" ++ s ++ "'"
src/full/Agda/Interaction/Library/Parse.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DeriveDataTypeable #-} -- | Parser for @.agda-lib@ files. -- --   Example file:@@ -21,24 +22,44 @@ --       } --   @ ---module Agda.Interaction.Library.Parse ( parseLibFile, splitCommas, trimLineComment, LineNumber ) where+module Agda.Interaction.Library.Parse+  ( parseLibFile+  , splitCommas+  , trimLineComment+  , LineNumber+  , runP+  , LibWarning'(..)+  ) where  import Control.Exception import Control.Monad+import Control.Monad.Writer import Data.Char+import Data.Data import qualified Data.List as List import System.FilePath  import Agda.Interaction.Library.Base -import Agda.Utils.Except ( MonadError(throwError) )+import Agda.Utils.Except ( MonadError(throwError), ExceptT, runExceptT ) import Agda.Utils.IO ( catchIO ) import Agda.Utils.String ( ltrim ) --- | Parser monad: Can throw @String@ error messages.----type P = Either String+-- | Parser monad: Can throw @String@ error messages, and collects+-- @LibWarning'@s library warnings.+type P = ExceptT String (Writer [LibWarning']) +runP :: P a -> (Either String a, [LibWarning'])+runP = runWriter . runExceptT++-- | Library Warnings.+data LibWarning'+  = UnknownField String+  deriving (Show, Data)++warningP :: LibWarning' -> P ()+warningP = tell . pure+ -- | The config files we parse have the generic structure of a sequence --   of @field : content@ entries. type GenericFile = [GenericEntry]@@ -76,7 +97,7 @@ parseLibFile :: FilePath -> IO (P AgdaLibFile) parseLibFile file =   (fmap setPath . parseLib <$> readFile file) `catchIO` \e ->-    return (Left $ "Failed to read library file " ++ file ++ ".\nReason: " ++ show e)+    return $ throwError $ "Failed to read library file " ++ file ++ ".\nReason: " ++ show e   where     setPath lib = unrelativise (takeDirectory file) lib{ libFile = file }     unrelativise dir lib = lib { libIncludes = map (dir </>) (libIncludes lib) }@@ -100,9 +121,12 @@   where     upd :: AgdaLibFile -> GenericEntry -> P AgdaLibFile     upd l (GenericEntry h cs) = do-      Field{..} <- findField h fields-      x         <- fParse cs-      return $ fSet x l+      mf <- findField h fields+      case mf of+        Just Field{..} -> do+          x <- fParse cs+          return $ fSet x l+        Nothing -> return l  -- | Ensure that there are no duplicate fields and no mandatory fields are missing. checkFields :: [Field] -> [String] -> P ()@@ -119,9 +143,9 @@   when (not $ null dup)     $ throwError $ "Duplicate field" ++ s dup ++ " " ++ list dup  -- | Find 'Field' with given 'fName', throw error if unknown.-findField :: String -> [Field] -> P Field-findField s fs = maybe err return $ List.find ((s ==) . fName) fs-  where err = throwError $ "Unknown field '" ++ s ++ "'"+findField :: String -> [Field] -> P (Maybe Field)+findField s fs = maybe err (return . Just) $ List.find ((s ==) . fName) fs+  where err = warningP (UnknownField s) >> return Nothing  -- Generic file parser ---------------------------------------------------- 
src/full/Agda/Interaction/MakeCase.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP             #-}+{-# LANGUAGE NondecreasingIndentation #-}  module Agda.Interaction.MakeCase where @@ -6,6 +7,7 @@  import Control.Applicative hiding (empty) import Control.Monad hiding (mapM, mapM_, forM)+import Control.Monad.Reader (asks)  import qualified Data.Map as Map import qualified Data.List as List@@ -14,20 +16,22 @@  import Agda.Syntax.Common import Agda.Syntax.Position+import Agda.Syntax.Concrete (NameInScope(..), LensInScope(..)) import qualified Agda.Syntax.Concrete as C import qualified Agda.Syntax.Abstract as A import qualified Agda.Syntax.Abstract.Views as A import qualified Agda.Syntax.Info as A import Agda.Syntax.Internal import Agda.Syntax.Internal.Pattern-import Agda.Syntax.Scope.Base  ( ResolvedName(..), Binder(..) )-import Agda.Syntax.Scope.Monad ( resolveName )+import Agda.Syntax.Scope.Base  ( ResolvedName(..), Binder(..), KindOfName(..), allKindsOfNames )+import Agda.Syntax.Scope.Monad ( resolveName, resolveName' ) import Agda.Syntax.Translation.ConcreteToAbstract import Agda.Syntax.Translation.InternalToAbstract  import Agda.TypeChecking.Monad import Agda.TypeChecking.Coverage import Agda.TypeChecking.Coverage.Match ( SplitPatVar(..) , SplitPattern , applySplitPSubst , fromSplitPatterns )+import Agda.TypeChecking.Empty ( isEmptyTel ) import Agda.TypeChecking.Pretty import Agda.TypeChecking.RecordPatterns import Agda.TypeChecking.Reduce@@ -64,7 +68,8 @@   -> InteractionId   -- ^ The hole of this function we are working on.   -> Range           -- ^ The range of this hole.   -> [String]        -- ^ The words the user entered in this hole (variable names).-  -> TCM [Int]       -- ^ The computed de Bruijn indices of the variables to split on.+  -> TCM [(Int,NameInScope)] -- ^ The computed de Bruijn indices of the variables to split on,+                             --   with information about whether each variable is in scope. parseVariables f tel ii rng ss = do    -- Get into the context of the meta.@@ -83,16 +88,19 @@     let nlocals = n - size tel     unless (nlocals >= 0) __IMPOSSIBLE__ +    fv <- getDefFreeVars f     reportSDoc "interaction.case" 20 $ do       m   <- currentModule       tel <- lookupSection m-      fv  <- getDefFreeVars f+      cxt <- getContextTelescope       vcat-       [ text "parseVariables:"-       , text "current module  =" <+> prettyTCM m-       , text "current section =" <+> inTopContext (prettyTCM tel)+       [ "parseVariables:"+       , "current module  =" <+> prettyTCM m+       , "current section =" <+> inTopContext (prettyTCM tel)        , text $ "function's fvs  = " ++ show fv        , text $ "number of locals= " ++ show nlocals+       , "context         =" <+> do inTopContext $ prettyTCM cxt+       , "checkpoints     =" <+> do (text . show) =<< asksTC envCheckpoints        ]      -- Resolve each string to a variable.@@ -105,14 +113,21 @@           failModuleBound = typeError $ GenericError $             "Cannot split on module parameter " ++ s           failLetBound v  = typeError . GenericError $-            "cannot split on let-bound variable " ++ s+            "Cannot split on let-bound variable " ++ s           failInstantiatedVar v = typeError . GenericDocError =<< sep               [ text $ "Cannot split on variable " ++ s ++ ", because it is bound to"               , prettyTCM v               ]+          failCaseLet     = typeError $ GenericError $+            "Cannot split on variable " ++ s +++            ", because let-declarations may not be defined by pattern-matching" +      -- Jesper, 2018-12-19: Don't consider generalizable names since+      -- they can be shadowed by hidden variables.+      let kinds = List.delete GeneralizeName allKindsOfNames+          cname = C.QName $ C.Name r C.InScope $ C.stringNameParts s       -- Note: the range in the concrete name is only approximate.-      resName <- resolveName $ C.QName $ C.Name r $ C.stringNameParts s+      resName <- resolveName' kinds Nothing cname       case resName of          -- Fail if s is a name, but not of a variable.@@ -131,8 +146,9 @@             -- case the instantiation could as well be the other way             -- around, so the new clauses will still make sense.             (Var i [] , PatternBound) -> do-              when (i < nlocals) __IMPOSSIBLE__-              return $ i - nlocals+              reportSLn "interaction.case" 30 $ "resolved variable " ++ show x ++ " = " ++ show i+              when (i < nlocals) failCaseLet+              return (i - nlocals , C.InScope)             (Var i [] , LambdaBound)               | i < nlocals -> failLocal               | otherwise   -> failModuleBound@@ -142,59 +158,73 @@         -- If s is not a name, compare it to the printed variable representation.         -- This fallback is to enable splitting on hidden variables.         UnknownName -> do-          case filter ((s ==) . fst) xs of-            []                    -> failUnbound-            [(_,i)] | i < nlocals -> failLocal-                    | otherwise   -> return $ i - nlocals+          let xs' = filter ((s ==) . fst) xs+          when (null xs') $ failUnbound+          reportSLn "interaction.case" 20 $ "matching names corresponding to indices " ++ show xs'+          -- Andreas, 2018-05-28, issue #3095+          -- We want to act on an ambiguous name if it corresponds to only one local index.+          let xs'' = mapMaybe (\ (_,i) -> if i < nlocals then Nothing else Just $ i - nlocals) xs'+          when (null xs'') $ failLocal+          -- Filter out variable bound by parent function or module.+          let xs''' = mapMaybe (\ i -> if i < fv then Nothing else Just i) xs''+          case xs''' of+            []  -> failModuleBound+            [i] -> return (i , C.NotInScope)             -- Issue 1325: Variable names in context can be ambiguous.-            _                     -> failAmbiguous+            _   -> failAmbiguous  -- | Lookup the clause for an interaction point in the signature.---   Returns the CaseContext, the clause itself, and a list of previous clauses+--   Returns the CaseContext, the previous clauses, the clause itself,+--   and a list of the remaining ones. --- Andreas, 2016-06-08, issue #289 and #2006.--- This replace the old findClause hack (shutter with disgust).-getClauseForIP :: QName -> Int -> TCM (CaseContext, Clause, [Clause])-getClauseForIP f clauseNo = do+type ClauseZipper =+   ( [Clause] -- previous clauses+   , Clause   -- clause of interest+   , [Clause] -- other clauses+   )++getClauseZipperForIP :: QName -> Int -> TCM (CaseContext, ClauseZipper)+getClauseZipperForIP f clauseNo = do   (theDef <$> getConstInfo f) >>= \case     Function{funClauses = cs, funExtLam = extlam} -> do-      let (cs1,cs2) = fromMaybe __IMPOSSIBLE__ $ splitExactlyAt clauseNo cs-          c         = fromMaybe __IMPOSSIBLE__ $ headMaybe cs2-      return (extlam, c, cs1)+      let (cs1,ccs2) = fromMaybe __IMPOSSIBLE__ $ splitExactlyAt clauseNo cs+          (c,cs2)    = fromMaybe __IMPOSSIBLE__ $ uncons ccs2+      return (extlam, (cs1, c, cs2))     d -> do       reportSDoc "impossible" 10 $ vcat-        [ text "getClauseForIP" <+> prettyTCM f <+> text (show clauseNo)-          <+> text "received"+        [ "getClauseZipperForIP" <+> prettyTCM f <+> text (show clauseNo)+          <+> "received"         , text (show d)         ]       __IMPOSSIBLE__ - -- | Entry point for case splitting tactic.  makeCase :: InteractionId -> Range -> String -> TCM (QName, CaseContext, [A.Clause]) makeCase hole rng s = withInteractionId hole $ do -  -- Get function clause which contains the interaction point.+  -- Jesper, 2018-12-10: print unsolved metas in dot patterns as _+  localTC (\ e -> e { envPrintMetasBare = True }) $ do +  -- Get function clause which contains the interaction point.   InteractionPoint { ipMeta = mm, ipClause = ipCl} <- lookupInteractionPoint hole   let meta = fromMaybe __IMPOSSIBLE__ mm   (f, clauseNo, rhs) <- case ipCl of-    IPClause f clauseNo rhs-> return (f, clauseNo, rhs)+    IPClause f clauseNo rhs -> return (f, clauseNo, rhs)     IPNoClause -> typeError $ GenericError $       "Cannot split here, as we are not in a function definition"-  (casectxt, clause, prevClauses) <- getClauseForIP f clauseNo+  (casectxt, (prevClauses, clause, follClauses)) <- getClauseZipperForIP f clauseNo   let perm = fromMaybe __IMPOSSIBLE__ $ clausePerm clause       tel  = clauseTel  clause       ps   = namedClausePats clause   reportSDoc "interaction.case" 10 $ vcat-    [ text "splitting clause:"+    [ "splitting clause:"     , nest 2 $ vcat-      [ text "f       =" <+> prettyTCM f-      , text "context =" <+> ((inTopContext . prettyTCM) =<< getContextTelescope)-      , text "tel     =" <+> (inTopContext . prettyTCM) tel-      , text "perm    =" <+> text (show perm)-      , text "ps      =" <+> text (show ps)+      [ "f       =" <+> prettyTCM f+      , "context =" <+> ((inTopContext . prettyTCM) =<< getContextTelescope)+      , "tel     =" <+> (inTopContext . prettyTCM) tel+      , "perm    =" <+> text (show perm)+      , "ps      =" <+> prettyTCMPatternList ps       ]     ] @@ -244,8 +274,7 @@               isVarP _ = Nothing           -- If all are already coming from the user, there is really nothing todo!           when (all ((UserWritten ==) . getOrigin) trailingPatVars) $ do-            typeError . GenericDocError =<< do-              text "Cannot split on result here, because" <+> prettyTCM err+            typeError $ SplitError err           -- Otherwise, we make these user-written           let xs = map (dbPatVarIndex . namedArg) trailingPatVars           return [makePatternVarsVisible xs sc]@@ -254,25 +283,45 @@           -- Andreas, 2016-05-03: do not introduce function arguments after projection.           -- This is sometimes annoying and can anyway be done by another C-c C-c.           -- mapM (snd <.> fixTarget) $ splitClauses cov-          return $ splitClauses cov+          return cov     checkClauseIsClean ipCl     (f, casectxt,) <$> mapM (makeAbstractClause f rhs) scs   else do     -- split on variables     xs <- parseVariables f tel hole rng vars+    reportSLn "interaction.case" 30 $ "parsedVariables: " ++ show (zip xs vars)     -- Variables that are not in scope yet are brought into scope (@toShow@)     -- The other variables are split on (@toSplit@).-    let (toShow, toSplit) = flip mapEither (zip xs vars) $ \ (x, s) ->-          if take 1 s == "." then Left x else Right x+    let (toShow, toSplit) = flip mapEither (zip xs vars) $ \ ((x,nis), s) ->+          if (nis == C.NotInScope) then Left x else Right x     let sc = makePatternVarsVisible toShow $ clauseToSplitClause clause     scs <- split f toSplit sc-    -- filter out clauses that are already covered+    reportSLn "interaction.case" 70 $ "makeCase: survived the splitting"++    -- CLEAN UP OF THE GENERATED CLAUSES+    -- 1. filter out clauses that are already covered     scs <- filterM (not <.> isCovered f prevClauses . fst) scs-    cs <- forM scs $ \(sc, isAbsurd) -> do-            if isAbsurd then makeAbsurdClause f sc else makeAbstractClause f rhs sc+    reportSLn "interaction.case" 70 $ "makeCase: survived filtering out already covered clauses"+    -- 2. filter out trivially impossible clauses not asked for by the user+    cs <- catMaybes <$> do+     forM scs $ \ (sc, isAbsurd) -> if isAbsurd+      -- absurd clause coming from a split asked for by the user+      then Just <$> makeAbsurdClause f sc+      -- trivially empty clause due to the refined patterns+      else+        ifM (liftTCM $ isEmptyTel (scTel sc))+          {- then -} (pure Nothing)+          {- else -} (Just <$> makeAbstractClause f rhs sc)+    reportSLn "interaction.case" 70 $ "makeCase: survived filtering out impossible clauses"+    -- 3. If the cleanup removed everything then we know that none of the clauses where+    --    absurd but that all of them were trivially empty. In this case we rewind and+    --    insert all the clauses (garbage in, garbage out!)+    cs <- if not (null cs) then pure cs+          else mapM (makeAbstractClause f rhs . fst) scs+     reportSDoc "interaction.case" 65 $ vcat-      [ text "split result:"-      , nest 2 $ vcat $ map (text . show . A.deepUnscope) cs+      [ "split result:"+      , nest 2 $ vcat $ map prettyA cs       ]     checkClauseIsClean ipCl     return (f, casectxt, cs)@@ -304,7 +353,7 @@   -- In this case, we refuse to split, as this might lose the refinements.   checkClauseIsClean :: IPClause -> TCM ()   checkClauseIsClean ipCl = do-    sips <- filter ipSolved . Map.elems <$> use stInteractionPoints+    sips <- filter ipSolved . Map.elems <$> useTC stInteractionPoints     when (List.any ((== ipCl) . ipClause) sips) $       typeError $ GenericError $ "Cannot split as clause rhs has been refined.  Please reload" @@ -330,11 +379,11 @@ makeAbsurdClause f (SClause tel sps _ _ t) = do   let ps = fromSplitPatterns sps   reportSDoc "interaction.case" 10 $ vcat-    [ text "Interaction.MakeCase.makeAbsurdClause: split clause:"+    [ "Interaction.MakeCase.makeAbsurdClause: split clause:"     , nest 2 $ vcat-      [ text "context =" <+> do (inTopContext . prettyTCM) =<< getContextTelescope-      , text "tel     =" <+> do inTopContext $ prettyTCM tel-      , text "ps      =" <+> do inTopContext $ addContext tel $ prettyTCMPatternList ps -- P.sep <$> prettyTCMPatterns ps+      [ "context =" <+> do (inTopContext . prettyTCM) =<< getContextTelescope+      , "tel     =" <+> do inTopContext $ prettyTCM tel+      , "ps      =" <+> do inTopContext $ addContext tel $ prettyTCMPatternList ps -- P.sep <$> prettyTCMPatterns ps       ]     ]   withCurrentModule (qnameModule f) $ do@@ -345,7 +394,7 @@     let c = Clause noRange noRange tel ps Nothing t False Nothing     -- Normalise the dot patterns     ps <- addContext tel $ normalise $ namedClausePats c-    reportSDoc "interaction.case" 60 $ text "normalized patterns: " <+> text (show ps)+    reportSDoc "interaction.case" 60 $ "normalized patterns: " <+> prettyTCMPatternList ps     inTopContext $ reify $ QNamed f $ c { namedClausePats = ps }  @@ -355,7 +404,7 @@ makeAbstractClause f rhs cl = do    lhs <- A.clauseLHS <$> makeAbsurdClause f cl-  reportSDoc "interaction.case" 60 $ text "reified lhs: " <+> text (show lhs)+  reportSDoc "interaction.case" 60 $ "reified lhs: " <+> prettyA lhs   return $ A.Clause lhs [] rhs A.noWhereDecls False   -- let ii = InteractionId (-1)  -- Dummy interaction point since we never type check this.   --                              -- Can end up in verbose output though (#1842), hence not __IMPOSSIBLE__.
src/full/Agda/Interaction/Options.hs view
@@ -1,4 +1,5 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP       #-}+{-# LANGUAGE DataKinds #-}  module Agda.Interaction.Options     ( CommandLineOptions(..)@@ -6,11 +7,12 @@     , OptionsPragma     , Flag, OptM, runOptM, OptDescr(..), ArgDescr(..)     , Verbosity+    , HtmlHighlight(..)     , WarningMode(..)     , checkOpts-    , parseStandardOptions, parseStandardOptions'     , parsePragmaOptions     , parsePluginOptions+    , stripRTS     , defaultOptions     , defaultInteractionOptions     , defaultVerbosity@@ -18,13 +20,16 @@     , defaultPragmaOptions     , standardOptions_     , unsafePragmaOptions-    , isLiterate+    , restartOptions+    , infectiveOptions+    , coinfectiveOptions+    , safeFlag     , mapFlag     , usage     , defaultLibDir     -- Reused by PandocAgda     , inputFlag-    , standardOptions+    , standardOptions, deadStandardOptions     , getOptSimple     ) where @@ -33,6 +38,7 @@  import Data.IORef import Data.Either+import Data.Function import Data.Maybe import Data.List                ( isSuffixOf , intercalate ) import Data.Set                 ( Set )@@ -65,8 +71,8 @@ import Agda.Utils.Monad         ( ifM, readM ) import Agda.Utils.String        ( indent ) import Agda.Utils.Trie          ( Trie )-import Agda.Syntax.Parser.Literate ( literateExts ) import qualified Agda.Utils.Trie as Trie+import Agda.Utils.WithDefault  import Agda.Version -- Paths_Agda.hs is in $(BUILD_DIR)/build/autogen/.@@ -74,14 +80,13 @@  import qualified System.IO.Unsafe as UNSAFE (unsafePerformIO) --- | This should probably go somewhere else.-isLiterate :: FilePath -> Bool-isLiterate file = any (`isSuffixOf` file) literateExts- -- OptDescr is a Functor --------------------------------------------------  type Verbosity = Trie String Int +data HtmlHighlight = HighlightAll | HighlightCode | HighlightAuto+  deriving (Show, Eq)+ -- Don't forget to update --   doc/user-manual/tools/command-line-options.rst -- if you make changes to the command-line options!@@ -102,17 +107,20 @@   , optShowHelp         :: Maybe Help   , optInteractive      :: Bool   , optGHCiInteraction  :: Bool+  , optJSONInteraction  :: Bool   , optOptimSmashing    :: Bool   , optCompileDir       :: Maybe FilePath   -- ^ In the absence of a path the project root is used.   , optGenerateVimFile  :: Bool   , optGenerateLaTeX    :: Bool   , optGenerateHTML     :: Bool+  , optHTMLHighlight    :: HtmlHighlight   , optDependencyGraph  :: Maybe FilePath   , optLaTeXDir         :: FilePath   , optHTMLDir          :: FilePath   , optCSSFile          :: Maybe FilePath   , optIgnoreInterfaces :: Bool+  , optIgnoreAllInterfaces :: Bool   , optForcing          :: Bool   , optPragmaOptions    :: PragmaOptions   , optOnlyScopeChecking :: Bool@@ -128,7 +136,7 @@   , optShowIrrelevant            :: Bool   , optUseUnicode                :: Bool   , optVerbose                   :: Verbosity-  , optProofIrrelevance          :: Bool+  , optProp                      :: Bool   , optAllowUnsolved             :: Bool   , optDisablePositivity         :: Bool   , optTerminationCheck          :: Bool@@ -136,24 +144,29 @@     -- ^ Cut off structural order comparison at some depth in termination checker?   , optCompletenessCheck         :: Bool   , optUniverseCheck             :: Bool-  , optSizedTypes                :: Bool+  , optOmegaInOmega              :: Bool+  , optSizedTypes                :: WithDefault 'True+  , optGuardedness               :: WithDefault 'True   , optInjectiveTypeConstructors :: Bool-  , optGuardingTypeConstructors  :: Bool   , optUniversePolymorphism      :: Bool   , optIrrelevantProjections     :: Bool   , optExperimentalIrrelevance   :: Bool  -- ^ irrelevant levels, irrelevant data matching-  , optWithoutK                  :: Bool+  , optWithoutK                  :: WithDefault 'False   , optCopatterns                :: Bool  -- ^ Allow definitions by copattern matching?   , optPatternMatching           :: Bool  -- ^ Is pattern matching allowed in the current file?   , optExactSplit                :: Bool   , optEta                       :: Bool   , optRewriting                 :: Bool  -- ^ Can rewrite rules be added and used?+  , optCubical                   :: Bool   , optPostfixProjections        :: Bool       -- ^ Should system generated projections 'ProjSystem' be printed       --   postfix (True) or prefix (False).   , optInstanceSearchDepth       :: Int+  , optOverlappingInstances      :: Bool   , optInversionMaxDepth         :: Int   , optSafe                      :: Bool+  , optDoubleCheck               :: Bool+  , optSyntacticEquality         :: Bool  -- ^ Should conversion checker use syntactic equality shortcut?   , optWarningMode               :: WarningMode   , optCompileNoMain             :: Bool   , optCaching                   :: Bool@@ -164,6 +177,8 @@     -- ^ Automatic compile-time inlining for simple definitions (unless marked     --   NOINLINE).   , optPrintPatternSynonyms      :: Bool+  , optFastReduce                :: Bool+    -- ^ Use the Agda abstract machine (fastReduce)?   }   deriving (Show, Eq) @@ -199,16 +214,19 @@   , optShowHelp         = Nothing   , optInteractive      = False   , optGHCiInteraction  = False+  , optJSONInteraction  = False   , optOptimSmashing    = True   , optCompileDir       = Nothing   , optGenerateVimFile  = False   , optGenerateLaTeX    = False   , optGenerateHTML     = False+  , optHTMLHighlight    = HighlightAll   , optDependencyGraph  = Nothing   , optLaTeXDir         = defaultLaTeXDir   , optHTMLDir          = defaultHTMLDir   , optCSSFile          = Nothing   , optIgnoreInterfaces = False+  , optIgnoreAllInterfaces = False   , optForcing          = True   , optPragmaOptions    = defaultPragmaOptions   , optOnlyScopeChecking = False@@ -220,35 +238,41 @@   , optShowIrrelevant            = False   , optUseUnicode                = True   , optVerbose                   = defaultVerbosity-  , optProofIrrelevance          = False+  , optProp                      = False   , optExperimentalIrrelevance   = False-  , optIrrelevantProjections     = True+  , optIrrelevantProjections     = False -- off by default in > 2.5.4, see issue #2170   , optAllowUnsolved             = False   , optDisablePositivity         = False   , optTerminationCheck          = True   , optTerminationDepth          = defaultCutOff   , optCompletenessCheck         = True   , optUniverseCheck             = True-  , optSizedTypes                = True+  , optOmegaInOmega              = False+  , optSizedTypes                = Default+  , optGuardedness               = Default   , optInjectiveTypeConstructors = False-  , optGuardingTypeConstructors  = False   , optUniversePolymorphism      = True-  , optWithoutK                  = False+  , optWithoutK                  = Default   , optCopatterns                = True   , optPatternMatching           = True   , optExactSplit                = False   , optEta                       = True   , optRewriting                 = False+  , optCubical                   = False   , optPostfixProjections        = False   , optInstanceSearchDepth       = 500+  , optOverlappingInstances      = False   , optInversionMaxDepth         = 50   , optSafe                      = False+  , optDoubleCheck               = False+  , optSyntacticEquality         = True   , optWarningMode               = defaultWarningMode   , optCompileNoMain             = False   , optCaching                   = True   , optCountClusters             = False   , optAutoInline                = True   , optPrintPatternSynonyms      = True+  , optFastReduce                = True   }  -- | The default termination depth.@@ -281,13 +305,15 @@  checkOpts :: Flag CommandLineOptions checkOpts opts-  | not (matches [optGHCiInteraction, isJust . optInputFile] <= 1) =-      throwError "Choose at most one: input file or --interaction.\n"+  | htmlRelated = throwError htmlRelatedMessage+  | not (matches [optGHCiInteraction, optJSONInteraction, isJust . optInputFile] <= 1) =+      throwError "Choose at most one: input file, --interactive, or --interaction-json.\n"   | or [ p opts && matches ps > 1 | (p, ps) <- exclusive ] =       throwError exclusiveMessage   | otherwise = return opts   where   matches = length . filter ($ opts)+  optionChanged opt = ((/=) `on` opt) opts defaultOptions    atMostOne =     [ optGenerateHTML@@ -297,8 +323,7 @@    exclusive =     [ ( optOnlyScopeChecking-      , optSafe . optPragmaOptions :-        optGenerateVimFile :+      , optGenerateVimFile :         atMostOne       )     , ( optInteractive@@ -307,32 +332,112 @@     , ( optGHCiInteraction       , optGenerateLaTeX : atMostOne       )+    , ( optJSONInteraction+      , optGenerateLaTeX : atMostOne+      )     ]    exclusiveMessage = unlines $-    [ "The options --interactive, --interaction and"+    [ "The options --interactive, --interaction, --interaction-json and"     , "--only-scope-checking cannot be combined with each other or"     , "with --html or --dependency-graph. Furthermore"     , "--interactive and --interaction cannot be combined with"     , "--latex, and --only-scope-checking cannot be combined with"-    , "--safe or --vim."+    , "--vim."     ] --- | Check for unsafe pramas. Gives a list of used unsafe flags.+  htmlRelated = not (optGenerateHTML opts) &&+    (  optionChanged optHTMLDir+    || optionChanged optHTMLHighlight+    || optionChanged optCSSFile+    ) +  htmlRelatedMessage = unlines $+    [ "The options --html-highlight, --css-dir and --html-dir"+    , "only be used along with --html flag."+    ]++-- | Check for unsafe pragmas. Gives a list of used unsafe flags.+ unsafePragmaOptions :: PragmaOptions -> [String] unsafePragmaOptions opts =   [ "--allow-unsolved-metas"                     | optAllowUnsolved opts             ] ++   [ "--no-positivity-check"                      | optDisablePositivity opts         ] ++   [ "--no-termination-check"                     | not (optTerminationCheck opts)    ] ++   [ "--type-in-type"                             | not (optUniverseCheck opts)       ] ++-  -- [ "--sized-types"                              | optSizedTypes opts                ] +++  [ "--omega-in-omega"                           | optOmegaInOmega opts              ] +++-- [ "--sized-types"                              | optSizedTypes opts                ] +++  [ "--sized-types and --guardedness"            | collapseDefault (optSizedTypes opts)+                                                 , collapseDefault (optGuardedness opts) ] ++   [ "--injective-type-constructors"              | optInjectiveTypeConstructors opts ] ++-  [ "--guardedness-preserving-type-constructors" | optGuardingTypeConstructors opts  ] +++  [ "--irrelevant-projections"                   | optIrrelevantProjections opts     ] ++   [ "--experimental-irrelevance"                 | optExperimentalIrrelevance opts   ] ++   [ "--rewriting"                                | optRewriting opts                 ] +++  [ "--cubical and --with-K"                     | optCubical opts+                                                 , not (collapseDefault $ optWithoutK opts) ] ++   [] +-- | If any these options have changed, then the file will be+--   rechecked. Boolean options are negated to mention non-default+--   options, where possible.++restartOptions :: [(PragmaOptions -> RestartCodomain, String)]+restartOptions =+  [ (C . optTerminationDepth, "--termination-depth")+  , (B . not . optUseUnicode, "--no-unicode")+  , (B . optAllowUnsolved, "--allow-unsolved-metas")+  , (B . optDisablePositivity, "--no-positivity-check")+  , (B . optTerminationCheck,  "--no-termination-check")+  , (B . not . optUniverseCheck, "--type-in-type")+  , (B . optOmegaInOmega, "--omega-in-omega")+  , (B . not . collapseDefault . optSizedTypes, "--no-sized-types")+  , (B . not . collapseDefault . optGuardedness, "--no-guardedness")+  , (B . optInjectiveTypeConstructors, "--injective-type-constructors")+  , (B . optProp, "--prop")+  , (B . not . optUniversePolymorphism, "--no-universe-polymorphism")+  , (B . optIrrelevantProjections, "--irrelevant-projections")+  , (B . optExperimentalIrrelevance, "--experimental-irrelevance")+  , (B . collapseDefault . optWithoutK, "--without-K")+  , (B . optExactSplit, "--exact-split")+  , (B . not . optEta, "--no-eta-equality")+  , (B . optRewriting, "--rewriting")+  , (B . optCubical, "--cubical")+  , (B . optOverlappingInstances, "--overlapping-instances")+  , (B . optSafe, "--safe")+  , (B . optDoubleCheck, "--double-check")+  , (B . not . optSyntacticEquality, "--no-syntactic-equality")+  , (B . not . optAutoInline, "--no-auto-inline")+  , (B . not . optFastReduce, "--no-fast-reduce")+  , (I . optInstanceSearchDepth, "--instance-search-depth")+  , (I . optInversionMaxDepth, "--inversion-max-depth")+  , (W . optWarningMode, "--warning")+  ]++-- to make all restart options have the same type+data RestartCodomain = C CutOff | B Bool | I Int | W WarningMode+  deriving Eq++-- | An infective option is an option that if used in one module, must+--   be used in all modules that depend on this module.++infectiveOptions :: [(PragmaOptions -> Bool, String)]+infectiveOptions =+  [ (optCubical, "--cubical")+  , (optProp, "--prop")+  ]++-- | A coinfective option is an option that if used in one module, must+--   be used in all modules that this module depends on.++coinfectiveOptions :: [(PragmaOptions -> Bool, String)]+coinfectiveOptions =+  [ (optSafe, "--safe")+  , (collapseDefault . optWithoutK, "--without-K")+  , (not . optUniversePolymorphism, "--no-universe-polymorphism")+  , (not . collapseDefault . optSizedTypes, "--no-sized-types")+  , (not . collapseDefault . optGuardedness, "--no-guardedness")+  ]+ inputFlag :: FilePath -> Flag CommandLineOptions inputFlag f o =     case optInputFile o of@@ -350,26 +455,48 @@                            intercalate ", " (map fst allHelpTopics) ++ ")"  safeFlag :: Flag PragmaOptions-safeFlag o = return $ o { optSafe = True }+safeFlag o = do+  let guardedness = optGuardedness o+  let sizedTypes  = optSizedTypes o+  return $ o { optSafe        = True+             , optGuardedness = setDefault False guardedness+             , optSizedTypes  = setDefault False sizedTypes+             } +doubleCheckFlag :: Flag PragmaOptions+doubleCheckFlag o = return $ o { optDoubleCheck = True }++noSyntacticEqualityFlag :: Flag PragmaOptions+noSyntacticEqualityFlag o = return $ o { optSyntacticEquality = False }+ sharingFlag :: Bool -> Flag CommandLineOptions-sharingFlag _ o = return o+sharingFlag _ _ = throwError $+  "Feature --sharing has been removed (in favor of the Agda abstract machine)."  cachingFlag :: Bool -> Flag PragmaOptions cachingFlag b o = return $ o { optCaching = b } -proofIrrelevanceFlag :: Flag PragmaOptions-proofIrrelevanceFlag o = return $ o { optProofIrrelevance = True }+propFlag :: Flag PragmaOptions+propFlag o = return $ o { optProp = True } +noPropFlag :: Flag PragmaOptions+noPropFlag o = return $ o { optProp = False }+ experimentalIrrelevanceFlag :: Flag PragmaOptions experimentalIrrelevanceFlag o = return $ o { optExperimentalIrrelevance = True } +irrelevantProjectionsFlag :: Flag PragmaOptions+irrelevantProjectionsFlag o = return $ o { optIrrelevantProjections = True }+ noIrrelevantProjectionsFlag :: Flag PragmaOptions noIrrelevantProjectionsFlag o = return $ o { optIrrelevantProjections = False }  ignoreInterfacesFlag :: Flag CommandLineOptions ignoreInterfacesFlag o = return $ o { optIgnoreInterfaces = True } +ignoreAllInterfacesFlag :: Flag CommandLineOptions+ignoreAllInterfacesFlag o = return $ o { optIgnoreAllInterfaces = True }+ allowUnsolvedFlag :: Flag PragmaOptions allowUnsolvedFlag o = do   let upd = over warningSet (Set.\\ unsolvedWarnings)@@ -391,6 +518,9 @@ ghciInteractionFlag :: Flag CommandLineOptions ghciInteractionFlag o = return $ o { optGHCiInteraction = True } +jsonInteractionFlag :: Flag CommandLineOptions+jsonInteractionFlag o = return $ o { optJSONInteraction = True }+ vimFlag :: Flag CommandLineOptions vimFlag o = return $ o { optGenerateVimFile = True } @@ -415,6 +545,9 @@ noPrintPatSynFlag :: Flag PragmaOptions noPrintPatSynFlag o = return $ o { optPrintPatternSynonyms = False } +noFastReduceFlag :: Flag PragmaOptions+noFastReduceFlag o = return $ o { optFastReduce = False }+ latexDirFlag :: FilePath -> Flag CommandLineOptions latexDirFlag d o = return $ o { optLaTeXDir = d } @@ -435,11 +568,14 @@ -- The option was removed. See Issue 1918. dontCompletenessCheckFlag :: Flag PragmaOptions dontCompletenessCheckFlag _ =-  throwError "the --no-coverage-check option has been removed"+  throwError "The --no-coverage-check option has been removed."  dontUniverseCheckFlag :: Flag PragmaOptions dontUniverseCheckFlag o = return $ o { optUniverseCheck = False } +omegaInOmegaFlag :: Flag PragmaOptions+omegaInOmegaFlag o = return $ o { optOmegaInOmega = True }+ etaFlag :: Flag PragmaOptions etaFlag o = return $ o { optEta = True } @@ -447,16 +583,23 @@ noEtaFlag o = return $ o { optEta = False }  sizedTypes :: Flag PragmaOptions-sizedTypes o = return $ o { optSizedTypes = True }+sizedTypes o = return $ o { optSizedTypes = Value True }  noSizedTypes :: Flag PragmaOptions-noSizedTypes o = return $ o { optSizedTypes = False }+noSizedTypes o = return $ o { optSizedTypes = Value False } +guardedness :: Flag PragmaOptions+guardedness o = return $ o { optGuardedness = Value True }++noGuardedness :: Flag PragmaOptions+noGuardedness o = return $ o { optGuardedness = Value False }+ injectiveTypeConstructorFlag :: Flag PragmaOptions injectiveTypeConstructorFlag o = return $ o { optInjectiveTypeConstructors = True }  guardingTypeConstructorFlag :: Flag PragmaOptions-guardingTypeConstructorFlag o = return $ o { optGuardingTypeConstructors = True }+guardingTypeConstructorFlag _ = throwError $+  "Experimental feature --guardedness-preserving-type-constructors has been removed."  universePolymorphismFlag :: Flag PragmaOptions universePolymorphismFlag o = return $ o { optUniversePolymorphism = True }@@ -468,10 +611,10 @@ noForcingFlag o = return $ o { optForcing = False }  withKFlag :: Flag PragmaOptions-withKFlag o = return $ o { optWithoutK = False }+withKFlag o = return $ o { optWithoutK = Value False }  withoutKFlag :: Flag PragmaOptions-withoutKFlag o = return $ o { optWithoutK = True }+withoutKFlag o = return $ o { optWithoutK = Value True }  copatternsFlag :: Flag PragmaOptions copatternsFlag o = return $ o { optCopatterns = True }@@ -499,6 +642,13 @@ rewritingFlag :: Flag PragmaOptions rewritingFlag o = return $ o { optRewriting = True } +cubicalFlag :: Flag PragmaOptions+cubicalFlag o = do+  let withoutK = optWithoutK o+  return $ o { optCubical  = True+             , optWithoutK = setDefault True withoutK+             }+ postfixProjectionsFlag :: Flag PragmaOptions postfixProjectionsFlag o = return $ o { optPostfixProjections = True } @@ -507,6 +657,12 @@   d <- integerArgument "--instance-search-depth" s   return $ o { optInstanceSearchDepth = d } +overlappingInstancesFlag :: Flag PragmaOptions+overlappingInstancesFlag o = return $ o { optOverlappingInstances = True }++noOverlappingInstancesFlag :: Flag PragmaOptions+noOverlappingInstancesFlag o = return $ o { optOverlappingInstances = False }+ inversionMaxDepthFlag :: String -> Flag PragmaOptions inversionMaxDepthFlag s o = do   d <- integerArgument "--inversion-max-depth" s@@ -528,6 +684,13 @@ htmlFlag :: Flag CommandLineOptions htmlFlag o = return $ o { optGenerateHTML = True } +htmlHighlightFlag :: String -> Flag CommandLineOptions+htmlHighlightFlag "code" o = return $ o { optHTMLHighlight = HighlightCode }+htmlHighlightFlag "all"  o = return $ o { optHTMLHighlight = HighlightAll  }+htmlHighlightFlag "auto" o = return $ o { optHTMLHighlight = HighlightAuto  }+htmlHighlightFlag opt    o = throwError $ "Invalid option <" ++ opt+  ++ ">, expected <all>, <auto> or <code>"+ dependencyGraphFlag :: FilePath -> Flag CommandLineOptions dependencyGraphFlag f o = return $ o { optDependencyGraph = Just f } @@ -560,7 +723,7 @@     do  (k,n) <- parseVerbose s         return $ o { optVerbose = Trie.insert k n $ optVerbose o }   where-    parseVerbose s = case wordsBy (`elem` ":.") s of+    parseVerbose s = case wordsBy (`elem` (":." :: String)) s of       []  -> usage       ss  -> do         n <- readM (last ss) `catchError` \_ -> usage@@ -595,6 +758,8 @@                     "start in interactive mode"     , Option []     ["interaction"] (NoArg ghciInteractionFlag)                     "for use with the Emacs mode"+    , Option []     ["interaction-json"] (NoArg jsonInteractionFlag)+                    "for use with other editors such as Atom"      , Option []     ["compile-dir"] (ReqArg compileDirFlag "DIR")                     ("directory for compiler output (default: the project root)")@@ -613,6 +778,10 @@                      defaultHTMLDir ++ ")")     , Option []     ["css"] (ReqArg cssFlag "URL")                     "the CSS file used by the HTML files (can be relative)"+    , Option []     ["html-highlight"] (ReqArg htmlHighlightFlag "[code,all,auto]")+                    ("whether to highlight only the code parts (code) or " +++                    "the file as a whole (all) or " +++                    "decide by source file type (auto)")     , Option []     ["dependency-graph"] (ReqArg dependencyGraphFlag "FILE")                     "generate a Dot file with a module dependency graph"     , Option []     ["ignore-interfaces"] (NoArg ignoreInterfacesFlag)@@ -629,18 +798,26 @@                     "don't use default libraries"     , Option []     ["no-forcing"] (NoArg noForcingFlag)                     "disable the forcing optimisation"-    , Option []     ["sharing"] (NoArg $ sharingFlag True)+    , Option []     ["only-scope-checking"] (NoArg onlyScopeCheckingFlag)+                    "only scope-check the top-level module, do not type-check it"+    ] ++ map (fmap lensPragmaOptions) pragmaOptions++-- | Defined locally here since module ''Agda.Interaction.Options.Lenses''+--   has cyclic dependency.+lensPragmaOptions :: Lens' PragmaOptions CommandLineOptions+lensPragmaOptions f st = f (optPragmaOptions st) <&> \ opts -> st { optPragmaOptions = opts }++-- | Command line options of previous versions of Agda.+--   Should not be listed in the usage info, put parsed by GetOpt for good error messaging.+deadStandardOptions :: [OptDescr (Flag CommandLineOptions)]+deadStandardOptions =+    [ Option []     ["sharing"] (NoArg $ sharingFlag True)                     "DEPRECATED: does nothing"     , Option []     ["no-sharing"] (NoArg $ sharingFlag False)                     "DEPRECATED: does nothing"-    , Option []     ["only-scope-checking"] (NoArg onlyScopeCheckingFlag)-                    "only scope-check the top-level module, do not type-check it"-    ] ++ map (fmap lift) pragmaOptions-  where-  lift :: Flag PragmaOptions -> Flag CommandLineOptions-  lift f = \opts -> do-    ps <- f (optPragmaOptions opts)-    return (opts { optPragmaOptions = ps })+    , Option []     ["ignore-all-interfaces"] (NoArg ignoreAllInterfacesFlag) -- not deprecated! Just hidden+                    "ignore all interface files (re-type check everything, including builtin files)"+    ] ++ map (fmap lensPragmaOptions) deadPragmaOptions  pragmaOptions :: [OptDescr (Flag PragmaOptions)] pragmaOptions =@@ -652,8 +829,6 @@                     "don't use unicode characters when printing terms"     , Option ['v']  ["verbose"] (ReqArg verboseFlag "N")                     "set verbosity level to N"-    -- , Option []          ["proof-irrelevance"] (NoArg proofIrrelevanceFlag)-    --              "enable proof irrelevance (experimental feature)"     , Option []     ["allow-unsolved-metas"] (NoArg allowUnsolvedFlag)                     "succeed and create interface file regardless of unsolved meta variables"     , Option []     ["no-positivity-check"] (NoArg noPositivityFlag)@@ -662,28 +837,36 @@                     "do not warn about possibly nonterminating code"     , Option []     ["termination-depth"] (ReqArg terminationDepthFlag "N")                     "allow termination checker to count decrease/increase upto N (default N=1)"-    , Option []     ["no-coverage-check"] (NoArg dontCompletenessCheckFlag)-                    "the option has been removed"     , Option []     ["type-in-type"] (NoArg dontUniverseCheckFlag)                     "ignore universe levels (this makes Agda inconsistent)"+    , Option []     ["omega-in-omega"] (NoArg omegaInOmegaFlag)+                    "enable typing rule Setω : Setω (this makes Agda inconsistent)"+    , Option []     ["prop"] (NoArg propFlag)+                    "enable the use of the Prop universe"+    , Option []     ["no-prop"] (NoArg noPropFlag)+                    "disable the use of the Prop universe (default)"     , Option []     ["sized-types"] (NoArg sizedTypes)-                    "use sized types (default, inconsistent with `musical' coinduction)"+                    "enable sized types (default, inconsistent with --guardedness)"     , Option []     ["no-sized-types"] (NoArg noSizedTypes)                     "disable sized types"+    , Option []     ["guardedness"] (NoArg guardedness)+                    "enable constructor-based guarded corecursion (default, inconsistent with --sized-types)"+    , Option []     ["no-guardedness"] (NoArg noGuardedness)+                    "disable constructor-based guarded corecursion"     , Option []     ["injective-type-constructors"] (NoArg injectiveTypeConstructorFlag)                     "enable injective type constructors (makes Agda anti-classical and possibly inconsistent)"-    , Option []     ["guardedness-preserving-type-constructors"] (NoArg guardingTypeConstructorFlag)-                    "treat type constructors as inductive constructors when checking productivity"     , Option []     ["no-universe-polymorphism"] (NoArg noUniversePolymorphismFlag)                     "disable universe polymorphism"     , Option []     ["universe-polymorphism"] (NoArg universePolymorphismFlag)                     "enable universe polymorphism (default)"+    , Option []     ["irrelevant-projections"] (NoArg irrelevantProjectionsFlag)+                    "enable projection of irrelevant record fields and similar irrelevant definitions (inconsistent)"     , Option []     ["no-irrelevant-projections"] (NoArg noIrrelevantProjectionsFlag)-                    "disable projection of irrelevant record fields"+                    "disable projection of irrelevant record fields and similar irrelevant definitions (default)"     , Option []     ["experimental-irrelevance"] (NoArg experimentalIrrelevanceFlag)                     "enable potentially unsound irrelevance features (irrelevant levels, irrelevant data matching)"     , Option []     ["with-K"] (NoArg withKFlag)-                    "enable the K rule in pattern matching"+                    "enable the K rule in pattern matching (default)"     , Option []     ["without-K"] (NoArg withoutKFlag)                     "disable the K rule in pattern matching"     , Option []     ["copatterns"] (NoArg copatternsFlag)@@ -700,14 +883,24 @@                     "default records to no-eta-equality"     , Option []     ["rewriting"] (NoArg rewritingFlag)                     "enable declaration and use of REWRITE rules"+    , Option []     ["cubical"] (NoArg cubicalFlag)+                    "enable cubical features (e.g. overloads lambdas for paths), implies --without-K"     , Option []     ["postfix-projections"] (NoArg postfixProjectionsFlag)                     "make postfix projection notation the default"     , Option []     ["instance-search-depth"] (ReqArg instanceDepthFlag "N")                     "set instance search depth to N (default: 500)"+    , Option []     ["overlapping-instances"] (NoArg overlappingInstancesFlag)+                    "consider recursive instance arguments during pruning of instance candidates"+    , Option []     ["no-overlapping-instances"] (NoArg noOverlappingInstancesFlag)+                    "don't consider recursive instance arguments during pruning of instance candidates (default)"     , Option []     ["inversion-max-depth"] (ReqArg inversionMaxDepthFlag "N")                     "set maximum depth for pattern match inversion to N (default: 50)"     , Option []     ["safe"] (NoArg safeFlag)-                    "disable postulates, unsafe OPTION pragmas and primTrustMe"+                    "disable postulates, unsafe OPTION pragmas and primEraseEquality, implies --no-sized-types and --no-guardedness "+    , Option []     ["double-check"] (NoArg doubleCheckFlag)+                    "enable double-checking of all terms using the internal typechecker"+    , Option []     ["no-syntactic-equality"] (NoArg noSyntacticEqualityFlag)+                    "disable the syntactic equality shortcut in the conversion checker"     , Option ['W']  ["warning"] (ReqArg warningModeFlag "FLAG")                     ("set warning flags. See --help=warning.")     , Option []     ["no-main"] (NoArg compileFlagNoMain)@@ -730,9 +923,22 @@                      "(only definitions marked INLINE will be inlined)")     , Option []     ["no-print-pattern-synonyms"] (NoArg noPrintPatSynFlag)                     "expand pattern synonyms when printing terms"+    , Option []     ["no-fast-reduce"] (NoArg noFastReduceFlag)+                    "disable reduction using the Agda Abstract Machine"     ] +-- | Pragma options of previous versions of Agda.+--   Should not be listed in the usage info, put parsed by GetOpt for good error messaging.+deadPragmaOptions :: [OptDescr (Flag PragmaOptions)]+deadPragmaOptions =+    [ Option []     ["guardedness-preserving-type-constructors"] (NoArg guardingTypeConstructorFlag)+                    "treat type constructors as inductive constructors when checking productivity"+    , Option []     ["no-coverage-check"] (NoArg dontCompletenessCheckFlag)+                    "the option has been removed"+    ]+ -- | Used for printing usage info.+--   Does not include the dead options. standardOptions_ :: [OptDescr ()] standardOptions_ = map (fmap $ const ()) standardOptions @@ -784,14 +990,16 @@       sugs [a] = a       sugs as  = "any of " ++ intercalate " " as +{- No longer used in favour of parseBackendOptions in Agda.Compiler.Backend -- | Parse the standard options. parseStandardOptions :: [String] -> OptM CommandLineOptions parseStandardOptions argv = parseStandardOptions' argv defaultOptions  parseStandardOptions' :: [String] -> Flag CommandLineOptions parseStandardOptions' argv opts = do-  opts <- getOptSimple (stripRTS argv) standardOptions inputFlag opts+  opts <- getOptSimple (stripRTS argv) (deadStandardOptions ++ standardOptions) inputFlag opts   checkOpts opts+-}  -- | Parse options from an options pragma. parsePragmaOptions@@ -801,7 +1009,7 @@      -- ^ Command-line options which should be updated.   -> OptM PragmaOptions parsePragmaOptions argv opts = do-  ps <- getOptSimple argv pragmaOptions+  ps <- getOptSimple argv (deadPragmaOptions ++ pragmaOptions)           (\s _ -> throwError $ "Bad option in pragma: " ++ s)           (optPragmaOptions opts)   _ <- checkOpts (opts { optPragmaOptions = ps })@@ -824,7 +1032,8 @@  usage options progName (HelpFor topic) = helpTopicUsage topic --- Remove +RTS .. -RTS from arguments+-- | Removes RTS options from a list of options.+ stripRTS :: [String] -> [String] stripRTS [] = [] stripRTS ("--RTS" : argv) = argv
src/full/Agda/Interaction/Options/Lenses.hs view
@@ -8,6 +8,11 @@  import Control.Monad.State +import Data.Set (Set)+import qualified Data.Set as Set++import System.FilePath ((</>))+ import Agda.TypeChecking.Monad.Base import Agda.TypeChecking.Monad.State import Agda.Interaction.Options@@ -20,9 +25,11 @@ ---------------------------------------------------------------------------  class LensPragmaOptions a where-  getPragmaOptions :: a -> PragmaOptions-  setPragmaOptions :: PragmaOptions -> a -> a-  mapPragmaOptions :: (PragmaOptions -> PragmaOptions) -> a -> a+  getPragmaOptions  :: a -> PragmaOptions+  setPragmaOptions  :: PragmaOptions -> a -> a+  mapPragmaOptions  :: (PragmaOptions -> PragmaOptions) -> a -> a+  lensPragmaOptions :: Lens' PragmaOptions a+  -- lensPragmaOptions :: forall f. Functor f => (PragmaOptions -> f PragmaOptions) -> a -> f a    -- default implementations   setPragmaOptions     = mapPragmaOptions . const@@ -31,13 +38,15 @@ instance LensPragmaOptions CommandLineOptions where   getPragmaOptions = optPragmaOptions   setPragmaOptions opts st = st { optPragmaOptions = opts }+  lensPragmaOptions f st = f (optPragmaOptions st) <&> \ opts -> st { optPragmaOptions = opts }  instance LensPragmaOptions TCState where   getPragmaOptions = (^.stPragmaOptions)   setPragmaOptions = set stPragmaOptions+  lensPragmaOptions = stPragmaOptions  modifyPragmaOptions :: (PragmaOptions -> PragmaOptions) -> TCM ()-modifyPragmaOptions = modify . mapPragmaOptions+modifyPragmaOptions = modifyTC . mapPragmaOptions  --------------------------------------------------------------------------- -- ** Verbosity in the local pragma options@@ -61,10 +70,10 @@   mapVerbosity = mapPragmaOptions . mapVerbosity  modifyVerbosity :: (Verbosity -> Verbosity) -> TCM ()-modifyVerbosity = modify . mapVerbosity+modifyVerbosity = modifyTC . mapVerbosity  putVerbosity :: Verbosity -> TCM ()-putVerbosity = modify . setVerbosity+putVerbosity = modifyTC . setVerbosity  --------------------------------------------------------------------------- -- * Command line options@@ -88,7 +97,7 @@   mapCommandLineOptions = updatePersistentState . mapCommandLineOptions  modifyCommandLineOptions :: (CommandLineOptions -> CommandLineOptions) -> TCM ()-modifyCommandLineOptions = modify . mapCommandLineOptions+modifyCommandLineOptions = modifyTC . mapCommandLineOptions  --------------------------------------------------------------------------- -- ** Safe mode@@ -107,7 +116,7 @@  instance LensSafeMode PragmaOptions where   getSafeMode = optSafe-  setSafeMode is opts = opts { optSafe = is }+  setSafeMode is opts = opts { optSafe = is } -- setSafeOption  instance LensSafeMode CommandLineOptions where   getSafeMode = getSafeMode . getPragmaOptions@@ -122,12 +131,74 @@   mapSafeMode = mapCommandLineOptions . mapSafeMode  modifySafeMode :: (SafeMode -> SafeMode) -> TCM ()-modifySafeMode = modify . mapSafeMode+modifySafeMode = modifyTC . mapSafeMode  putSafeMode :: SafeMode -> TCM ()-putSafeMode = modify . setSafeMode+putSafeMode = modifyTC . setSafeMode +-- | These builtins may use postulates, and are still considered --safe +builtinModulesWithSafePostulates :: Set FilePath+builtinModulesWithSafePostulates =+  primitiveModules `Set.union` (Set.fromList+  [ "Agda" </> "Builtin" </> "Bool.agda"+  , "Agda" </> "Builtin" </> "Char.agda"+  , "Agda" </> "Builtin" </> "Char" </> "Properties.agda"+  , "Agda" </> "Builtin" </> "Coinduction.agda"+  , "Agda" </> "Builtin" </> "Cubical" </> "Glue.agda"+  , "Agda" </> "Builtin" </> "Cubical" </> "Id.agda"+  , "Agda" </> "Builtin" </> "Cubical" </> "Path.agda"+  , "Agda" </> "Builtin" </> "Cubical" </> "Sub.agda"+  , "Agda" </> "Builtin" </> "Equality" </> "Erase.agda"+  , "Agda" </> "Builtin" </> "Equality.agda"+  , "Agda" </> "Builtin" </> "Float.agda"+  , "Agda" </> "Builtin" </> "FromNat.agda"+  , "Agda" </> "Builtin" </> "FromNeg.agda"+  , "Agda" </> "Builtin" </> "FromString.agda"+  , "Agda" </> "Builtin" </> "Int.agda"+  , "Agda" </> "Builtin" </> "IO.agda"+  , "Agda" </> "Builtin" </> "List.agda"+  , "Agda" </> "Builtin" </> "Nat.agda"+  , "Agda" </> "Builtin" </> "Reflection.agda"+  , "Agda" </> "Builtin" </> "Sigma.agda"+  , "Agda" </> "Builtin" </> "Size.agda"+  , "Agda" </> "Builtin" </> "Strict.agda"+  , "Agda" </> "Builtin" </> "String.agda"+  , "Agda" </> "Builtin" </> "String" </> "Properties.agda"+  , "Agda" </> "Builtin" </> "Unit.agda"+  , "Agda" </> "Builtin" </> "Word.agda"+  ])++-- | These builtins may not use postulates under --safe. They are not+--   automatically unsafe, but will be if they use an unsafe feature.++builtinModulesWithUnsafePostulates :: Set FilePath+builtinModulesWithUnsafePostulates = Set.fromList+  [ "Agda" </> "Builtin" </> "TrustMe.agda"+  , "Agda" </> "Builtin" </> "Equality" </> "Rewrite.agda"+  ]++primitiveModules :: Set FilePath+primitiveModules = Set.fromList+  [ "Agda" </> "Primitive.agda"+  , "Agda" </> "Primitive" </> "Cubical.agda"+  ]++builtinModules :: Set FilePath+builtinModules = builtinModulesWithSafePostulates `Set.union`+                 builtinModulesWithUnsafePostulates++isBuiltinModule :: FilePath -> TCM Bool+isBuiltinModule file = do+  libdirPrim <- (</> "prim") <$> liftIO defaultLibDir+  return (file `Set.member` Set.map (libdirPrim </>) builtinModules)++isBuiltinModuleWithSafePostulates :: FilePath -> TCM Bool+isBuiltinModuleWithSafePostulates file = do+  libdirPrim <- (</> "prim") <$> liftIO defaultLibDir+  let safeBuiltins   = Set.map (libdirPrim </>) builtinModulesWithSafePostulates+  return (file `Set.member` safeBuiltins)+ --------------------------------------------------------------------------- -- ** Include directories ---------------------------------------------------------------------------@@ -166,16 +237,16 @@   mapAbsoluteIncludePaths = mapCommandLineOptions . mapAbsoluteIncludePaths  modifyIncludePaths :: ([FilePath] -> [FilePath]) -> TCM ()-modifyIncludePaths = modify . mapIncludePaths+modifyIncludePaths = modifyTC . mapIncludePaths  putIncludePaths :: [FilePath] -> TCM ()-putIncludePaths = modify . setIncludePaths+putIncludePaths = modifyTC . setIncludePaths  modifyAbsoluteIncludePaths :: ([AbsolutePath] -> [AbsolutePath]) -> TCM ()-modifyAbsoluteIncludePaths = modify . mapAbsoluteIncludePaths+modifyAbsoluteIncludePaths = modifyTC . mapAbsoluteIncludePaths  putAbsoluteIncludePaths :: [AbsolutePath] -> TCM ()-putAbsoluteIncludePaths = modify . setAbsoluteIncludePaths+putAbsoluteIncludePaths = modifyTC . setAbsoluteIncludePaths  --------------------------------------------------------------------------- -- ** Include directories@@ -208,7 +279,7 @@   mapPersistentVerbosity = mapCommandLineOptions . mapPersistentVerbosity  modifyPersistentVerbosity :: (PersistentVerbosity -> PersistentVerbosity) -> TCM ()-modifyPersistentVerbosity = modify . mapPersistentVerbosity+modifyPersistentVerbosity = modifyTC . mapPersistentVerbosity  putPersistentVerbosity :: PersistentVerbosity -> TCM ()-putPersistentVerbosity = modify . setPersistentVerbosity+putPersistentVerbosity = modifyTC . setPersistentVerbosity
src/full/Agda/Interaction/Options/Warnings.hs view
@@ -29,10 +29,11 @@ import Text.Read ( readMaybe ) import Data.Set (Set) import qualified Data.Set as Set-import Data.Maybe ( fromMaybe, catMaybes )+import Data.Maybe ( fromMaybe ) import Data.List ( stripPrefix, intercalate )  import Agda.Utils.Lens+import Agda.Utils.Maybe  #include "undefined.h" import Agda.Utils.Impossible@@ -97,19 +98,25 @@ errorWarnings = Set.fromList   [ CoverageIssue_   , GenericNonFatalError_+  , MissingDefinitions_+  , NotAllowedInMutual_   , NotStrictlyPositive_   , OverlappingTokensWarning_+  , PragmaCompiled_   , SafeFlagPostulate_   , SafeFlagPragma_   , SafeFlagNonTerminating_   , SafeFlagTerminating_-  , SafeFlagPrimTrustMe_+  , SafeFlagWithoutKFlagPrimEraseEquality_   , SafeFlagNoPositivityCheck_   , SafeFlagPolarity_+  , SafeFlagNoUniverseCheck_   , TerminationIssue_   , UnsolvedMetaVariables_   , UnsolvedInteractionMetas_   , UnsolvedConstraints_+  , InfectiveImport_+  , CoInfectiveImport_   ]  allWarnings :: Set WarningName@@ -126,37 +133,52 @@  data WarningName   =-  -- Parser Warning+  -- Parser Warnings     OverlappingTokensWarning_-  -- Nicifer Warning-  | UnknownNamesInFixityDecl_-  | UnknownFixityInMixfixDecl_-  | UnknownNamesInPolarityPragmas_-  | PolarityPragmasButNotPostulates_-  | UselessPrivate_-  | UselessAbstract_-  | UselessInstance_-  | EmptyMutual_+  -- Library Warnings+  | LibUnknownField_+  -- Nicifer Warnings   | EmptyAbstract_-  | EmptyPrivate_   | EmptyInstance_   | EmptyMacro_+  | EmptyMutual_   | EmptyPostulate_+  | EmptyPrivate_+  | EmptyGeneralize_+  | EmptyPrimitive_+  | InvalidCatchallPragma_+  | InvalidNoUniverseCheckPragma_   | InvalidTerminationCheckPragma_   | InvalidNoPositivityCheckPragma_-  | InvalidCatchallPragma_-  -- Scope and Type Checking Warning+  | MissingDefinitions_+  | NotAllowedInMutual_+  | PolarityPragmasButNotPostulates_+  | PragmaNoTerminationCheck_+  | PragmaCompiled_+  | UnknownFixityInMixfixDecl_+  | UnknownNamesInFixityDecl_+  | UnknownNamesInPolarityPragmas_+  | UselessAbstract_+  | UselessInstance_+  | UselessPrivate_+  -- Scope and Type Checking Warnings   | OldBuiltin_   | EmptyRewritePragma_+  | IllformedAsClause_   | UselessPublic_   | UnreachableClauses_   | UselessInline_+  | WrongInstanceDeclaration_+  | InstanceWithExplicitArg_+  | InstanceNoOutputTypeName_+  | InstanceArgWithExplicitArg_   | GenericWarning_   | DeprecationWarning_   | InversionDepthReached_   | TerminationIssue_   | CoverageIssue_   | CoverageNoExactSplit_+  | ModuleDoesntExport_   | NotStrictlyPositive_   | UnsolvedMetaVariables_   | UnsolvedInteractionMetas_@@ -166,10 +188,17 @@   | SafeFlagPragma_   | SafeFlagNonTerminating_   | SafeFlagTerminating_-  | SafeFlagPrimTrustMe_+  | SafeFlagWithoutKFlagPrimEraseEquality_   | SafeFlagNoPositivityCheck_   | SafeFlagPolarity_+  | SafeFlagNoUniverseCheck_   | UserWarning_+  | WithoutKFlagPrimEraseEquality_+  | CantGeneralizeOverSorts_+  | AbsurdPatternRequiresNoRHS_+  -- Checking consistency of options+  | InfectiveImport_+  | CoInfectiveImport_   deriving (Eq, Ord, Show, Read, Enum, Bounded)  -- | The flag corresponding to a warning is precisely the name of the constructor@@ -202,7 +231,7 @@            , "-W noName respectively. The flags available are:"            ]   , ""-  , untable $ catMaybes $ flip map [minBound..maxBound] $ \ w ->+  , untable $ forMaybe [minBound..maxBound] $ \ w ->     let wnd = warningNameDescription w in     (warningName2String w, wnd) <$ guard (not $ null wnd)   ]@@ -221,28 +250,42 @@ warningNameDescription :: WarningName -> String warningNameDescription w = case w of   OverlappingTokensWarning_        -> "Multi-line comments spanning one or more literate text blocks."-  -- Nicifer Warning-  UnknownNamesInFixityDecl_        -> "Names not declared in the same scope as their syntax or fixity declaration."-  UnknownFixityInMixfixDecl_       -> "Mixfix names without an associated fixity declaration."-  UnknownNamesInPolarityPragmas_   -> "Names not declared in the same scope as their polarity pragmas."-  PolarityPragmasButNotPostulates_ -> "Polarity pragmas for non-postulates."-  UselessPrivate_                  -> "`private' blocks where they have no effect."-  UselessAbstract_                 -> "`abstract' blocks where they have no effect."-  UselessInstance_                 -> "`instance' blocks where they have no effect."-  EmptyMutual_                     -> "Empty `mutual' blocks."+  -- Library Warnings+  LibUnknownField_                 -> "Unknown field in library file"+  -- Nicifer Warnings   EmptyAbstract_                   -> "Empty `abstract' blocks."-  EmptyPrivate_                    -> "Empty `private' blocks."   EmptyInstance_                   -> "Empty `instance' blocks."   EmptyMacro_                      -> "Empty `macro' blocks."+  EmptyMutual_                     -> "Empty `mutual' blocks."   EmptyPostulate_                  -> "Empty `postulate' blocks."-  InvalidTerminationCheckPragma_   -> "Termination checking pragmas before non-function or `mutual' blocks."-  InvalidNoPositivityCheckPragma_  -> "No positivity checking pragmas before non-`data', `record' or `mutual' blocks."+  EmptyPrivate_                    -> "Empty `private' blocks."+  EmptyGeneralize_                 -> "Empty `variable' blocks."+  EmptyPrimitive_                  -> "Empty `primitive' blocks."   InvalidCatchallPragma_           -> "`CATCHALL' pragmas before a non-function clause."-  -- Scope and Type Checking Warning+  InvalidNoPositivityCheckPragma_  -> "No positivity checking pragmas before non-`data', `record' or `mutual' blocks."+  InvalidNoUniverseCheckPragma_    -> "No universe checking pragmas before non-`data' or `record' declaration."+  InvalidTerminationCheckPragma_   -> "Termination checking pragmas before non-function or `mutual' blocks."+  MissingDefinitions_              -> "Declarations not associated to a definition."+  NotAllowedInMutual_              -> "Declarations not allowed in a mutual block."+  PolarityPragmasButNotPostulates_ -> "Polarity pragmas for non-postulates."+  PragmaNoTerminationCheck_        -> "`NO_TERMINATION_CHECK' pragmas are deprecated"+  PragmaCompiled_                  -> "'COMPILE' pragmas not allowed in safe mode."+  UnknownFixityInMixfixDecl_       -> "Mixfix names without an associated fixity declaration."+  UnknownNamesInFixityDecl_        -> "Names not declared in the same scope as their syntax or fixity declaration."+  UnknownNamesInPolarityPragmas_   -> "Names not declared in the same scope as their polarity pragmas."+  UselessAbstract_                 -> "`abstract' blocks where they have no effect."+  UselessInstance_                 -> "`instance' blocks where they have no effect."+  UselessPrivate_                  -> "`private' blocks where they have no effect."+  -- Scope and Type Checking Warnings   OldBuiltin_                      -> "Deprecated `BUILTIN' pragmas."   EmptyRewritePragma_              -> "Empty `REWRITE' pragmas."+  IllformedAsClause_               -> "Illformed `as'-clauses in `import' statements."   UselessPublic_                   -> "`public' blocks where they have no effect."   UselessInline_                   -> "`INLINE' pragmas where they have no effect."+  WrongInstanceDeclaration_        -> "Terms marked as eligible for instance search should end with a name."+  InstanceWithExplicitArg_         -> "`instance` declarations with explicit arguments are never considered by instance search."+  InstanceNoOutputTypeName_        -> "instance arguments whose type does not end in a named or variable type are never considered by instance search."+  InstanceArgWithExplicitArg_      -> "instance arguments with explicit arguments are never considered by instance search."   UnreachableClauses_              -> "Unreachable function clauses."   GenericWarning_                  -> ""   DeprecationWarning_              -> "Feature deprecation."@@ -250,6 +293,7 @@   TerminationIssue_                -> "Failed termination checks."   CoverageIssue_                   -> "Failed coverage checks."   CoverageNoExactSplit_            -> "Failed exact split checks."+  ModuleDoesntExport_              -> "Imported name is not actually exported."   NotStrictlyPositive_             -> "Failed strict positivity checks."   UnsolvedMetaVariables_           -> "Unsolved meta variables."   UnsolvedInteractionMetas_        -> "Unsolved interaction meta variables."@@ -259,7 +303,13 @@   SafeFlagPragma_                  -> "Unsafe `OPTIONS' pragmas with the safe flag."   SafeFlagNonTerminating_          -> "`NON_TERMINATING' pragmas with the safe flag."   SafeFlagTerminating_             -> "`TERMINATING' pragmas with the safe flag."-  SafeFlagPrimTrustMe_             -> "`primTrustMe' usages with the safe flag."+  SafeFlagWithoutKFlagPrimEraseEquality_ -> "`primEraseEquality' usages with the safe and without-K flags."   SafeFlagNoPositivityCheck_       -> "`NO_POSITIVITY_CHECK' pragmas with the safe flag."   SafeFlagPolarity_                -> "`POLARITY' pragmas with the safe flag."+  SafeFlagNoUniverseCheck_         -> "`NO_UNIVERSE_CHECK' pragmas with the safe flag."   UserWarning_                     -> "User-defined warning added using the 'WARNING_ON_USAGE' pragma."+  AbsurdPatternRequiresNoRHS_      -> "A clause with an absurd pattern does not need a Right Hand Side."+  CantGeneralizeOverSorts_         -> "Attempt to generalize over sort metas in 'variable' declaration."+  WithoutKFlagPrimEraseEquality_   -> "`primEraseEquality' usages with the without-K flags."+  InfectiveImport_                 -> "Importing a file using e.g. `--cubical' into one which doesn't"+  CoInfectiveImport_               -> "Importing a file not using e.g. `--safe'  from one which does"
src/full/Agda/Interaction/Response.hs view
@@ -82,7 +82,6 @@     | Info_Error String         -- ^ When an error message is displayed this constructor should be         -- used, if appropriate.---    | Info_Warning String --FNF: currently unused     | Info_Intro Doc         -- ^ 'Info_Intro' denotes two different types of errors         --   TODO: split these into separate constructors@@ -139,7 +138,7 @@ --      closure of the 'InteractionOutputCallback' function. --      (suitable for intra-process communication). -type InteractionOutputCallback = Response -> IO ()+type InteractionOutputCallback = Response -> TCM ()  -- | The default 'InteractionOutputCallback' function prints certain -- things to stdout (other things generate internal errors).
src/full/Agda/Main.hs view
@@ -21,6 +21,7 @@ import Agda.Interaction.Options.Help (Help (..)) import Agda.Interaction.Monad import Agda.Interaction.EmacsTop (mimicGHCi)+import Agda.Interaction.JSONTop (jsonREPL) import Agda.Interaction.Imports (MaybeWarnings'(..)) import qualified Agda.Interaction.Imports as Imp import qualified Agda.Interaction.Highlighting.Dot as Dot@@ -63,11 +64,11 @@ runAgda' backends = runTCMPrettyErrors $ do   progName <- liftIO getProgName   argv     <- liftIO getArgs-  opts     <- liftIO $ runOptM $ parseBackendOptions backends argv+  opts     <- liftIO $ runOptM $ parseBackendOptions backends argv defaultOptions   case opts of     Left  err        -> liftIO $ optionError err     Right (bs, opts) -> do-      stBackends .= bs+      setTCLens stBackends bs       let enabled (Backend b) = isEnabled b (options b)           bs' = filter enabled bs       () <$ runAgdaWithOptions backends generateHTML (interaction bs') progName opts@@ -78,10 +79,12 @@ defaultInteraction opts   | i         = runIM . interactionLoop   | ghci      = mimicGHCi . (failIfInt =<<)+  | json      = jsonREPL . (failIfInt =<<)   | otherwise = (() <$)   where     i    = optInteractive     opts     ghci = optGHCiInteraction opts+    json = optJSONInteraction opts      failIfInt Nothing  = return ()     failIfInt (Just _) = __IMPOSSIBLE__@@ -101,6 +104,7 @@       | isNothing (optInputFile opts)           && not (optInteractive opts)           && not (optGHCiInteraction opts)+          && not (optJSONInteraction opts)                             = Nothing <$ liftIO (printUsage backends GeneralHelp)       | otherwise           = do           -- Main function.@@ -117,7 +121,7 @@             Bench.print              -- Print accumulated statistics.-            printStatistics 1 Nothing =<< use lensAccumStatistics+            printStatistics 1 Nothing =<< useTC lensAccumStatistics   where     checkFile = Just <$> do       when (optInteractive opts) $ liftIO $ putStr splashScreen@@ -135,7 +139,7 @@                      else Imp.TypeCheck            file    <- getInputFile-          (i, mw) <- Imp.typeCheckMain file mode+          (i, mw) <- Imp.typeCheckMain file mode =<< Imp.sourceInfo file            -- An interface is only generated if the mode is           -- Imp.TypeCheck and there are no warnings.@@ -164,7 +168,7 @@           unless (null ws) $ do             let banner = text $ "\n" ++ delimiter "All done; warnings encountered"             reportSDoc "warning" 1 $-              vcat $ punctuate (text "\n") $ banner : (prettyTCM <$> ws)+              vcat $ punctuate "\n" $ banner : (prettyTCM <$> ws)            return result @@ -201,7 +205,7 @@ runTCMPrettyErrors :: TCM () -> IO () runTCMPrettyErrors tcm = do     r <- runTCMTop $ tcm `catchError` \err -> do-      s2s <- prettyTCWarnings' =<< Imp.errorWarningsOfTCErr err+      s2s <- prettyTCWarnings' =<< Imp.getAllWarningsOfTCErr err       s1  <- prettyError err       let ss = filter (not . null) $ s2s ++ [s1]       unless (null s1) (liftIO $ putStr $ unlines ss)
src/full/Agda/Syntax/Abstract.hs view
@@ -13,7 +13,7 @@     ) where  import Prelude-import Control.Arrow (first, second)+import Control.Arrow (first, second, (***))  import Data.Foldable (Foldable) import qualified Data.Foldable as Fold@@ -22,23 +22,30 @@ import Data.Maybe import Data.Sequence (Seq, (<|), (><)) import qualified Data.Sequence as Seq+import qualified Data.Set as Set+import Data.Set (Set) import Data.Traversable import Data.Void  import Data.Data (Data)+import Data.Monoid (mappend)  import Agda.Syntax.Concrete.Name (NumHoles(..)) import Agda.Syntax.Concrete (FieldAssignment'(..), exprFieldA, HoleContent'(..)) import qualified Agda.Syntax.Concrete as C import Agda.Syntax.Concrete.Pretty ()-import Agda.Syntax.Info-import Agda.Syntax.Common-import Agda.Syntax.Position+ import Agda.Syntax.Abstract.Name import Agda.Syntax.Abstract.Name as A (QNamed)++import qualified Agda.Syntax.Internal as I++import Agda.Syntax.Common+import Agda.Syntax.Info+import Agda.Syntax.Fixity ( Fixity' ) import Agda.Syntax.Literal+import Agda.Syntax.Position import Agda.Syntax.Scope.Base-import qualified Agda.Syntax.Internal as I  import Agda.TypeChecking.Positivity.Occurrence @@ -51,15 +58,16 @@ #include "undefined.h" import Agda.Utils.Impossible --- A name in a binding position: we also compare the nameConcrete+-- | A name in a binding position: we also compare the nameConcrete -- when comparing the binders for equality.---- With --caching on we compare abstract syntax to determine if we can+--+-- With @--caching@ on we compare abstract syntax to determine if we can -- reuse previous typechecking results: during that comparison two -- names can have the same nameId but be semantically different,--- e.g. in "{_ : A} -> .." vs "{r : A} -> ..".+-- e.g. in @{_ : A} -> ..@ vs. @{r : A} -> ..@.+ newtype BindName = BindName { unBind :: Name }-  deriving (Show,Data,HasRange,SetRange,KillRange)+  deriving (Show, Data, HasRange, SetRange, KillRange)  instance Eq BindName where   (BindName n) == (BindName m)@@ -98,9 +106,10 @@   | AbsurdLam ExprInfo Hiding          -- ^ @λ()@ or @λ{}@.   | ExtendedLam ExprInfo DefInfo QName [Clause]   | Pi   ExprInfo Telescope Expr       -- ^ Dependent function space @Γ → A@.+  | Generalized (Set.Set QName) Expr   -- ^ Like a Pi, but the ordering is not known   | Fun  ExprInfo (Arg Expr) Expr      -- ^ Non-dependent function space.   | Set  ExprInfo Integer              -- ^ @Set@, @Set1@, @Set2@, ...-  | Prop ExprInfo                      -- ^ @Prop@ (no longer supported, used as dummy type).+  | Prop ExprInfo Integer              -- ^ @Prop@, @Prop1@, @Prop2@, ...   | Let  ExprInfo [LetBinding] Expr    -- ^ @let bs in e@.   | ETel Telescope                     -- ^ Only used when printing telescopes.   | Rec  ExprInfo RecordAssigns        -- ^ Record construction.@@ -116,6 +125,12 @@   | DontCare Expr                      -- ^ For printing @DontCare@ from @Syntax.Internal@.   deriving (Data, Show) +-- | Smart constructor for Generalized+generalized :: Set.Set QName -> Expr -> Expr+generalized s e+    | Set.null s = e+    | otherwise = Generalized s e+ -- | Record field assignment @f = e@. type Assign  = FieldAssignment' Expr type Assigns = [Assign]@@ -148,7 +163,7 @@                   , prRen "renNames   =" (renNames i) ]     where       prRen s r = sep [ text s, nest 2 $ vcat (map pr r) ]-      pr (x, y) = pretty x <+> text "->" <+> pretty y+      pr (x, y) = pretty x <+> "->" <+> pretty y  data Declaration   = Axiom      Axiom DefInfo ArgInfo (Maybe [Occurrence]) QName Expr@@ -156,10 +171,12 @@     --     -- The fourth argument contains an optional assignment of     -- polarities to arguments.+  | Generalize (Set.Set QName) DefInfo ArgInfo QName Expr+    -- ^ First argument is set of generalizable variables used in the type.   | Field      DefInfo QName (Arg Expr)              -- ^ record field   | Primitive  DefInfo QName Expr                    -- ^ primitive function   | Mutual     MutualInfo [Declaration]              -- ^ a bunch of mutually recursive definitions-  | Section    ModuleInfo ModuleName [TypedBindings] [Declaration]+  | Section    ModuleInfo ModuleName GeneralizeTelescope [Declaration]   | Apply      ModuleInfo ModuleName ModuleApplication ScopeCopyInfo ImportDirective     -- ^ The @ImportDirective@ is for highlighting purposes.   | Import     ModuleInfo ModuleName ImportDirective@@ -168,11 +185,11 @@   | Open       ModuleInfo ModuleName ImportDirective     -- ^ only retained for highlighting purposes   | FunDef     DefInfo QName Delayed [Clause] -- ^ sequence of function clauses-  | DataSig    DefInfo QName Telescope Expr -- ^ lone data signature-  | DataDef    DefInfo QName [LamBinding] [Constructor]+  | DataSig    DefInfo QName GeneralizeTelescope Expr -- ^ lone data signature+  | DataDef    DefInfo QName UniverseCheck DataDefParams [Constructor]       -- ^ the 'LamBinding's are 'DomainFree' and bind the parameters of the datatype.-  | RecSig     DefInfo QName Telescope Expr -- ^ lone record signature-  | RecDef     DefInfo QName (Maybe (Ranged Induction)) (Maybe HasEta) (Maybe QName) [LamBinding] Expr [Declaration]+  | RecSig     DefInfo QName GeneralizeTelescope Expr -- ^ lone record signature+  | RecDef     DefInfo QName UniverseCheck (Maybe (Ranged Induction)) (Maybe HasEta) (Maybe QName) DataDefParams Expr [Declaration]       -- ^ The 'LamBinding's are 'DomainFree' and bind the parameters of the datatype.       --   The 'Expr' gives the constructor type telescope, @(x1 : A1)..(xn : An) -> Prop@,       --   and the optional name is the constructor's name.@@ -188,14 +205,15 @@  instance GetDefInfo Declaration where   getDefInfo (Axiom _ i _ _ _ _)    = Just i+  getDefInfo (Generalize _ i _ _ _) = Just i   getDefInfo (Field i _ _)          = Just i   getDefInfo (Primitive i _ _)      = Just i   getDefInfo (ScopedDecl _ (d:_))   = getDefInfo d   getDefInfo (FunDef i _ _ _)       = Just i   getDefInfo (DataSig i _ _ _)      = Just i-  getDefInfo (DataDef i _ _ _)      = Just i+  getDefInfo (DataDef i _ _ _ _)    = Just i   getDefInfo (RecSig i _ _ _)       = Just i-  getDefInfo (RecDef i _ _ _ _ _ _ _) = Just i+  getDefInfo (RecDef i _ _ _ _ _ _ _ _) = Just i   getDefInfo _ = Nothing  type ImportDirective = ImportDirective' QName ModuleName@@ -205,7 +223,7 @@ data ModuleApplication     = SectionApp Telescope ModuleName [NamedArg Expr]       -- ^ @tel. M args@:  applies @M@ to @args@ and abstracts @tel@.-    | RecordModuleIFS ModuleName+    | RecordModuleInstance ModuleName       -- ^ @M {{...}}@   deriving (Data, Show, Eq) @@ -219,13 +237,6 @@     --   but declare a name for an Agda concept.   | RewritePragma QName   | CompilePragma String QName String-  | CompiledPragma QName String-  | CompiledExportPragma QName String-  | CompiledTypePragma QName String-  | CompiledDataPragma QName String [String]-  | CompiledJSPragma QName String-  | CompiledUHCPragma QName String-  | CompiledDataUHCPragma QName String [String]   | StaticPragma QName   | EtaPragma QName     -- ^ For coinductive records, use pragma instead of regular@@ -249,6 +260,7 @@   | LetDeclaredVariable BindName     -- ^ Only used for highlighting. Refers to the first occurrence of     -- @x@ in @let x : A; x = e@.+--  | LetGeneralize DefInfo ArgInfo Expr   deriving (Data, Show, Eq)  @@ -259,16 +271,11 @@  -- | A lambda binding is either domain free or typed. data LamBinding-  = DomainFree ArgInfo BindName   -- ^ . @x@ or @{x}@ or @.x@ or @.{x}@-  | DomainFull TypedBindings  -- ^ . @(xs:e)@ or @{xs:e}@ or @(let Ds)@+  = DomainFree (NamedArg BindName)  -- ^ . @x@ or @{x}@ or @.x@ or @{x = y}@+  | DomainFull TypedBinding         -- ^ . @(xs:e)@ or @{xs:e}@ or @(let Ds)@   deriving (Data, Show, Eq)  --- | Typed bindings with hiding information.-data TypedBindings = TypedBindings Range (Arg TypedBinding)-            -- ^ . @(xs : e)@ or @{xs : e}@-  deriving (Data, Show, Eq)- -- | A typed binding.  Appears in dependent function spaces, typed lambdas, and --   telescopes.  It might be tempting to simplify this to only bind a single --   name at a time, and translate, say, @(x y : A)@ to @(x : A)(y : A)@@@ -284,15 +291,33 @@ --   that the metas of the copy are aliases of the metas of the original.  data TypedBinding-  = TBind Range [WithHiding BindName] Expr+  = TBind Range [NamedArg BindName] Expr     -- ^ As in telescope @(x y z : A)@ or type @(x y z : A) -> B@.   | TLet Range [LetBinding]     -- ^ E.g. @(let x = e)@ or @(let open M)@.   deriving (Data, Show, Eq)  -type Telescope  = [TypedBindings]+type Telescope  = [TypedBinding] +data GeneralizeTelescope = GeneralizeTel+  { generalizeTelVars :: Map QName Name+    -- ^ Maps generalize variables to the corresponding bound variable (to be+    --   introduced by the generalisation).+  , generalizeTel     :: Telescope }+  deriving (Data, Show, Eq)++data DataDefParams = DataDefParams+  { dataDefGeneralizedParams :: Set Name+    -- ^ We don't yet know the position of generalized parameters from the data+    --   sig, so we keep these in a set on the side.+  , dataDefParams :: [LamBinding]+  }+  deriving (Data, Show, Eq)++noDataDefParams :: DataDefParams+noDataDefParams = DataDefParams Set.empty []+ -- | A user pattern together with an internal term that it should be equal to --   after splitting is complete. --   Special cases:@@ -447,6 +472,7 @@   | LitP Literal   | PatternSynP PatInfo AmbiguousQName (NAPs e)   | RecP PatInfo [FieldAssignment' (Pattern' e)]+  | EqualP PatInfo [(e, e)]   | WithP PatInfo (Pattern' e)  -- ^ @| p@, for with-patterns.   deriving (Data, Show, Functor, Foldable, Traversable, Eq) @@ -455,6 +481,9 @@ type Patterns = [NamedArg Pattern]  instance IsProjP (Pattern' e) where+  -- Andreas, 2018-06-19, issue #3130+  -- Do not interpret things like .(p) as projection pattern any more.+  -- maybePostfixProjP (DotP _ e)    = isProjP e <&> \ (_o, d) -> (ProjPostfix, d)   isProjP (ProjP _ o d) = Just (o, d)   isProjP _ = Nothing @@ -463,20 +492,6 @@   isProjP (ScopedExpr _ e) = isProjP e   isProjP _ = Nothing -class MaybePostfixProjP a where-  maybePostfixProjP :: a -> Maybe (ProjOrigin, AmbiguousQName)--instance IsProjP e => MaybePostfixProjP (Pattern' e) where-  maybePostfixProjP (DotP _ e)    = isProjP e <&> \ (_o, d) -> (ProjPostfix, d)-  maybePostfixProjP (ProjP _ o d) = Just (o, d)-  maybePostfixProjP _ = Nothing--instance MaybePostfixProjP a => MaybePostfixProjP (Arg a) where-  maybePostfixProjP = maybePostfixProjP . unArg--instance MaybePostfixProjP a => MaybePostfixProjP (Named n a) where-  maybePostfixProjP = maybePostfixProjP . namedThing- {--------------------------------------------------------------------------     Things we parse but are not part of the Agda file syntax  --------------------------------------------------------------------------}@@ -509,9 +524,10 @@   AbsurdLam a1 b1         == AbsurdLam a2 b2         = (a1, b1) == (a2, b2)   ExtendedLam a1 b1 c1 d1 == ExtendedLam a2 b2 c2 d2 = (a1, b1, c1, d1) == (a2, b2, c2, d2)   Pi a1 b1 c1             == Pi a2 b2 c2             = (a1, b1, c1) == (a2, b2, c2)+  Generalized a1 b1       == Generalized a2 b2       = (a1, b1) == (a2, b2)   Fun a1 b1 c1            == Fun a2 b2 c2            = (a1, b1, c1) == (a2, b2, c2)   Set a1 b1               == Set a2 b2               = (a1, b1) == (a2, b2)-  Prop a1                 == Prop a2                 = a1 == a2+  Prop a1 b1              == Prop a2 b2              = (a1, b1) == (a2, b2)   Let a1 b1 c1            == Let a2 b2 c2            = (a1, b1, c1) == (a2, b2, c2)   ETel a1                 == ETel a2                 = a1 == a2   Rec a1 b1               == Rec a2 b2               = (a1, b1) == (a2, b2)@@ -532,6 +548,7 @@   ScopedDecl _ a1                == ScopedDecl _ a2                = a1 == a2    Axiom a1 b1 c1 d1 e1 f1        == Axiom a2 b2 c2 d2 e2 f2        = (a1, b1, c1, d1, e1, f1) == (a2, b2, c2, d2, e2, f2)+  Generalize a1 b1 c1 d1 e1      == Generalize a2 b2 c2 d2 e2      = (a1, b1, c1, d1, e1) == (a2, b2, c2, d2, e2)   Field a1 b1 c1                 == Field a2 b2 c2                 = (a1, b1, c1) == (a2, b2, c2)   Primitive a1 b1 c1             == Primitive a2 b2 c2             = (a1, b1, c1) == (a2, b2, c2)   Mutual a1 b1                   == Mutual a2 b2                   = (a1, b1) == (a2, b2)@@ -542,9 +559,9 @@   Open a1 b1 c1                  == Open a2 b2 c2                  = (a1, b1, c1) == (a2, b2, c2)   FunDef a1 b1 c1 d1             == FunDef a2 b2 c2 d2             = (a1, b1, c1, d1) == (a2, b2, c2, d2)   DataSig a1 b1 c1 d1            == DataSig a2 b2 c2 d2            = (a1, b1, c1, d1) == (a2, b2, c2, d2)-  DataDef a1 b1 c1 d1            == DataDef a2 b2 c2 d2            = (a1, b1, c1, d1) == (a2, b2, c2, d2)+  DataDef a1 b1 c1 d1 e1         == DataDef a2 b2 c2 d2 e2         = (a1, b1, c1, d1, e1) == (a2, b2, c2, d2, e2)   RecSig a1 b1 c1 d1             == RecSig a2 b2 c2 d2             = (a1, b1, c1, d1) == (a2, b2, c2, d2)-  RecDef a1 b1 c1 d1 e1 f1 g1 h1 == RecDef a2 b2 c2 d2 e2 f2 g2 h2 = (a1, b1, c1, d1, e1, f1, g1, h1) == (a2, b2, c2, d2, e2, f2, g2, h2)+  RecDef a1 b1 c1 d1 e1 f1 g1 h1 i1 == RecDef a2 b2 c2 d2 e2 f2 g2 h2 i2 = (a1, b1, c1, d1, e1, f1, g1, h1, i1) == (a2, b2, c2, d2, e2, f2, g2, h2, i2)   PatternSynDef a1 b1 c1         == PatternSynDef a2 b2 c2         = (a1, b1, c1) == (a2, b2, c2)   UnquoteDecl a1 b1 c1 d1        == UnquoteDecl a2 b2 c2 d2        = (a1, b1, c1, d1) == (a2, b2, c2, d2)   UnquoteDef a1 b1 c1            == UnquoteDef a2 b2 c2            = (a1, b1, c1) == (a2, b2, c2)@@ -555,22 +572,22 @@   underscore   = Underscore emptyMetaInfo   isUnderscore = __IMPOSSIBLE__ -instance LensHiding TypedBindings where-  getHiding   (TypedBindings _ a) = getHiding a-  mapHiding f (TypedBindings r a) = TypedBindings r $ mapHiding f a- instance LensHiding LamBinding where-  getHiding   (DomainFree ai _) = getHiding ai-  getHiding   (DomainFull tb)   = getHiding tb-  mapHiding f (DomainFree ai x) = mapHiding f ai `DomainFree` x-  mapHiding f (DomainFull tb)   = DomainFull $ mapHiding f tb+  getHiding   (DomainFree x)  = getHiding x+  getHiding   (DomainFull tb) = getHiding tb+  mapHiding f (DomainFree x)  = DomainFree $ mapHiding f x+  mapHiding f (DomainFull tb) = DomainFull $ mapHiding f tb -instance HasRange LamBinding where-    getRange (DomainFree _ x) = getRange x-    getRange (DomainFull b)   = getRange b+instance LensHiding TypedBinding where+  getHiding (TBind _ (x : _) _) = getHiding x   -- Slightly dubious+  getHiding (TBind _ [] _)      = __IMPOSSIBLE__+  getHiding TLet{}              = mempty+  mapHiding f (TBind r xs e) = TBind r ((map . mapHiding) f xs) e+  mapHiding f b@TLet{}       = b -instance HasRange TypedBindings where-    getRange (TypedBindings r _) = r+instance HasRange LamBinding where+    getRange (DomainFree x) = getRange x+    getRange (DomainFull b) = getRange b  instance HasRange TypedBinding where     getRange (TBind r _ _) = r@@ -591,9 +608,10 @@     getRange (AbsurdLam i _)       = getRange i     getRange (ExtendedLam i _ _ _) = getRange i     getRange (Pi i _ _)            = getRange i+    getRange (Generalized _ x)     = getRange x     getRange (Fun i _ _)           = getRange i     getRange (Set i _)             = getRange i-    getRange (Prop i)              = getRange i+    getRange (Prop i _)            = getRange i     getRange (Let i _ _)           = getRange i     getRange (Rec i _)             = getRange i     getRange (RecUpdate i _ _)     = getRange i@@ -611,6 +629,7 @@  instance HasRange Declaration where     getRange (Axiom    _ i _ _ _ _  ) = getRange i+    getRange (Generalize _ i _ _ _)   = getRange i     getRange (Field      i _ _      ) = getRange i     getRange (Mutual     i _        ) = getRange i     getRange (Section    i _ _ _    ) = getRange i@@ -622,9 +641,9 @@     getRange (ScopedDecl _ d        ) = getRange d     getRange (FunDef     i _ _ _    ) = getRange i     getRange (DataSig    i _ _ _    ) = getRange i-    getRange (DataDef    i _ _ _    ) = getRange i+    getRange (DataDef    i _ _ _ _  ) = getRange i     getRange (RecSig     i _ _ _    ) = getRange i-    getRange (RecDef   i _ _ _ _ _ _ _) = getRange i+    getRange (RecDef i _ _ _ _ _ _ _ _) = getRange i     getRange (PatternSynDef x _ _   ) = getRange x     getRange (UnquoteDecl _ i _ _)    = getRange i     getRange (UnquoteDef i _ _)       = getRange i@@ -641,6 +660,7 @@     getRange (LitP l)            = getRange l     getRange (PatternSynP i _ _) = getRange i     getRange (RecP i _)          = getRange i+    getRange (EqualP i _)        = getRange i     getRange (WithP i _)         = getRange i  instance HasRange SpineLHS where@@ -686,15 +706,19 @@     setRange r (LitP l)             = LitP (setRange r l)     setRange r (PatternSynP _ n as) = PatternSynP (PatRange r) n as     setRange r (RecP i as)          = RecP (PatRange r) as+    setRange r (EqualP _ es)        = EqualP (PatRange r) es     setRange r (WithP i p)          = WithP (setRange r i) p  instance KillRange LamBinding where-  killRange (DomainFree info x) = killRange1 (DomainFree info) x-  killRange (DomainFull b)      = killRange1 DomainFull b+  killRange (DomainFree x) = killRange1 DomainFree x+  killRange (DomainFull b) = killRange1 DomainFull b -instance KillRange TypedBindings where-  killRange (TypedBindings r b) = TypedBindings (killRange r) (killRange b)+instance KillRange GeneralizeTelescope where+  killRange (GeneralizeTel s tel) = GeneralizeTel s (killRange tel) +instance KillRange DataDefParams where+  killRange (DataDefParams s tel) = DataDefParams s (killRange tel)+ instance KillRange TypedBinding where   killRange (TBind r xs e) = killRange3 TBind r xs e   killRange (TLet r lbs)   = killRange2 TLet r lbs@@ -714,9 +738,10 @@   killRange (AbsurdLam i h)        = killRange2 AbsurdLam i h   killRange (ExtendedLam i n d ps) = killRange4 ExtendedLam i n d ps   killRange (Pi i a b)             = killRange3 Pi i a b+  killRange (Generalized s x)      = killRange1 (Generalized s) x   killRange (Fun i a b)            = killRange3 Fun i a b   killRange (Set i n)              = killRange2 Set i n-  killRange (Prop i)               = killRange1 Prop i+  killRange (Prop i n)             = killRange2 Prop i n   killRange (Let i ds e)           = killRange3 Let i ds e   killRange (Rec i fs)             = killRange2 Rec i fs   killRange (RecUpdate i e fs)     = killRange3 RecUpdate i e fs@@ -734,6 +759,7 @@  instance KillRange Declaration where   killRange (Axiom    p i a b c d     ) = killRange4 (\i a c d -> Axiom p i a b c d) i a c d+  killRange (Generalize s i j x e     ) = killRange4 (Generalize s) i j x e   killRange (Field      i a b         ) = killRange3 Field      i a b   killRange (Mutual     i a           ) = killRange2 Mutual     i a   killRange (Section    i a b c       ) = killRange4 Section    i a b c@@ -745,16 +771,16 @@   killRange (ScopedDecl a d           ) = killRange1 (ScopedDecl a) d   killRange (FunDef  i a b c          ) = killRange4 FunDef  i a b c   killRange (DataSig i a b c          ) = killRange4 DataSig i a b c-  killRange (DataDef i a b c          ) = killRange4 DataDef i a b c+  killRange (DataDef i a b c d        ) = killRange5 DataDef i a b c d   killRange (RecSig  i a b c          ) = killRange4 RecSig  i a b c-  killRange (RecDef  i a b c d e f g  ) = killRange8 RecDef  i a b c d e f g+  killRange (RecDef  i a b c d e f g h) = killRange9 RecDef  i a b c d e f g h   killRange (PatternSynDef x xs p     ) = killRange3 PatternSynDef x xs p   killRange (UnquoteDecl mi i x e     ) = killRange4 UnquoteDecl mi i x e   killRange (UnquoteDef i x e         ) = killRange3 UnquoteDef i x e  instance KillRange ModuleApplication where   killRange (SectionApp a b c  ) = killRange3 SectionApp a b c-  killRange (RecordModuleIFS a ) = killRange1 RecordModuleIFS a+  killRange (RecordModuleInstance a) = killRange1 RecordModuleInstance a  instance KillRange ScopeCopyInfo where   killRange (ScopeCopyInfo a b) = killRange2 ScopeCopyInfo a b@@ -771,6 +797,7 @@   killRange (LitP l)            = killRange1 LitP l   killRange (PatternSynP i a p) = killRange3 PatternSynP i a p   killRange (RecP i as)         = killRange2 RecP i as+  killRange (EqualP i es)       = killRange2 EqualP i es   killRange (WithP i p)         = killRange2 WithP i p  instance KillRange SpineLHS where@@ -820,8 +847,10 @@ instanceUniverseBiT' [] [t| (Declaration, Declaration)    |] instanceUniverseBiT' [] [t| (Declaration, ModuleName)     |] instanceUniverseBiT' [] [t| (Declaration, ModuleInfo)     |]-instanceUniverseBiT' [] [t| (Declaration, RString)        |]-  -- RString is not quite what you want but we put names on lots of things...+instanceUniverseBiT' [] [t| (Declaration, NamedArg LHSCore)  |]+instanceUniverseBiT' [] [t| (Declaration, NamedArg BindName) |]+instanceUniverseBiT' [] [t| (Declaration, NamedArg Expr)     |]+instanceUniverseBiT' [] [t| (Declaration, NamedArg Pattern)  |]  ------------------------------------------------------------------------ -- Queries@@ -855,13 +884,14 @@  instance AllNames Declaration where   allNames (Axiom   _ _ _ _ q _)      = Seq.singleton q+  allNames (Generalize _ _ _ q _)     = Seq.singleton q   allNames (Field     _   q _)        = Seq.singleton q   allNames (Primitive _   q _)        = Seq.singleton q   allNames (Mutual     _ defs)        = allNames defs   allNames (DataSig _ q _ _)          = Seq.singleton q-  allNames (DataDef _ q _ decls)      = q <| allNames decls+  allNames (DataDef _ q _ _ decls)    = q <| allNames decls   allNames (RecSig _ q _ _)           = Seq.singleton q-  allNames (RecDef _ q _ _ c _ _ decls) = q <| allNames c >< allNames decls+  allNames (RecDef _ q _ _ _ c _ _ decls) = q <| allNames c >< allNames decls   allNames (PatternSynDef q _ _)      = Seq.singleton q   allNames (UnquoteDecl _ _ qs _)     = Seq.fromList qs   allNames (UnquoteDef _ qs _)        = Seq.fromList qs@@ -900,6 +930,7 @@   allNames AbsurdLam{}             = Seq.empty   allNames (ExtendedLam _ _ q cls) = q <| allNames cls   allNames (Pi _ tel e)            = allNames tel >< allNames e+  allNames (Generalized s e)       = Seq.fromList (Set.toList s) >< allNames e  -- TODO: or just (allNames e)?   allNames (Fun _ e1 e2)           = allNames e1 >< allNames e2   allNames Set{}                   = Seq.empty   allNames Prop{}                  = Seq.empty@@ -922,9 +953,6 @@   allNames DomainFree{}       = Seq.empty   allNames (DomainFull binds) = allNames binds -instance AllNames TypedBindings where-  allNames (TypedBindings _ bs) = allNames bs- instance AllNames TypedBinding where   allNames (TBind _ _ e) = allNames e   allNames (TLet _ lbs)  = allNames lbs@@ -938,7 +966,7 @@  instance AllNames ModuleApplication where   allNames (SectionApp bindss _ es) = allNames bindss >< allNames es-  allNames RecordModuleIFS{}        = Seq.empty+  allNames RecordModuleInstance{}   = Seq.empty  -- | The name defined by the given axiom. --@@ -965,8 +993,8 @@   anyAbstract (ScopedDecl _ ds)      = anyAbstract ds   anyAbstract (Section _ _ _ ds)     = anyAbstract ds   anyAbstract (FunDef i _ _ _)       = defAbstract i == AbstractDef-  anyAbstract (DataDef i _ _ _)      = defAbstract i == AbstractDef-  anyAbstract (RecDef i _ _ _ _ _ _ _) = defAbstract i == AbstractDef+  anyAbstract (DataDef i _ _ _ _)    = defAbstract i == AbstractDef+  anyAbstract (RecDef i _ _ _ _ _ _ _ _) = defAbstract i == AbstractDef   anyAbstract (DataSig i _ _ _)      = defAbstract i == AbstractDef   anyAbstract (RecSig i _ _ _)       = defAbstract i == AbstractDef   anyAbstract _                      = __IMPOSSIBLE__@@ -979,6 +1007,8 @@   nameExpr d = mk (anameKind d) $ anameName d     where     mk DefName        x = Def x+    mk GeneralizeName x = Def x+    mk DisallowedGeneralizeName x = Def x     mk FldName        x = Proj ProjSystem $ unambiguous x     mk ConName        x = Con $ unambiguous x     mk PatternSynName x = PatternSyn $ unambiguous x@@ -1018,6 +1048,7 @@ patternToExpr (LitP l)            = Lit l patternToExpr (PatternSynP _ c ps) = PatternSyn c `app` (map . fmap . fmap) patternToExpr ps patternToExpr (RecP _ as)         = Rec exprNoRange $ map (Left . fmap patternToExpr) as+patternToExpr EqualP{}            = __IMPOSSIBLE__  -- Andrea TODO: where is this used? patternToExpr (WithP r p)         = __IMPOSSIBLE__  type PatternSynDefn = ([Arg Name], Pattern' Void)@@ -1025,7 +1056,7 @@  lambdaLiftExpr :: [Name] -> Expr -> Expr lambdaLiftExpr []     e = e-lambdaLiftExpr (n:ns) e = Lam exprNoRange (DomainFree defaultArgInfo $ BindName n) $+lambdaLiftExpr (n:ns) e = Lam exprNoRange (DomainFree $ defaultNamedArg $ BindName n) $                             lambdaLiftExpr ns e  @@ -1073,9 +1104,10 @@     AbsurdLam i h         -> e     ExtendedLam i di n cs -> __IMPOSSIBLE__   -- Maybe later...     Pi   i t e            -> Pi i (substExpr s t) (substExpr s e)+    Generalized ns e      -> Generalized ns (substExpr s e)     Fun  i ae e           -> Fun i (substExpr s ae) (substExpr s e)     Set  i n              -> e-    Prop i                -> e+    Prop i n              -> e     Let  i ls e           -> Let i (substExpr s ls) (substExpr s e)     ETel t                -> e     Rec  i nes            -> Rec i (substExpr s nes)@@ -1097,9 +1129,6 @@     LetBind i r n e e' -> LetBind i r n (substExpr s e) (substExpr s e')     LetPatBind i p e   -> LetPatBind i p (substExpr s e) -- Andreas, 2012-06-04: what about the pattern p     _                  -> lb -- Nicolas, 2013-11-11: what about "LetApply" there is experessions in there--instance SubstExpr TypedBindings where-  substExpr s (TypedBindings r atb) = TypedBindings r (substExpr s atb)  instance SubstExpr TypedBinding where   substExpr s tb = case tb of
src/full/Agda/Syntax/Abstract/Copatterns.hs view
@@ -212,7 +212,7 @@            abstract :: NamedArg Name -> ScopeM Expr -> ScopeM Expr           abstract (Arg info (Named Nothing x)) me =-            Lam exprNoRange (DomainFree info $ BindName x) <$> me+            Lam exprNoRange (DomainFree $ unnamedArg info $ BindName x) <$> me           abstract (Arg _ (Named Just{} _)) me = typeError $ NotImplemented $             "named arguments in projection patterns" @@ -276,6 +276,7 @@       AbsurdLam{}           -> e       ExtendedLam i i' n cs -> ExtendedLam i i' n (rename rho cs)       Pi i tel e            -> Pi i (rename rho tel) (rename rho e)+      Generalized s e       -> Generalized s (rename rho e)       Fun i a e             -> Fun i (rename rho a) (rename rho e)       Set{}                 -> e       Prop{}                -> e@@ -314,9 +315,6 @@       case e of         DomainFree{} -> e         DomainFull tb -> DomainFull (rename rho tb)--instance Rename TypedBindings where-  rename rho (TypedBindings r tb) = TypedBindings r (rename rho tb)  instance Rename TypedBinding where   rename rho (TBind r ns e) = TBind r ns (rename rho e)
src/full/Agda/Syntax/Abstract/Name.hs view
@@ -15,18 +15,20 @@  import Control.DeepSeq -import Data.Foldable (Foldable, toList)+import Data.Foldable (Foldable) import Data.Traversable (Traversable) import Data.Data (Data) import Data.List import Data.Function import Data.Hashable (Hashable(..))+import Data.Set (Set)+import qualified Data.Set as Set import Data.Void  import Agda.Syntax.Position import Agda.Syntax.Common import {-# SOURCE #-} Agda.Syntax.Fixity-import Agda.Syntax.Concrete.Name (IsNoName(..), NumHoles(..))+import Agda.Syntax.Concrete.Name (IsNoName(..), NumHoles(..), NameInScope(..), LensInScope(..)) import qualified Agda.Syntax.Concrete.Name as C  import Agda.Utils.List@@ -35,7 +37,6 @@ import Agda.Utils.NonemptyList import Agda.Utils.Pretty import Agda.Utils.Size-import Agda.Utils.Suffix  #include "undefined.h" import Agda.Utils.Impossible@@ -47,9 +48,14 @@                  , nameConcrete    :: C.Name                  , nameBindingSite :: Range                  , nameFixity      :: Fixity'+                 , nameIsRecordName :: Bool                  }     deriving Data +-- | Useful for debugging scoping problems+uglyShowName :: Name -> String+uglyShowName (Name i c _ _ _) = show (i,c)+ -- | Qualified names are non-empty lists of names. Equality on qualified names --   are just equality on the last name, i.e. the module part is just --   for show.@@ -104,7 +110,10 @@   isProjP :: a -> Maybe (ProjOrigin, AmbiguousQName)  instance IsProjP a => IsProjP (Arg a) where-  isProjP = isProjP . unArg+  isProjP p = case isProjP $ unArg p of+    Just (ProjPostfix , f)+     | getHiding p /= NotHidden -> Nothing+    x -> x  instance IsProjP a => IsProjP (Named n a) where   isProjP = isProjP . namedThing@@ -166,7 +175,7 @@   mkName_ = mkName noRange  instance MkName String where-  mkName r i s = Name i (C.Name noRange (C.stringNameParts s)) r noFixity'+  mkName r i s = Name i (C.Name noRange InScope (C.stringNameParts s)) r noFixity' False   qnameToList :: QName -> [Name]@@ -240,17 +249,11 @@ -- | Get the next version of the concrete name. For instance, @nextName "x" = "x₁"@. --   The name must not be a 'NoName'. nextName :: Name -> Name-nextName x = x { nameConcrete = C.Name noRange $ nextSuf ps }-    where-        C.Name _ ps = nameConcrete x-        -- NoName cannot appear here-        nextSuf [C.Id s]         = [C.Id $ nextStr s]-        nextSuf [C.Id s, C.Hole] = [C.Id $ nextStr s, C.Hole]-        nextSuf (p : ps)         = p : nextSuf ps-        nextSuf []               = __IMPOSSIBLE__-        nextStr s = case suffixView s of-            (s0, suf) -> addSuffix s0 (nextSuffix suf)+nextName x = x { nameConcrete = C.nextName (nameConcrete x) } +sameRoot :: Name -> Name -> Bool+sameRoot = C.sameRoot `on` nameConcrete+ ------------------------------------------------------------------------ -- * Important instances: Eq, Ord, Hashable --@@ -296,6 +299,18 @@   numHoles = numHoles . headAmbQ  ------------------------------------------------------------------------+-- * LensInScope instances+------------------------------------------------------------------------++instance LensInScope Name where+  lensInScope f n@Name{ nameConcrete = x } =+    (\y -> n { nameConcrete = y }) <$> lensInScope f x++instance LensInScope QName where+  lensInScope f q@QName{ qnameName = n } =+    (\n' -> q { qnameName = n' }) <$> lensInScope f n++------------------------------------------------------------------------ -- * Show instances (only for debug printing!) -- -- | Use 'prettyShow' to print names to the user.@@ -334,16 +349,16 @@   pretty = pretty . nameConcrete  instance Pretty ModuleName where-  pretty = hcat . punctuate (text ".") . map pretty . mnameToList+  pretty = hcat . punctuate "." . map pretty . mnameToList  instance Pretty QName where-  pretty = hcat . punctuate (text ".") . map pretty . qnameToList+  pretty = hcat . punctuate "." . map pretty . qnameToList  instance Pretty AmbiguousQName where-  pretty (AmbQ qs) = hcat $ punctuate (text " | ") $ map pretty (toList qs)+  pretty (AmbQ qs) = hcat $ punctuate " | " $ map pretty (toList qs)  instance Pretty a => Pretty (QNamed a) where-  pretty (QNamed a b) = pretty a <> text "." <> pretty b+  pretty (QNamed a b) = pretty a <> "." <> pretty b  ------------------------------------------------------------------------ -- * Range instances@@ -387,8 +402,8 @@ -- ** KillRange  instance KillRange Name where-  killRange (Name a b c d) =-    (killRange4 Name a b c d) { nameBindingSite = c }+  killRange (Name a b c d e) =+    (killRange4 Name a b c d e) { nameBindingSite = c }     -- Andreas, 2017-07-25, issue #2649     -- Preserve the nameBindingSite for error message.     --@@ -431,7 +446,7 @@ -- | The range is not forced.  instance NFData Name where-  rnf (Name _ a _ b) = rnf a `seq` rnf b+  rnf (Name _ a _ b c) = rnf a `seq` rnf b `seq` rnf c  instance NFData QName where   rnf (QName a b) = rnf a `seq` rnf b
src/full/Agda/Syntax/Abstract/Pattern.hs view
@@ -57,6 +57,7 @@       VarP{}    -> f p       WildP{}   -> f p       DotP{}    -> f p+      EqualP{}  -> f p       LitP{}    -> f p       AbsurdP{} -> f p       ProjP{}   -> f p@@ -152,6 +153,7 @@       DotP _ _           -> mempty       AbsurdP _          -> mempty       LitP _             -> mempty+      EqualP _ _         -> mempty    traverseAPatternM pre post = pre >=> recurse >=> post     where@@ -163,6 +165,7 @@       A.LitP{}             -> return p       A.AbsurdP{}          -> return p       A.ProjP{}            -> return p+      A.EqualP{}           -> return p       -- Recursive cases:       A.ConP        i ds ps -> A.ConP        i ds <$> traverseAPatternM pre post ps       A.DefP        i q  ps -> A.DefP        i q  <$> traverseAPatternM pre post ps@@ -211,6 +214,7 @@     A.WildP       {} -> mempty     A.DotP        {} -> mempty     A.AbsurdP     {} -> mempty+    A.EqualP      {} -> mempty     A.PatternSynP {} -> mempty     A.WithP _ _      -> mempty @@ -267,8 +271,9 @@   -> Pattern' e            -- ^ Input pattern.   -> Pattern' e substPattern' subE s = mapAPattern $ \ p -> case p of-  VarP (BindName x) -> fromMaybe p $ lookup x s+  VarP x            -> fromMaybe p $ lookup (A.unBind x) s   DotP i e          -> DotP i $ subE e+  EqualP i es       -> EqualP i $ map (subE *** subE) es   -- No action on the other patterns (besides the recursion):   ConP _ _ _        -> p   RecP _ _          -> p@@ -293,9 +298,7 @@  -- | Split patterns into (patterns, trailing with-patterns). splitOffTrailingWithPatterns :: A.Patterns -> (A.Patterns, A.Patterns)-splitOffTrailingWithPatterns ps = (reverse rps, reverse rwps)-  where-  (rwps, rps) = span (isJust . isWithP) $ reverse ps+splitOffTrailingWithPatterns = spanEnd (isJust . isWithP)  -- | Get the tail of with-patterns of a pattern spine. trailingWithPatterns :: Patterns -> Patterns
src/full/Agda/Syntax/Abstract/Views.hs view
@@ -41,6 +41,7 @@     App i e1 e2       | Dot _ e2' <- unScope $ namedArg e2       , Just f <- maybeProjTurnPostfix e2'+      , getHiding e2 == NotHidden -- Jesper, 2018-12-13: postfix projections shouldn't be hidden                    -> Application f [defaultNamedArg (i, e1)]     App i e1 arg       | Application hd es <- appView' e1@@ -101,7 +102,7 @@ deepUnscopeDecl (A.ScopedDecl _ ds)              = deepUnscopeDecls ds deepUnscopeDecl (A.Mutual i ds)                  = [A.Mutual i (deepUnscopeDecls ds)] deepUnscopeDecl (A.Section i m tel ds)           = [A.Section i m (deepUnscope tel) (deepUnscopeDecls ds)]-deepUnscopeDecl (A.RecDef i x ind eta c bs e ds) = [A.RecDef i x ind eta c (deepUnscope bs) (deepUnscope e)+deepUnscopeDecl (A.RecDef i x uc ind eta c bs e ds) = [A.RecDef i x uc ind eta c (deepUnscope bs) (deepUnscope e)                                                                            (deepUnscopeDecls ds)] deepUnscopeDecl d                                = [deepUnscope d] @@ -143,6 +144,7 @@       AbsurdLam{}             -> pure e0       ExtendedLam ei di x cls -> ExtendedLam ei di x <$> recurse cls       Pi ei tel e             -> Pi ei <$> recurse tel <*> recurse e+      Generalized  s e        -> Generalized s <$> recurse e       Fun ei arg e            -> Fun ei <$> recurse arg <*> recurse e       Set{}                   -> pure e0       Prop{}                  -> pure e0@@ -179,6 +181,7 @@       AbsurdLam{}          -> m       ExtendedLam _ _ _ cs -> m `mappend` fold cs       Pi _ tel e           -> m `mappend` fold tel `mappend` fold e+      Generalized _ e      -> m `mappend` fold e       Fun _ e e'           -> m `mappend` fold e `mappend` fold e'       Set{}                -> m       Prop{}               -> m@@ -215,6 +218,7 @@       AbsurdLam{}             -> f e       ExtendedLam ei di x cls -> f =<< ExtendedLam ei di x <$> trav cls       Pi ei tel e             -> f =<< Pi ei <$> trav tel <*> trav e+      Generalized s e         -> f =<< Generalized s <$> trav e       Fun ei arg e            -> f =<< Fun ei <$> trav arg <*> trav e       Set{}                   -> f e       Prop{}                  -> f e@@ -270,11 +274,16 @@       DomainFree{}  -> pure e       DomainFull bs -> DomainFull <$> traverseExpr f bs -instance ExprLike TypedBindings where-  recurseExpr  f (TypedBindings r b) = TypedBindings r <$> recurseExpr f b-  foldExpr     f (TypedBindings r b) = foldExpr f b-  traverseExpr f (TypedBindings r b) = TypedBindings r <$> traverseExpr f b+instance ExprLike GeneralizeTelescope where+  recurseExpr  f (GeneralizeTel s tel) = GeneralizeTel s <$> recurseExpr f tel+  foldExpr     f (GeneralizeTel s tel) = foldExpr f tel+  traverseExpr f (GeneralizeTel s tel) = GeneralizeTel s <$> traverseExpr f tel +instance ExprLike DataDefParams where+  recurseExpr  f (DataDefParams s tel) = DataDefParams s <$> recurseExpr f tel+  foldExpr     f (DataDefParams s tel) = foldExpr f tel+  traverseExpr f (DataDefParams s tel) = DataDefParams s <$> traverseExpr f tel+ instance ExprLike TypedBinding where   recurseExpr f e =     case e of@@ -339,7 +348,7 @@   recurseExpr f a =     case a of       SectionApp tel m es -> SectionApp <$> rec tel <*> rec m <*> rec es-      RecordModuleIFS{}   -> pure a+      RecordModuleInstance{} -> pure a     where rec e = recurseExpr f e  instance ExprLike Pragma where@@ -350,13 +359,6 @@       BuiltinNoDefPragma{}        -> pure p       RewritePragma{}             -> pure p       CompilePragma{}             -> pure p-      CompiledPragma{}            -> pure p-      CompiledExportPragma{}      -> pure p-      CompiledTypePragma{}        -> pure p-      CompiledDataPragma{}        -> pure p-      CompiledJSPragma{}          -> pure p-      CompiledUHCPragma{}         -> pure p-      CompiledDataUHCPragma{}     -> pure p       StaticPragma{}              -> pure p       InjectivePragma{}           -> pure p       InlinePragma{}              -> pure p@@ -376,6 +378,7 @@   recurseExpr f d =     case d of       Axiom a d i mp x e        -> Axiom a d i mp x <$> rec e+      Generalize s i j x e      -> Generalize s i j x <$> rec e       Field i x e               -> Field i x <$> rec e       Primitive i x e           -> Primitive i x <$> rec e       Mutual i ds               -> Mutual i <$> rec ds@@ -386,9 +389,9 @@       Open{}                    -> pure d       FunDef i f d cs           -> FunDef i f d <$> rec cs       DataSig i d tel e         -> DataSig i d <$> rec tel <*> rec e-      DataDef i d bs cs         -> DataDef i d <$> rec bs <*> rec cs+      DataDef i d uc bs cs      -> DataDef i d uc <$> rec bs <*> rec cs       RecSig i r tel e          -> RecSig i r <$> rec tel <*> rec e-      RecDef i r n co c bs e ds -> RecDef i r n co c <$> rec bs <*> rec e <*> rec ds+      RecDef i r uc n co c bs e ds -> RecDef i r uc n co c <$> rec bs <*> rec e <*> rec ds       PatternSynDef f xs p      -> PatternSynDef f xs <$> rec p       UnquoteDecl i is xs e     -> UnquoteDecl i is xs <$> rec e       UnquoteDef i xs e         -> UnquoteDef i xs <$> rec e
+ src/full/Agda/Syntax/Builtin.hs view
@@ -0,0 +1,276 @@+-- | This module defines the names of all BUILTINs.+module Agda.Syntax.Builtin where++builtinNat, builtinSuc, builtinZero, builtinNatPlus, builtinNatMinus,+  builtinNatTimes, builtinNatDivSucAux, builtinNatModSucAux, builtinNatEquals,+  builtinNatLess, builtinInteger, builtinIntegerPos, builtinIntegerNegSuc,+  builtinWord64,+  builtinFloat, builtinChar, builtinString, builtinUnit, builtinUnitUnit,+  builtinSigma,+  builtinBool, builtinTrue, builtinFalse,+  builtinList, builtinNil, builtinCons, builtinIO,+  builtinPath, builtinPathP, builtinInterval, builtinIZero, builtinIOne, builtinPartial, builtinPartialP,+  builtinIMin, builtinIMax, builtinINeg,+  builtinIsOne,  builtinItIsOne, builtinIsOne1, builtinIsOne2, builtinIsOneEmpty,+  builtinComp, builtinPOr,+  builtinTrans, builtinHComp,+  builtinSub, builtinSubIn, builtinSubOut,+  builtinEquiv, builtinEquivFun, builtinEquivProof, builtinPathToEquiv,+  builtinGlue, builtin_glue, builtin_unglue,+  builtinFaceForall,+  builtinId, builtinConId, builtinIdElim,+  builtinSizeUniv, builtinSize, builtinSizeLt,+  builtinSizeSuc, builtinSizeInf, builtinSizeMax,+  builtinInf, builtinSharp, builtinFlat,+  builtinEquality, builtinRefl, builtinRewrite, builtinLevelMax,+  builtinLevel, builtinLevelZero, builtinLevelSuc,+  builtinSetOmega,+  builtinFromNat, builtinFromNeg, builtinFromString,+  builtinQName, builtinAgdaSort, builtinAgdaSortSet, builtinAgdaSortLit,+  builtinAgdaSortUnsupported,+  builtinHiding, builtinHidden, builtinInstance, builtinVisible,+  builtinRelevance, builtinRelevant, builtinIrrelevant, builtinArg,+  builtinAssoc, builtinAssocLeft, builtinAssocRight, builtinAssocNon,+  builtinPrecedence, builtinPrecRelated, builtinPrecUnrelated,+  builtinFixity, builtinFixityFixity,+  builtinArgInfo, builtinArgArgInfo, builtinArgArg,+  builtinAbs, builtinAbsAbs, builtinAgdaTerm,+  builtinAgdaTermVar, builtinAgdaTermLam, builtinAgdaTermExtLam,+  builtinAgdaTermDef, builtinAgdaTermCon, builtinAgdaTermPi,+  builtinAgdaTermSort, builtinAgdaTermLit, builtinAgdaTermUnsupported, builtinAgdaTermMeta,+  builtinAgdaErrorPart, builtinAgdaErrorPartString, builtinAgdaErrorPartTerm, builtinAgdaErrorPartName,+  builtinAgdaLiteral, builtinAgdaLitNat, builtinAgdaLitWord64, builtinAgdaLitFloat,+  builtinAgdaLitChar, builtinAgdaLitString, builtinAgdaLitQName, builtinAgdaLitMeta,+  builtinAgdaClause, builtinAgdaClauseClause, builtinAgdaClauseAbsurd, builtinAgdaPattern,+  builtinAgdaPatVar, builtinAgdaPatCon, builtinAgdaPatDot, builtinAgdaPatLit,+  builtinAgdaPatProj, builtinAgdaPatAbsurd,+  builtinAgdaDefinitionFunDef,+  builtinAgdaDefinitionDataDef, builtinAgdaDefinitionRecordDef,+  builtinAgdaDefinitionDataConstructor, builtinAgdaDefinitionPostulate,+  builtinAgdaDefinitionPrimitive, builtinAgdaDefinition,+  builtinAgdaMeta,+  builtinAgdaTCM, builtinAgdaTCMReturn, builtinAgdaTCMBind, builtinAgdaTCMUnify,+  builtinAgdaTCMTypeError, builtinAgdaTCMInferType,+  builtinAgdaTCMCheckType, builtinAgdaTCMNormalise, builtinAgdaTCMReduce,+  builtinAgdaTCMCatchError,+  builtinAgdaTCMGetContext, builtinAgdaTCMExtendContext, builtinAgdaTCMInContext,+  builtinAgdaTCMFreshName, builtinAgdaTCMDeclareDef, builtinAgdaTCMDeclarePostulate, builtinAgdaTCMDefineFun,+  builtinAgdaTCMGetType, builtinAgdaTCMGetDefinition,+  builtinAgdaTCMQuoteTerm, builtinAgdaTCMUnquoteTerm,+  builtinAgdaTCMBlockOnMeta, builtinAgdaTCMCommit, builtinAgdaTCMIsMacro,+  builtinAgdaTCMWithNormalisation, builtinAgdaTCMDebugPrint,+  builtinAgdaTCMNoConstraints,+  builtinAgdaTCMRunSpeculative+  :: String++builtinNat                           = "NATURAL"+builtinSuc                           = "SUC"+builtinZero                          = "ZERO"+builtinNatPlus                       = "NATPLUS"+builtinNatMinus                      = "NATMINUS"+builtinNatTimes                      = "NATTIMES"+builtinNatDivSucAux                  = "NATDIVSUCAUX"+builtinNatModSucAux                  = "NATMODSUCAUX"+builtinNatEquals                     = "NATEQUALS"+builtinNatLess                       = "NATLESS"+builtinWord64                        = "WORD64"+builtinInteger                       = "INTEGER"+builtinIntegerPos                    = "INTEGERPOS"+builtinIntegerNegSuc                 = "INTEGERNEGSUC"+builtinFloat                         = "FLOAT"+builtinChar                          = "CHAR"+builtinString                        = "STRING"+builtinUnit                          = "UNIT"+builtinUnitUnit                      = "UNITUNIT"+builtinSigma                         = "SIGMA"+builtinBool                          = "BOOL"+builtinTrue                          = "TRUE"+builtinFalse                         = "FALSE"+builtinList                          = "LIST"+builtinNil                           = "NIL"+builtinCons                          = "CONS"+builtinIO                            = "IO"+builtinId                            = "ID"+builtinConId                         = "CONID"+builtinIdElim                        = "primIdElim"+builtinPath                          = "PATH"+builtinPathP                         = "PATHP"+builtinInterval                      = "INTERVAL"+builtinIMin                          = "primIMin"+builtinIMax                          = "primIMax"+builtinINeg                          = "primINeg"+builtinIZero                         = "IZERO"+builtinIOne                          = "IONE"+builtinPartial                       = "PARTIAL"+builtinPartialP                      = "PARTIALP"+builtinIsOne                         = "ISONE"+builtinItIsOne                       = "ITISONE"+builtinEquiv                         = "EQUIV"+builtinEquivFun                      = "EQUIVFUN"+builtinEquivProof                    = "EQUIVPROOF"+builtinPathToEquiv                   = "PATHTOEQUIV"+builtinGlue                          = "primGlue"+builtin_glue                         = "prim^glue"+builtin_unglue                       = "prim^unglue"+builtinFaceForall                    = "primFaceForall"+builtinIsOne1                        = "ISONE1"+builtinIsOne2                        = "ISONE2"+builtinIsOneEmpty                    = "ISONEEMPTY"+builtinComp                          = "primComp"+builtinPOr                           = "primPOr"+builtinTrans                         = "primTransp"+builtinHComp                         = "primHComp"+builtinSub                           = "SUB"+builtinSubIn                         = "SUBIN"+builtinSubOut                        = "primSubOut"+builtinSizeUniv                      = "SIZEUNIV"+builtinSize                          = "SIZE"+builtinSizeLt                        = "SIZELT"+builtinSizeSuc                       = "SIZESUC"+builtinSizeInf                       = "SIZEINF"+builtinSizeMax                       = "SIZEMAX"+builtinInf                           = "INFINITY"+builtinSharp                         = "SHARP"+builtinFlat                          = "FLAT"+builtinEquality                      = "EQUALITY"+builtinRefl                          = "REFL"+builtinRewrite                       = "REWRITE"+builtinLevelMax                      = "LEVELMAX"+builtinLevel                         = "LEVEL"+builtinLevelZero                     = "LEVELZERO"+builtinLevelSuc                      = "LEVELSUC"+builtinSetOmega                      = "SETOMEGA"+builtinFromNat                       = "FROMNAT"+builtinFromNeg                       = "FROMNEG"+builtinFromString                    = "FROMSTRING"+builtinQName                         = "QNAME"+builtinAgdaSort                      = "AGDASORT"+builtinAgdaSortSet                   = "AGDASORTSET"+builtinAgdaSortLit                   = "AGDASORTLIT"+builtinAgdaSortUnsupported           = "AGDASORTUNSUPPORTED"+builtinHiding                        = "HIDING"+builtinHidden                        = "HIDDEN"+builtinInstance                      = "INSTANCE"+builtinVisible                       = "VISIBLE"+builtinRelevance                     = "RELEVANCE"+builtinRelevant                      = "RELEVANT"+builtinIrrelevant                    = "IRRELEVANT"+builtinAssoc                         = "ASSOC"+builtinAssocLeft                     = "ASSOCLEFT"+builtinAssocRight                    = "ASSOCRIGHT"+builtinAssocNon                      = "ASSOCNON"+builtinPrecedence                    = "PRECEDENCE"+builtinPrecRelated                   = "PRECRELATED"+builtinPrecUnrelated                 = "PRECUNRELATED"+builtinFixity                        = "FIXITY"+builtinFixityFixity                  = "FIXITYFIXITY"+builtinArg                           = "ARG"+builtinArgInfo                       = "ARGINFO"+builtinArgArgInfo                    = "ARGARGINFO"+builtinArgArg                        = "ARGARG"+builtinAbs                           = "ABS"+builtinAbsAbs                        = "ABSABS"+builtinAgdaTerm                      = "AGDATERM"+builtinAgdaTermVar                   = "AGDATERMVAR"+builtinAgdaTermLam                   = "AGDATERMLAM"+builtinAgdaTermExtLam                = "AGDATERMEXTLAM"+builtinAgdaTermDef                   = "AGDATERMDEF"+builtinAgdaTermCon                   = "AGDATERMCON"+builtinAgdaTermPi                    = "AGDATERMPI"+builtinAgdaTermSort                  = "AGDATERMSORT"+builtinAgdaTermLit                   = "AGDATERMLIT"+builtinAgdaTermUnsupported           = "AGDATERMUNSUPPORTED"+builtinAgdaTermMeta                  = "AGDATERMMETA"+builtinAgdaErrorPart                 = "AGDAERRORPART"+builtinAgdaErrorPartString           = "AGDAERRORPARTSTRING"+builtinAgdaErrorPartTerm             = "AGDAERRORPARTTERM"+builtinAgdaErrorPartName             = "AGDAERRORPARTNAME"+builtinAgdaLiteral                   = "AGDALITERAL"+builtinAgdaLitNat                    = "AGDALITNAT"+builtinAgdaLitWord64                 = "AGDALITWORD64"+builtinAgdaLitFloat                  = "AGDALITFLOAT"+builtinAgdaLitChar                   = "AGDALITCHAR"+builtinAgdaLitString                 = "AGDALITSTRING"+builtinAgdaLitQName                  = "AGDALITQNAME"+builtinAgdaLitMeta                   = "AGDALITMETA"+builtinAgdaClause                    = "AGDACLAUSE"+builtinAgdaClauseClause              = "AGDACLAUSECLAUSE"+builtinAgdaClauseAbsurd              = "AGDACLAUSEABSURD"+builtinAgdaPattern                   = "AGDAPATTERN"+builtinAgdaPatVar                    = "AGDAPATVAR"+builtinAgdaPatCon                    = "AGDAPATCON"+builtinAgdaPatDot                    = "AGDAPATDOT"+builtinAgdaPatLit                    = "AGDAPATLIT"+builtinAgdaPatProj                   = "AGDAPATPROJ"+builtinAgdaPatAbsurd                 = "AGDAPATABSURD"+builtinAgdaDefinitionFunDef          = "AGDADEFINITIONFUNDEF"+builtinAgdaDefinitionDataDef         = "AGDADEFINITIONDATADEF"+builtinAgdaDefinitionRecordDef       = "AGDADEFINITIONRECORDDEF"+builtinAgdaDefinitionDataConstructor = "AGDADEFINITIONDATACONSTRUCTOR"+builtinAgdaDefinitionPostulate       = "AGDADEFINITIONPOSTULATE"+builtinAgdaDefinitionPrimitive       = "AGDADEFINITIONPRIMITIVE"+builtinAgdaDefinition                = "AGDADEFINITION"+builtinAgdaMeta                      = "AGDAMETA"+builtinAgdaTCM           = "AGDATCM"+builtinAgdaTCMReturn     = "AGDATCMRETURN"+builtinAgdaTCMBind       = "AGDATCMBIND"+builtinAgdaTCMUnify      = "AGDATCMUNIFY"+builtinAgdaTCMTypeError  = "AGDATCMTYPEERROR"+builtinAgdaTCMInferType  = "AGDATCMINFERTYPE"+builtinAgdaTCMCheckType  = "AGDATCMCHECKTYPE"+builtinAgdaTCMNormalise  = "AGDATCMNORMALISE"+builtinAgdaTCMReduce     = "AGDATCMREDUCE"+builtinAgdaTCMCatchError = "AGDATCMCATCHERROR"+builtinAgdaTCMGetContext = "AGDATCMGETCONTEXT"+builtinAgdaTCMExtendContext = "AGDATCMEXTENDCONTEXT"+builtinAgdaTCMInContext     = "AGDATCMINCONTEXT"+builtinAgdaTCMFreshName     = "AGDATCMFRESHNAME"+builtinAgdaTCMDeclareDef    = "AGDATCMDECLAREDEF"+builtinAgdaTCMDeclarePostulate    = "AGDATCMDECLAREPOSTULATE"+builtinAgdaTCMDefineFun     = "AGDATCMDEFINEFUN"+builtinAgdaTCMGetType       = "AGDATCMGETTYPE"+builtinAgdaTCMGetDefinition = "AGDATCMGETDEFINITION"+builtinAgdaTCMBlockOnMeta   = "AGDATCMBLOCKONMETA"+builtinAgdaTCMCommit        = "AGDATCMCOMMIT"+builtinAgdaTCMQuoteTerm     = "AGDATCMQUOTETERM"+builtinAgdaTCMUnquoteTerm   = "AGDATCMUNQUOTETERM"+builtinAgdaTCMIsMacro       = "AGDATCMISMACRO"+builtinAgdaTCMWithNormalisation = "AGDATCMWITHNORMALISATION"+builtinAgdaTCMDebugPrint = "AGDATCMDEBUGPRINT"+builtinAgdaTCMNoConstraints = "AGDATCMNOCONSTRAINTS"+builtinAgdaTCMRunSpeculative = "AGDATCMRUNSPECULATIVE"++-- | Builtins that come without a definition in Agda syntax.+--   These are giving names to Agda internal concepts which+--   cannot be assigned an Agda type.+--+--   An example would be a user-defined name for @Set@.+--+--     {-# BUILTIN TYPE Type #-}+--+--   The type of @Type@ would be @Type : Level → Setω@+--   which is not valid Agda.++builtinsNoDef :: [String]+builtinsNoDef =+  sizeBuiltins +++  [ builtinConId+  , builtinInterval+  , builtinPartial+  , builtinPartialP+  , builtinIsOne+  , builtinSub+  , builtinIZero+  , builtinIOne+  , builtinSetOmega+  ]++sizeBuiltins :: [String]+sizeBuiltins =+  [ builtinSizeUniv+  , builtinSize+  , builtinSizeLt+  , builtinSizeSuc+  , builtinSizeInf+  , builtinSizeMax+  ]
src/full/Agda/Syntax/Common.hs view
@@ -2,6 +2,7 @@ {-# LANGUAGE DeriveDataTypeable         #-} {-# LANGUAGE DeriveGeneric              #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE UndecidableInstances       #-} -- for: LensNamed name (Arg a)  {-| Some common syntactic entities are defined in this module. -}@@ -46,6 +47,21 @@   killRange = id  ---------------------------------------------------------------------------+-- * File+---------------------------------------------------------------------------++data FileType = AgdaFileType | MdFileType | RstFileType | TexFileType | OrgFileType+  deriving (Data, Eq, Ord, Show)++instance Pretty FileType where+  pretty = \case+    AgdaFileType -> "Agda"+    MdFileType   -> "Markdown"+    RstFileType  -> "ReStructedText"+    TexFileType  -> "LaTeX"+    OrgFileType  -> "org-mode"++--------------------------------------------------------------------------- -- * Eta-equality --------------------------------------------------------------------------- @@ -67,11 +83,11 @@ ---------------------------------------------------------------------------  data Induction = Inductive | CoInductive-  deriving (Data, Eq, Ord)+  deriving (Data, Eq, Ord, Show) -instance Show Induction where-  show Inductive   = "inductive"-  show CoInductive = "coinductive"+instance Pretty Induction where+  pretty Inductive   = "inductive"+  pretty CoInductive = "coinductive"  instance HasRange Induction where   getRange _ = noRange@@ -93,6 +109,12 @@ data Hiding  = Hidden | Instance Overlappable | NotHidden   deriving (Data, Show, Eq, Ord) +instance Pretty Hiding where+  pretty = \case+    Hidden     -> "hidden"+    NotHidden  -> "visible"+    Instance{} -> "instance"+ -- | Just for the 'Hiding' instance. Should never combine different --   overlapping. instance Semigroup Overlappable where@@ -241,6 +263,7 @@   , modQuantity  :: Quantity       -- ^ Cardinality / runtime erasure.       --   See Conor McBride, I got plenty o' nutting, Wadlerfest 2016.+      --   See Bob Atkey, Syntax and Semantics of Quantitative Type Theory, LiCS 2018.   } deriving (Data, Eq, Ord, Show, Generic)  defaultModality :: Modality@@ -262,6 +285,44 @@ instance POSemigroup Modality where instance POMonoid Modality where +instance LeftClosedPOMonoid Modality where+  inverseCompose = inverseComposeModality++-- | @m `moreUsableModality` m'@ means that an @m@ can be used+--   where ever an @m'@ is required.++moreUsableModality :: Modality -> Modality -> Bool+moreUsableModality m m' = related m POLE m'++usableModality :: LensModality a => a -> Bool+usableModality a = usableRelevance m && usableQuantity m+  where m = getModality a++composeModality :: Modality -> Modality -> Modality+composeModality = (<>)++-- | Compose with modality flag from the left.+--   This function is e.g. used to update the modality information+--   on pattern variables @a@ after a match against something of modality @q@.+applyModality :: LensModality a => Modality -> a -> a+applyModality m = mapModality (m `composeModality`)++-- | @inverseComposeModality r x@ returns the least modality @y@+--   such that forall @x@, @y@ we have+--   @x \`moreUsableModality\` (r \`composeModality\` y)@+--   iff+--   @(r \`inverseComposeModality\` x) \`moreUsableModality\` y@ (Galois connection).+inverseComposeModality :: Modality -> Modality -> Modality+inverseComposeModality (Modality r q) (Modality r' q') =+  Modality (r `inverseComposeRelevance` r')+           (q `inverseComposeQuantity`  q')++-- | Left division by a 'Modality'.+--   Used e.g. to modify context when going into a @m@ argument.+inverseApplyModality :: LensModality a => Modality -> a -> a+inverseApplyModality m = mapModality (m `inverseComposeModality`)++ -- boilerplate instances  instance KillRange Modality where@@ -269,6 +330,14 @@  instance NFData Modality where +-- Lens stuff++lModRelevance :: Lens' Relevance Modality+lModRelevance f m = f (modRelevance m) <&> \ r -> m { modRelevance = r }++lModQuantity :: Lens' Quantity Modality+lModQuantity f m = f (modQuantity m) <&> \ q -> m { modQuantity = q }+ class LensModality a where    getModality :: a -> Modality@@ -321,12 +390,18 @@ ---------------------------------------------------------------------------  -- | Quantity for linearity.+--+--   A quantity is a set of natural numbers, indicating possible semantic+--   uses of a variable.  A singleton set @{n}@ requires that the+--   corresponding variable is used exactly @n@ times.+-- data Quantity-  = Quantity0  -- ^ Zero uses, erased at runtime.-  -- TODO: | Quantity1  -- ^ Linear use (could be updated destructively).-  -- (needs postponable constraints between quantities to compute uses).-  | Quantityω  -- ^ Unrestricted use.-  deriving (Data, Show, Generic, Eq, Enum, Bounded)+  = Quantity0  -- ^ Zero uses @{0}@, erased at runtime.+  | Quantity1  -- ^ Linear use @{1}@ (could be updated destructively).+    -- Mostly TODO (needs postponable constraints between quantities to compute uses).+  | Quantityω  -- ^ Unrestricted use @ℕ@.+  deriving (Data, Show, Generic, Eq, Enum, Bounded, Ord)+    -- @Ord@ instance in case @Quantity@ is used in keys for maps etc.  defaultQuantity :: Quantity defaultQuantity = Quantityω@@ -334,31 +409,77 @@ -- | Composition of quantities (multiplication). -- -- 'Quantity0' is dominant.+-- 'Quantity1' is neutral.+-- instance Semigroup Quantity where+  Quantity1 <> q = q+  q <> Quantity1 = q   Quantity0 <> _ = Quantity0   _ <> Quantity0 = Quantity0   Quantityω <> _ = Quantityω   -- _ <> Quantityω = Quantityω  -- redundant  -- | In the absense of finite quantities besides 0, ω is the unit.+--   Otherwise, 1 is the unit. instance Monoid Quantity where-  mempty = Quantityω+  mempty  = Quantity1   mappend = (<>) --- | Note that the order is @ω ≤ 0@, more relevant is smaller.-instance Ord Quantity where-  compare = curry $ \case-    (Quantityω, Quantityω) -> EQ-    (Quantityω, Quantity0) -> LT-    (Quantity0, Quantityω) -> GT-    (Quantity0, Quantity0) -> EQ-+-- | Note that the order is @ω ≤ 0,1@, more options is smaller. instance PartialOrd Quantity where-  comparable = comparableOrd+  comparable = curry $ \case+    (q, q') | q == q' -> POEQ+    -- ω is least+    (Quantityω, _)    -> POLT+    (_, Quantityω)    -> POGT+    -- others are uncomparable+    _ -> POAny  instance POSemigroup Quantity where instance POMonoid Quantity where +instance LeftClosedPOMonoid Quantity where+  inverseCompose = inverseComposeQuantity++-- | @m `moreUsableQuantity` m'@ means that an @m@ can be used+--   where ever an @m'@ is required.++moreQuantity :: Quantity -> Quantity -> Bool+moreQuantity m m' = related m POLE m'++-- | A thing of quantity 0 is unusable, all others are usable.++usableQuantity :: LensQuantity a => a -> Bool+usableQuantity a = getQuantity a /= Quantity0++composeQuantity :: Quantity -> Quantity -> Quantity+composeQuantity = (<>)++-- | Compose with quantity flag from the left.+--   This function is e.g. used to update the quantity information+--   on pattern variables @a@ after a match against something of quantity @q@.+applyQuantity :: LensQuantity a => Quantity -> a -> a+applyQuantity q = mapQuantity (q `composeQuantity`)++-- | @inverseComposeQuantity r x@ returns the least quantity @y@+--   such that forall @x@, @y@ we have+--   @x \`moreQuantity\` (r \`composeQuantity\` y)@+--   iff+--   @(r \`inverseComposeQuantity\` x) \`moreQuantity\` y@ (Galois connection).+inverseComposeQuantity :: Quantity -> Quantity -> Quantity+inverseComposeQuantity q x =+  case (q, x) of+    (Quantity1 , x)          -> x          -- going to linear arg: nothing changes+    (Quantity0 , x)          -> Quantityω  -- going to erased arg: every thing usable+    (Quantityω , Quantityω)  -> Quantityω+    (Quantityω , _)          -> Quantity0  -- linear resources are unusable as arguments to unrestricted functions++-- | Left division by a 'Quantity'.+--   Used e.g. to modify context when going into a @q@ argument.+inverseApplyQuantity :: LensQuantity a => Quantity -> a -> a+inverseApplyQuantity q = mapQuantity (q `inverseComposeQuantity`)++ -- boilerplate instances  class LensQuantity a where@@ -381,6 +502,7 @@  instance NFData Quantity where   rnf Quantity0 = ()+  rnf Quantity1 = ()   rnf Quantityω = ()  ---------------------------------------------------------------------------@@ -461,12 +583,12 @@ instance PartialOrd Relevance where   comparable = comparableOrd --- | @unusableRelevance rel == True@ iff we cannot use a variable of @rel@.-unusableRelevance :: LensRelevance a => a -> Bool-unusableRelevance a = case getRelevance a of-  Irrelevant -> True-  NonStrict  -> True-  Relevant   -> False+-- | @usableRelevance rel == False@ iff we cannot use a variable of @rel@.+usableRelevance :: LensRelevance a => a -> Bool+usableRelevance a = case getRelevance a of+  Irrelevant -> False+  NonStrict  -> False+  Relevant   -> True  -- | 'Relevance' composition. --   'Irrelevant' is dominant, 'Relevant' is neutral.@@ -479,6 +601,12 @@     (_, NonStrict)  -> NonStrict     (Relevant, Relevant) -> Relevant +-- | Compose with relevance flag from the left.+--   This function is e.g. used to update the relevance information+--   on pattern variables @a@ after a match against something @rel@.+applyRelevance :: LensRelevance a => Relevance -> a -> a+applyRelevance rel = mapRelevance (rel `composeRelevance`)+ -- | @inverseComposeRelevance r x@ returns the most irrelevant @y@ --   such that forall @x@, @y@ we have --   @x \`moreRelevant\` (r \`composeRelevance\` y)@@@ -487,12 +615,17 @@ inverseComposeRelevance :: Relevance -> Relevance -> Relevance inverseComposeRelevance r x =   case (r, x) of-    (Relevant, x)        -> x          -- going to relevant arg.: nothing changes-    _ | r == x           -> Relevant   -- because Relevant is comp.-neutral-    (Irrelevant, x)      -> Relevant   -- going irrelevant: every thing usable-    (_, Irrelevant)      -> Irrelevant -- otherwise: irrelevant things remain unusable-    (NonStrict, _)       -> Relevant   -- but @NonStrict@s become usable+    (Relevant  , x)          -> x          -- going to relevant arg.: nothing changes+                                           -- because Relevant is comp.-neutral+    (Irrelevant, x)          -> Relevant   -- going irrelevant: every thing usable+    (NonStrict , Irrelevant) -> Irrelevant -- otherwise: irrelevant things remain unusable+    (NonStrict , _)          -> Relevant   -- but @NonStrict@s become usable +-- | Left division by a 'Relevance'.+--   Used e.g. to modify context when going into a @rel@ argument.+inverseApplyRelevance :: LensRelevance a => Relevance -> a -> a+inverseApplyRelevance rel = mapRelevance (rel `inverseComposeRelevance`)+ -- | 'Relevance' forms a semigroup under composition. instance Semigroup Relevance where   (<>) = composeRelevance@@ -511,7 +644,6 @@ -- | Irrelevant function arguments may appear non-strictly in the codomain type. irrToNonStrict :: Relevance -> Relevance irrToNonStrict Irrelevant = NonStrict--- irrToNonStrict NonStrict  = Relevant -- TODO: this is bad if we apply irrToNonStrict several times! irrToNonStrict rel        = rel  -- | Applied when working on types (unless --experimental-irrelevance).@@ -533,6 +665,7 @@   | Inserted     -- ^ E.g. inserted hidden arguments.   | Reflected    -- ^ Produced by the reflection machinery.   | CaseSplit    -- ^ Produced by an interactive case split.+  | Substitution -- ^ Named application produced to represent a substitution. E.g. "?0 (x = n)" instead of "?0 n"   deriving (Data, Show, Eq, Ord)  instance KillRange Origin where@@ -543,6 +676,7 @@   rnf Inserted = ()   rnf Reflected = ()   rnf CaseSplit = ()+  rnf Substitution = ()  -- | Decorating something with 'Origin' information. data WithOrigin a = WithOrigin@@ -769,7 +903,7 @@ data Arg e  = Arg   { argInfo :: ArgInfo   , unArg :: e-  } deriving (Data, Ord, Functor, Foldable, Traversable)+  } deriving (Data, Ord, Show, Functor, Foldable, Traversable)  instance Decoration Arg where   traverseF f (Arg ai a) = Arg ai <$> f a@@ -794,29 +928,57 @@     -- and more generally not use it on Syntax.     -- Andrea: except for caching. -instance Show a => Show (Arg a) where-    show (Arg (ArgInfo h (Modality r q) o fv) a) = showFVs fv $ showQ q $ showR r $ showO o $ showH h $ show a-      where-        showH Hidden       s = "{" ++ s ++ "}"-        showH NotHidden    s = "(" ++ s ++ ")"-        showH (Instance o) s = showOv o ++ "{{" ++ s ++ "}}"-          where showOv YesOverlap = "overlap "-                showOv NoOverlap  = ""-        showR r s = case r of-          Irrelevant   -> "." ++ s-          NonStrict    -> "?" ++ s-          Relevant     -> "r" ++ s -- Andreas: I want to see it explicitly-        showQ q s = case q of-          Quantity0   -> "0" ++ s-          Quantityω   -> "ω" ++ s-        showO o s = case o of-          UserWritten -> "u" ++ s-          Inserted    -> "i" ++ s-          Reflected   -> "g" ++ s -- generated by reflection-          CaseSplit   -> "c" ++ s -- generated by case split-        showFVs UnknownFVs    s = s-        showFVs (KnownFVs fv) s = "fv" ++ show (IntSet.toList fv) ++ s+-- instance Show a => Show (Arg a) where+--     show (Arg (ArgInfo h (Modality r q) o fv) a) = showFVs fv $ showQ q $ showR r $ showO o $ showH h $ show a+--       where+--         showH Hidden       s = "{" ++ s ++ "}"+--         showH NotHidden    s = "(" ++ s ++ ")"+--         showH (Instance o) s = showOv o ++ "{{" ++ s ++ "}}"+--           where showOv YesOverlap = "overlap "+--                 showOv NoOverlap  = ""+--         showR r s = case r of+--           Irrelevant   -> "." ++ s+--           NonStrict    -> "?" ++ s+--           Relevant     -> "r" ++ s -- Andreas: I want to see it explicitly+--         showQ q s = case q of+--           Quantity0   -> "0" ++ s+--           Quantity1   -> "1" ++ s+--           Quantityω   -> "ω" ++ s+--         showO o s = case o of+--           UserWritten -> "u" ++ s+--           Inserted    -> "i" ++ s+--           Reflected   -> "g" ++ s -- generated by reflection+--           CaseSplit   -> "c" ++ s -- generated by case split+--           Substitution -> "s" ++ s+--         showFVs UnknownFVs    s = s+--         showFVs (KnownFVs fv) s = "fv" ++ show (IntSet.toList fv) ++ s +-- -- defined in Concrete.Pretty+-- instance Pretty a => Pretty (Arg a) where+--     pretty (Arg (ArgInfo h (Modality r q) o fv) a) = prettyFVs fv $ prettyQ q $ prettyR r $ prettyO o $ prettyH h $ pretty a+--       where+--         prettyH Hidden       s = "{" <> s <> "}"+--         prettyH NotHidden    s = "(" <> s <> ")"+--         prettyH (Instance o) s = prettyOv o <> "{{" <> s <> "}}"+--           where prettyOv YesOverlap = "overlap "+--                 prettyOv NoOverlap  = ""+--         prettyR r s = case r of+--           Irrelevant   -> "." <> s+--           NonStrict    -> "?" <> s+--           Relevant     -> "r" <> s -- Andreas: I want to see it explicitly+--         prettyQ q s = case q of+--           Quantity0   -> "0" <> s+--           Quantity1   -> "1" <> s+--           Quantityω   -> "ω" <> s+--         prettyO o s = case o of+--           UserWritten -> "u" <> s+--           Inserted    -> "i" <> s+--           Reflected   -> "g" <> s -- generated by reflection+--           CaseSplit   -> "c" <> s -- generated by case split+--           Substitution -> "s" <> s+--         prettyFVs UnknownFVs    s = s+--         prettyFVs (KnownFVs fv) s = "fv" <> pretty (IntSet.toList fv) <> s+ instance NFData e => NFData (Arg e) where   rnf (Arg a b) = rnf a `seq` rnf b @@ -905,27 +1067,34 @@ --   @Dom@ is used in 'Pi' of internal syntax, in 'Context' and 'Telescope'. --   'Arg' is used for actual arguments ('Var', 'Con', 'Def' etc.) --   and in 'Abstract' syntax and other situations.+--+--   [ cubical ] When @domFinite = True@ for the domain of a 'Pi'+--   type, the elements should be compared by tabulating the domain type.+--   Only supported in case the domain type is primIsOne, to obtain+--   the correct equality for partial elements. data Dom e = Dom   { domInfo   :: ArgInfo+  , domFinite :: !Bool+  , domName   :: Maybe RString   , unDom     :: e-  } deriving (Data, Ord, Functor, Foldable, Traversable)+  } deriving (Data, Ord, Show, Functor, Foldable, Traversable)  instance Decoration Dom where-  traverseF f (Dom ai a) = Dom ai <$> f a+  traverseF f (Dom ai b x a) = Dom ai b x <$> f a  instance HasRange a => HasRange (Dom a) where   getRange = getRange . unDom  instance KillRange a => KillRange (Dom a) where-  killRange (Dom info a) = killRange2 Dom info a+  killRange (Dom info b x a) = killRange4 Dom info b x a  -- | Ignores 'Origin' and 'FreeVariables'. instance Eq a => Eq (Dom a) where-  Dom (ArgInfo h1 m1 _ _) x1 == Dom (ArgInfo h2 m2 _ _) x2 =-    (h1, m1, x1) == (h2, m2, x2)+  Dom (ArgInfo h1 m1 _ _) b1 s1 x1 == Dom (ArgInfo h2 m2 _ _) b2 s2 x2 =+    (h1, m1, b1, s1, x1) == (h2, m2, b2, s2, x2) -instance Show a => Show (Dom a) where-  show = show . argFromDom+-- instance Show a => Show (Dom a) where+--   show = show . argFromDom  instance LensArgInfo (Dom e) where   getArgInfo        = domInfo@@ -967,14 +1136,26 @@   mapQuantity = mapQuantityMod  argFromDom :: Dom a -> Arg a-argFromDom (Dom i a) = Arg i a+argFromDom (Dom i _ _ a) = Arg i a +namedArgFromDom :: Dom a -> NamedArg a+namedArgFromDom (Dom i _ s a) = Arg i $ Named s a+ domFromArg :: Arg a -> Dom a-domFromArg (Arg i a) = Dom i a+domFromArg (Arg i a) = Dom i False Nothing a +domFromNamedArg :: NamedArg a -> Dom a+domFromNamedArg (Arg i a) = Dom i False (nameOf a) (namedThing a)+ defaultDom :: a -> Dom a-defaultDom = Dom defaultArgInfo+defaultDom = defaultArgDom defaultArgInfo +defaultArgDom :: ArgInfo -> a -> Dom a+defaultArgDom info x = Dom info False Nothing x++defaultNamedArgDom :: ArgInfo -> String -> a -> Dom a+defaultNamedArgDom info s = Dom info False (Just $ unranged s)+ --------------------------------------------------------------------------- -- * Named arguments ---------------------------------------------------------------------------@@ -984,7 +1165,7 @@     Named { nameOf     :: Maybe name           , namedThing :: a           }-    deriving (Eq, Ord, Data, Functor, Foldable, Traversable)+    deriving (Eq, Ord, Show, Data, Functor, Foldable, Traversable)  -- | Standard naming. type Named_ = Named RString@@ -995,6 +1176,30 @@ named :: name -> a -> Named name a named = Named . Just +-- | Accessor/editor for the 'nameOf' component.+class LensNamed name a | a -> name where+  lensNamed :: Lens' (Maybe name) a++instance LensNamed name (Named name a) where+  lensNamed f (Named mn a) = f mn <&> \ mn' -> Named mn' a++getNameOf :: LensNamed name a => a -> Maybe name+getNameOf a = a ^. lensNamed++setNameOf :: LensNamed name a => Maybe name -> a -> a+setNameOf = set lensNamed++mapNameOf :: LensNamed name a => (Maybe name -> Maybe name) -> a -> a+mapNameOf = over lensNamed++-- Lenses lift through decorations:+-- instance (Decoration f, LensNamed name a) => LensNamed name (f a) where++instance LensNamed name a => LensNamed name (Arg a) where+  lensNamed = traverseF . lensNamed++-- Standard instances for 'Named':+ instance Decoration (Named name) where   traverseF f (Named n a) = Named n <$> f a @@ -1007,10 +1212,15 @@ instance (KillRange name, KillRange a) => KillRange (Named name a) where   killRange (Named n a) = Named (killRange n) (killRange a) -instance Show a => Show (Named_ a) where-    show (Named Nothing a)  = show a-    show (Named (Just n) a) = rawNameToString (rangedThing n) ++ " = " ++ show a+-- instance Show a => Show (Named_ a) where+--     show (Named Nothing a)  = show a+--     show (Named (Just n) a) = rawNameToString (rangedThing n) ++ " = " ++ show a +-- -- Defined in Concrete.Pretty+-- instance Pretty a => Pretty (Named_ a) where+--     pretty (Named Nothing a)  = pretty a+--     pretty (Named (Just n) a) = text (rawNameToString (rangedThing n)) <+> "=" <+> pretty a+ instance (NFData name, NFData a) => NFData (Named name a) where   rnf (Named a b) = rnf a `seq` rnf b @@ -1022,8 +1232,11 @@ namedArg = namedThing . unArg  defaultNamedArg :: a -> NamedArg a-defaultNamedArg = defaultArg . unnamed+defaultNamedArg = unnamedArg defaultArgInfo +unnamedArg :: ArgInfo -> a -> NamedArg a+unnamedArg info = Arg info . unnamed+ -- | The functor instance for 'NamedArg' would be ambiguous, --   so we give it another name here. updateNamedArg :: (a -> b) -> NamedArg a -> NamedArg b@@ -1042,15 +1255,18 @@   { rangeOf     :: Range   , rangedThing :: a   }-  deriving (Data, Functor, Foldable, Traversable)+  deriving (Data, Show, Functor, Foldable, Traversable)  -- | Thing with no range info. unranged :: a -> Ranged a unranged = Ranged noRange -instance Show a => Show (Ranged a) where-  show = show . rangedThing+instance Pretty a => Pretty (Ranged a) where+  pretty = pretty . rangedThing +-- instance Show a => Show (Ranged a) where+--   show = show . rangedThing+ instance Eq a => Eq (Ranged a) where   Ranged _ x == Ranged _ y = x == y @@ -1192,13 +1408,13 @@ -- | The unique identifier of a name. Second argument is the top-level module --   identifier. data NameId = NameId {-# UNPACK #-} !Word64 {-# UNPACK #-} !Word64-    deriving (Eq, Ord, Data, Generic)+    deriving (Eq, Ord, Data, Generic, Show)  instance KillRange NameId where   killRange = id -instance Show NameId where-  show (NameId n m) = show n ++ "@" ++ show m+instance Pretty NameId where+  pretty (NameId n m) = text $ show n ++ "@" ++ show m  instance Enum NameId where   succ (NameId n m)     = NameId (n + 1) m@@ -1286,6 +1502,7 @@ newtype InteractionId = InteractionId { interactionId :: Nat }     deriving ( Eq              , Ord+             , Show              , Num              , Integral              , Real@@ -1293,8 +1510,8 @@              , Data              ) -instance Show InteractionId where-    show (InteractionId i) = "?" ++ show i+instance Pretty InteractionId where+    pretty (InteractionId i) = text $ "?" ++ show i  instance KillRange InteractionId where killRange = id @@ -1304,53 +1521,58 @@  -- | The things you are allowed to say when you shuffle names between name --   spaces (i.e. in @import@, @namespace@, or @open@ declarations).-data ImportDirective' a b = ImportDirective+data ImportDirective' n m = ImportDirective   { importDirRange :: Range-  , using          :: Using' a b-  , hiding         :: [ImportedName' a b]-  , impRenaming    :: [Renaming' a b]+  , using          :: Using' n m+  , hiding         :: [ImportedName' n m]+  , impRenaming    :: [Renaming' n m]   , publicOpen     :: Bool -- ^ Only for @open@. Exports the opened names from the current module.   }   deriving (Data, Eq) -data Using' a b = UseEverything | Using [ImportedName' a b]+data Using' n m = UseEverything | Using [ImportedName' n m]   deriving (Data, Eq) -instance Semigroup (Using' a b) where+instance Semigroup (Using' n m) where   UseEverything <> u             = u   u             <> UseEverything = u   Using xs      <> Using ys      = Using (xs ++ ys) -instance Monoid (Using' a b) where+instance Monoid (Using' n m) where   mempty  = UseEverything   mappend = (<>)  -- | Default is directive is @private@ (use everything, but do not export).-defaultImportDir :: ImportDirective' a b+defaultImportDir :: ImportDirective' n m defaultImportDir = ImportDirective noRange UseEverything [] [] False -isDefaultImportDir :: ImportDirective' a b -> Bool+isDefaultImportDir :: ImportDirective' n m -> Bool isDefaultImportDir (ImportDirective _ UseEverything [] [] False) = True isDefaultImportDir _                                             = False --- | An imported name can be a module or a defined name-data ImportedName' a b-  = ImportedModule  b-  | ImportedName    a-  deriving (Data, Eq, Ord)+-- | An imported name can be a module or a defined name.+data ImportedName' n m+  = ImportedModule  m  -- ^ Imported module name of type @m@.+  | ImportedName    n  -- ^ Imported name of type @n@.+  deriving (Data, Eq, Ord, Show)  setImportedName :: ImportedName' a a -> a -> ImportedName' a a setImportedName (ImportedName   x) y = ImportedName   y setImportedName (ImportedModule x) y = ImportedModule y -instance (Show a, Show b) => Show (ImportedName' a b) where-  show (ImportedModule b) = "module " ++ show b-  show (ImportedName   a) = show a+-- -- Defined in Concrete.Pretty+-- instance (Pretty n, Pretty m) => Pretty (ImportedName' n m) where+--   pretty (ImportedModule x) = "module" <+> pretty x+--   pretty (ImportedName   x) = pretty x -data Renaming' a b = Renaming-  { renFrom    :: ImportedName' a b+-- instance (Show n, Show m) => Show (ImportedName' n m) where+--   show (ImportedModule x) = "module " ++ show x+--   show (ImportedName   x) = show x++data Renaming' n m = Renaming+  { renFrom    :: ImportedName' n m     -- ^ Rename from this name.-  , renTo      :: ImportedName' a b+  , renTo      :: ImportedName' n m     -- ^ To this one.  Must be same kind as 'renFrom'.   , renToRange :: Range     -- ^ The range of the \"to\" keyword.  Retained for highlighting purposes.@@ -1445,3 +1667,14 @@  -- | Positivity check? (Default = True). type PositivityCheck = Bool++-----------------------------------------------------------------------------+-- * Universe checking+-----------------------------------------------------------------------------++-- | Universe check? (Default is yes).+data UniverseCheck = YesUniverseCheck | NoUniverseCheck+  deriving (Eq, Ord, Show, Bounded, Enum, Data)++instance KillRange UniverseCheck where+  killRange = id
src/full/Agda/Syntax/Concrete.hs view
@@ -3,6 +3,7 @@ {-# LANGUAGE DeriveFunctor      #-} {-# LANGUAGE DeriveFoldable     #-} {-# LANGUAGE DeriveTraversable  #-}+{-# LANGUAGE LambdaCase         #-}  {-| The concrete syntax is a raw representation of the program text     without any desugaring at all.  This is what the parser produces.@@ -15,11 +16,10 @@   , OpApp(..), fromOrdinary   , module Agda.Syntax.Concrete.Name   , appView, AppView(..)+  , isSingleIdentifierP, removeSingletonRawAppP     -- * Bindings   , LamBinding   , LamBinding'(..)-  , TypedBindings-  , TypedBindings'(..)   , TypedBinding   , TypedBinding'(..)   , RecordAssignment@@ -29,6 +29,8 @@   , BoundName(..), mkBoundName_, mkBoundName   , Telescope -- (..)   , countTelVars+  , lamBindingsToTelescope+  , makePi     -- * Declarations   , Declaration(..)   , ModuleApplication(..)@@ -36,7 +38,7 @@   , TypeSignatureOrInstanceBlock   , ImportDirective, Using, ImportedName   , Renaming-  , AsName(..)+  , AsName'(..), AsName   , OpenShortHand(..), RewriteEqn, WithExpr   , LHS(..), Pattern(..), LHSCore(..)   , LamClause(..)@@ -142,11 +144,12 @@   | Lam Range [LamBinding] Expr                -- ^ ex: @\\x {y} -> e@ or @\\(x:A){y:B} -> e@   | AbsurdLam Range Hiding                     -- ^ ex: @\\ ()@   | ExtendedLam Range [LamClause]              -- ^ ex: @\\ { p11 .. p1a -> e1 ; .. ; pn1 .. pnz -> en }@-  | Fun Range Expr Expr                        -- ^ ex: @e -> e@ or @.e -> e@ (NYI: @{e} -> e@)+  | Fun Range (Arg Expr) Expr                  -- ^ ex: @e -> e@ or @.e -> e@ (NYI: @{e} -> e@)   | Pi Telescope Expr                          -- ^ ex: @(xs:e) -> e@ or @{xs:e} -> e@   | Set Range                                  -- ^ ex: @Set@   | Prop Range                                 -- ^ ex: @Prop@   | SetN Range Integer                         -- ^ ex: @Set0, Set1, ..@+  | PropN Range Integer                        -- ^ ex: @Prop0, Prop1, ..@   | Rec Range RecordAssignments                -- ^ ex: @record {x = a; y = b}@, or @record { x = a; M1; M2 }@   | RecUpdate Range Expr [FieldAssignment]     -- ^ ex: @record e {x = a; y = b}@   | Let Range [Declaration] (Maybe Expr)       -- ^ ex: @let Ds in e@, missing body when parsing do-notation let@@ -166,6 +169,7 @@   | DontCare Expr                              -- ^ to print irrelevant things   | Equal Range Expr Expr                      -- ^ ex: @a = b@, used internally in the parser   | Ellipsis Range                             -- ^ @...@, used internally to parse patterns.+  | Generalized Expr   deriving Data  -- | Concrete patterns. No literals in patterns at the moment.@@ -189,6 +193,7 @@   | DotP Range Expr                        -- ^ @.e@   | LitP Literal                           -- ^ @0@, @1@, etc.   | RecP Range [FieldAssignment' Pattern]  -- ^ @record {x = p; y = q}@+  | EqualP Range [(Expr,Expr)]             -- ^ @i = i1@ i.e. cubical face lattice generator   | EllipsisP Range                        -- ^ @...@, only as left-most pattern.   | WithP Range Pattern                    -- ^ @| p@, for with-patterns.   deriving Data@@ -200,28 +205,14 @@   deriving Data  -- | A lambda binding is either domain free or typed.-type LamBinding = LamBinding' TypedBindings+type LamBinding = LamBinding' TypedBinding data LamBinding' a-  = DomainFree ArgInfo BoundName  -- ^ . @x@ or @{x}@ or @.x@ or @.{x}@ or @{.x}@-  | DomainFull a                  -- ^ . @(xs : e)@ or @{xs : e}@-  deriving (Data, Functor, Foldable, Traversable)----- | A sequence of typed bindings with hiding information. Appears in dependent---   function spaces, typed lambdas, and telescopes.------   If the individual binding contains hiding information as well, the---   'Hiding' in @TypedBindings@ must be the unit 'NotHidden'.--type TypedBindings = TypedBindings' TypedBinding--data TypedBindings' a = TypedBindings Range (Arg a)-     -- ^ . @(xs : e)@ or @{xs : e}@ or something like @(x {y} _ : e)@.+  = DomainFree (NamedArg BoundName) -- ^ . @x@ or @{x}@ or @.x@ or @.{x}@ or @{.x}@+  | DomainFull a                    -- ^ . @(xs : e)@ or @{xs : e}@   deriving (Data, Functor, Foldable, Traversable)  data BoundName = BName   { boundName   :: Name-  , boundLabel  :: Name    -- ^ for implicit function types the label matters and can't be alpha-renamed   , bnameFixity :: Fixity'   }   deriving (Data, Eq, Show)@@ -230,28 +221,42 @@ mkBoundName_ x = mkBoundName x noFixity'  mkBoundName :: Name -> Fixity' -> BoundName-mkBoundName x f = BName x x f+mkBoundName x f = BName x f  -- | A typed binding.  type TypedBinding = TypedBinding' Expr  data TypedBinding' e-  = TBind Range [WithHiding BoundName] e  -- ^ Binding @(x1 ... xn : A)@.-  | TLet  Range [Declaration]  -- ^ Let binding @(let Ds)@ or @(open M args)@.+  = TBind Range [NamedArg BoundName] e  -- ^ Binding @(x1 ... xn : A)@.+  | TLet  Range [Declaration]           -- ^ Let binding @(let Ds)@ or @(open M args)@.   deriving (Data, Functor, Foldable, Traversable)  -- | A telescope is a sequence of typed bindings. Bound variables are in scope --   in later types.-type Telescope = [TypedBindings]+type Telescope = [TypedBinding]  countTelVars :: Telescope -> Nat countTelVars tel =-  sum [ case unArg b of+  sum [ case b of           TBind _ xs _ -> genericLength xs           TLet{}       -> 0-      | TypedBindings _ b <- tel ]+      | b <- tel ] +-- | We can try to get a @Telescope@ from a @[LamBinding]@.+--   If we have a type annotation already, we're happy.+--   Otherwise we manufacture a binder with an underscore for the type.+lamBindingsToTelescope :: Range -> [LamBinding] -> Telescope+lamBindingsToTelescope r = map $ \case+  DomainFull ty -> ty+  DomainFree nm -> TBind r [nm] $ Underscore r Nothing++-- | Smart constructor for @Pi@: check whether the @Telescope@ is empty++makePi :: Telescope -> Expr -> Expr+makePi [] e = e+makePi bs e = Pi bs e+ {-| Left hand sides can be written in infix style. For example:      > n + suc m = suc (n + m)@@ -321,14 +326,19 @@ -- | An imported name can be a module or a defined name. type ImportedName = ImportedName' Name Name -data AsName = AsName-  { asName  :: Name+-- | The content of the @as@-clause of the import statement.+data AsName' a = AsName+  { asName  :: a     -- ^ The \"as\" name.   , asRange :: Range     -- ^ The range of the \"as\" keyword.  Retained for highlighting purposes.   }-  deriving (Data, Show)+  deriving (Data, Show, Functor, Foldable, Traversable) +-- | From the parser, we get an expression for the @as@-'Name', which+--   we have to parse into a 'Name'.+type AsName = AsName' (Either Expr Name)+ {--------------------------------------------------------------------------     Declarations  --------------------------------------------------------------------------}@@ -346,17 +356,20 @@ data Declaration   = TypeSig ArgInfo Name Expr   -- ^ Axioms and functions can be irrelevant. (Hiding should be NotHidden)+  | Generalize Range [TypeSignature] -- ^ Variables to be generalized, can be hidden and/or irrelevant.   | Field IsInstance Name (Arg Expr) -- ^ Record field, can be hidden and/or irrelevant.   | FunClause LHS RHS WhereClause Bool   | DataSig     Range Induction Name [LamBinding] Expr -- ^ lone data signature in mutual block-  | Data        Range Induction Name [LamBinding] (Maybe Expr) [TypeSignatureOrInstanceBlock]+  | Data        Range Induction Name [LamBinding] Expr [TypeSignatureOrInstanceBlock]+  | DataDef     Range Induction Name [LamBinding] [TypeSignatureOrInstanceBlock]   | RecordSig   Range Name [LamBinding] Expr -- ^ lone record signature in mutual block-  | Record      Range Name (Maybe (Ranged Induction)) (Maybe HasEta) (Maybe (Name, IsInstance)) [LamBinding] (Maybe Expr) [Declaration]+  | RecordDef   Range Name (Maybe (Ranged Induction)) (Maybe HasEta) (Maybe (Name, IsInstance)) [LamBinding] [Declaration]+  | Record      Range Name (Maybe (Ranged Induction)) (Maybe HasEta) (Maybe (Name, IsInstance)) [LamBinding] Expr [Declaration]     -- ^ The optional name is a name for the record constructor.   | Infix Fixity [Name]   | Syntax      Name Notation -- ^ notation declaration for a name   | PatternSyn  Range Name [Arg Name] Pattern-  | Mutual      Range [Declaration]+  | Mutual      Range [Declaration]  -- @Range@ of the whole @mutual@ block.   | Abstract    Range [Declaration]   | Private     Range Origin [Declaration]     -- ^ In "Agda.Syntax.Concrete.Definitions" we generate private blocks@@ -369,16 +382,16 @@   | Open        Range QName ImportDirective   | Import      Range QName (Maybe AsName) !OpenShortHand ImportDirective   | ModuleMacro Range  Name ModuleApplication !OpenShortHand ImportDirective-  | Module      Range QName [TypedBindings] [Declaration]+  | Module      Range QName Telescope [Declaration]   | UnquoteDecl Range [Name] Expr   | UnquoteDef  Range [Name] Expr   | Pragma      Pragma   deriving Data  data ModuleApplication-  = SectionApp Range [TypedBindings] Expr+  = SectionApp Range Telescope Expr     -- ^ @tel. M args@-  | RecordModuleIFS Range QName+  | RecordModuleInstance Range QName     -- ^ @M {{...}}@   deriving Data @@ -391,39 +404,34 @@   = OptionsPragma             Range [String]   | BuiltinPragma             Range String QName   | RewritePragma             Range [QName]-  | CompiledDataPragma        Range QName String [String]-  | CompiledTypePragma        Range QName String-  | CompiledPragma            Range QName String-  | CompiledExportPragma      Range QName String-  | CompiledJSPragma          Range QName String-  | CompiledUHCPragma         Range QName String-  | CompiledDataUHCPragma     Range QName String [String]-  | HaskellCodePragma         Range String   | ForeignPragma             Range String String       -- ^ first string is backend name   | CompilePragma             Range String QName String -- ^ first string is backend name   | StaticPragma              Range QName-  | InjectivePragma           Range QName   | InlinePragma              Range Bool QName  -- ^ INLINE or NOINLINE-  | ImportPragma              Range String-    -- ^ Invariant: The string must be a valid Haskell module name.-  | ImportUHCPragma           Range String-    -- ^ same as above, but for the UHC backend+   | ImpossiblePragma          Range     -- ^ Throws an internal error in the scope checker.   | EtaPragma                 Range QName     -- ^ For coinductive records, use pragma instead of regular     --   @eta-equality@ definition (as it is might make Agda loop).-  | TerminationCheckPragma    Range (TerminationCheck Name)-    -- ^ Applies to the following function (and all that are mutually recursive with it)-    --   or to the functions in the following mutual block.   | WarningOnUsage            Range QName String     -- ^ Applies to the named function+  | InjectivePragma           Range QName+    -- ^ Mark a definition as injective for the pattern matching unifier.+  | DisplayPragma             Range Pattern Expr+    -- ^ Display lhs as rhs (modifies the printer).++  -- Attached (more or less) pragmas handled in the nicifier (Concrete.Definitions):   | CatchallPragma            Range     -- ^ Applies to the following function clause.-  | DisplayPragma             Range Pattern Expr+  | TerminationCheckPragma    Range (TerminationCheck Name)+    -- ^ Applies to the following function (and all that are mutually recursive with it)+    --   or to the functions in the following mutual block.   | NoPositivityCheckPragma   Range     -- ^ Applies to the following data/record type or mutual block.   | PolarityPragma            Range Name [Occurrence]+  | NoUniverseCheckPragma     Range+    -- ^ Applies to the following data/record type.   deriving Data  ---------------------------------------------------------------------------@@ -492,6 +500,18 @@     arg (InstanceArg _ e) = makeInstance $ defaultArg e     arg e                 = defaultArg (unnamed e) +isSingleIdentifierP :: Pattern -> Maybe Name+isSingleIdentifierP p = case removeSingletonRawAppP p of+  IdentP (QName x) -> Just x+  WildP r          -> Just $ noName r+  _                -> Nothing++removeSingletonRawAppP :: Pattern -> Pattern+removeSingletonRawAppP p = case p of+    RawAppP _ [p'] -> removeSingletonRawAppP p'+    ParenP _ p'    -> removeSingletonRawAppP p'+    _ -> p+ {--------------------------------------------------------------------------     Instances  --------------------------------------------------------------------------}@@ -511,19 +531,25 @@ -- Lenses ------------------------------------------------------------------------ -instance LensRelevance TypedBindings where-  getRelevance   (TypedBindings _ b) = getRelevance b-  mapRelevance f (TypedBindings r b) = TypedBindings r $ mapRelevance f b+instance LensHiding LamBinding where+  getHiding   (DomainFree x) = getHiding x+  getHiding   (DomainFull a) = getHiding a+  mapHiding f (DomainFree x) = DomainFree $ mapHiding f x+  mapHiding f (DomainFull a) = DomainFull $ mapHiding f a -instance LensHiding TypedBindings where-  getHiding   (TypedBindings _ b) = getHiding b-  mapHiding f (TypedBindings r b) = TypedBindings r $ mapHiding f b+instance LensHiding TypedBinding where+  getHiding (TBind _ (x : _) _) = getHiding x   -- Slightly dubious+  getHiding (TBind _ [] _)      = __IMPOSSIBLE__+  getHiding TLet{}              = mempty+  mapHiding f (TBind r xs e) = TBind r ((map . mapHiding) f xs) e+  mapHiding f b@TLet{}       = b -instance LensHiding LamBinding where-  getHiding   (DomainFree ai _) = getHiding ai-  getHiding   (DomainFull a)    = getHiding a-  mapHiding f (DomainFree ai x) = DomainFree (mapHiding f ai) x-  mapHiding f (DomainFull a)    = DomainFull $ mapHiding f a+instance LensRelevance TypedBinding where+  getRelevance (TBind _ (x : _) _) = getRelevance x   -- Slightly dubious+  getRelevance (TBind _ [] _)      = __IMPOSSIBLE__+  getRelevance TLet{}              = mempty+  mapRelevance f (TBind r xs e) = TBind r ((map . mapRelevance) f xs) e+  mapRelevance f b@TLet{}       = b  -- HasRange instances ------------------------------------------------------------------------@@ -552,6 +578,7 @@       Set r              -> r       Prop r             -> r       SetN r _           -> r+      PropN r _          -> r       Let r _ _          -> r       Paren r _          -> r       IdiomBrackets r _  -> r@@ -573,21 +600,19 @@       DontCare{}         -> noRange       Equal r _ _        -> r       Ellipsis r         -> r+      Generalized e      -> getRange e  -- instance HasRange Telescope where --     getRange (TeleBind bs) = getRange bs --     getRange (TeleFun x y) = fuseRange x y -instance HasRange TypedBindings where-  getRange (TypedBindings r _) = r- instance HasRange TypedBinding where   getRange (TBind r _ _) = r   getRange (TLet r _)    = r  instance HasRange LamBinding where-  getRange (DomainFree _ x) = getRange x-  getRange (DomainFull b)   = getRange b+  getRange (DomainFree x) = getRange x+  getRange (DomainFull b) = getRange b  instance HasRange BoundName where   getRange = getRange . boundName@@ -599,7 +624,7 @@  instance HasRange ModuleApplication where   getRange (SectionApp r _ _) = r-  getRange (RecordModuleIFS r _) = r+  getRange (RecordModuleInstance r _) = r  instance HasRange a => HasRange (FieldAssignment' a) where   getRange (FieldAssignment a b) = fuseRange a b@@ -613,10 +638,13 @@   getRange (FunClause lhs rhs wh _) = fuseRange lhs rhs `fuseRange` wh   getRange (DataSig r _ _ _ _)     = r   getRange (Data r _ _ _ _ _)      = r+  getRange (DataDef r _ _ _ _)     = r   getRange (RecordSig r _ _ _)     = r+  getRange (RecordDef r _ _ _ _ _ _) = r   getRange (Record r _ _ _ _ _ _ _)  = r   getRange (Mutual r _)            = r   getRange (Abstract r _)          = r+  getRange (Generalize r _)        = r   getRange (Open r _ _)            = r   getRange (ModuleMacro r _ _ _ _) = r   getRange (Import r _ _ _ _)      = r@@ -657,21 +685,11 @@   getRange (OptionsPragma r _)               = r   getRange (BuiltinPragma r _ _)             = r   getRange (RewritePragma r _)               = r-  getRange (CompiledDataPragma r _ _ _)      = r-  getRange (CompiledTypePragma r _ _)        = r-  getRange (CompiledPragma r _ _)            = r-  getRange (CompiledExportPragma r _ _)      = r-  getRange (CompiledJSPragma r _ _)          = r-  getRange (CompiledUHCPragma r _ _)         = r-  getRange (CompiledDataUHCPragma r _ _ _)   = r-  getRange (HaskellCodePragma r _)           = r   getRange (CompilePragma r _ _ _)           = r   getRange (ForeignPragma r _ _)             = r   getRange (StaticPragma r _)                = r   getRange (InjectivePragma r _)             = r   getRange (InlinePragma r _ _)              = r-  getRange (ImportPragma r _)                = r-  getRange (ImportUHCPragma r _)             = r   getRange (ImpossiblePragma r)              = r   getRange (EtaPragma r _)                   = r   getRange (TerminationCheckPragma r _)      = r@@ -680,6 +698,7 @@   getRange (DisplayPragma r _ _)             = r   getRange (NoPositivityCheckPragma r)       = r   getRange (PolarityPragma r _ _)            = r+  getRange (NoUniverseCheckPragma r)         = r  instance HasRange AsName where   getRange a = getRange (asRange a, asName a)@@ -699,15 +718,13 @@   getRange (InstanceP r _)    = r   getRange (DotP r _)         = r   getRange (RecP r _)         = r+  getRange (EqualP r _)       = r   getRange (EllipsisP r)      = r   getRange (WithP r _)        = r  -- SetRange instances ------------------------------------------------------------------------ -instance SetRange TypedBindings where-  setRange r (TypedBindings _ b) = TypedBindings r b- instance SetRange Pattern where   setRange r (IdentP x)         = IdentP (setRange r x)   setRange r (AppP p q)         = AppP (setRange r p) (setRange r q)@@ -723,9 +740,14 @@   setRange r (InstanceP _ p)    = InstanceP r p   setRange r (DotP _ e)         = DotP r e   setRange r (RecP _ fs)        = RecP r fs+  setRange r (EqualP _ es)      = EqualP r es   setRange r (EllipsisP _)      = EllipsisP r   setRange r (WithP _ p)        = WithP r p +instance SetRange TypedBinding where+  setRange r (TBind _ xs e) = TBind r xs e+  setRange r (TLet _ ds)    = TLet r ds+ -- KillRange instances ------------------------------------------------------------------------ @@ -739,16 +761,19 @@   killRange (AsName n _) = killRange1 (flip AsName noRange) n  instance KillRange BoundName where-  killRange (BName n l f) = killRange3 BName n l f+  killRange (BName n f) = killRange2 BName n f  instance KillRange Declaration where   killRange (TypeSig i n e)         = killRange2 (TypeSig i) n e+  killRange (Generalize r ds )      = killRange1 (Generalize noRange) ds   killRange (Field i n a)           = killRange2 (Field i) n a   killRange (FunClause l r w ca)    = killRange4 FunClause l r w ca   killRange (DataSig _ i n l e)     = killRange4 (DataSig noRange) i n l e   killRange (Data _ i n l e c)      = killRange4 (Data noRange i) n l e c+  killRange (DataDef _ i n l c)     = killRange3 (DataDef noRange i) n l c   killRange (RecordSig _ n l e)     = killRange3 (RecordSig noRange) n l e-  killRange (Record _ n mi mb mn k e d)= killRange7 (Record noRange) n mi mb mn k e d+  killRange (RecordDef _ n mi mb mn k d) = killRange6 (RecordDef noRange) n mi mb mn k d+  killRange (Record _ n mi mb mn k e d)  = killRange7 (Record noRange) n mi mb mn k e d   killRange (Infix f n)             = killRange2 Infix f n   killRange (Syntax n no)           = killRange1 (\n -> Syntax n no) n   killRange (PatternSyn _ n ns p)   = killRange3 (PatternSyn noRange) n ns p@@ -786,6 +811,7 @@   killRange (Set _)              = Set noRange   killRange (Prop _)             = Prop noRange   killRange (SetN _ n)           = SetN noRange n+  killRange (PropN _ n)          = PropN noRange n   killRange (Rec _ ne)           = killRange1 (Rec noRange) ne   killRange (RecUpdate _ e ne)   = killRange2 (RecUpdate noRange) e ne   killRange (Let _ d e)          = killRange2 (Let noRange) d e@@ -805,10 +831,11 @@   killRange (DontCare e)         = killRange1 DontCare e   killRange (Equal _ x y)        = Equal noRange x y   killRange (Ellipsis _)         = Ellipsis noRange+  killRange (Generalized e)      = killRange1 Generalized e  instance KillRange LamBinding where-  killRange (DomainFree i b) = killRange2 DomainFree i b-  killRange (DomainFull t)   = killRange1 DomainFull t+  killRange (DomainFree b) = killRange1 DomainFree b+  killRange (DomainFull t) = killRange1 DomainFull t  instance KillRange LHS where   killRange (LHS p r w)     = killRange3 LHS p r w@@ -823,7 +850,7 @@  instance KillRange ModuleApplication where   killRange (SectionApp _ t e)    = killRange2 (SectionApp noRange) t e-  killRange (RecordModuleIFS _ q) = killRange1 (RecordModuleIFS noRange) q+  killRange (RecordModuleInstance _ q) = killRange1 (RecordModuleInstance noRange) q  instance KillRange e => KillRange (OpApp e) where   killRange (SyntaxBindingLambda _ l e) = killRange2 (SyntaxBindingLambda noRange) l e@@ -844,6 +871,7 @@   killRange (LitP l)          = killRange1 LitP l   killRange (QuoteP _)        = QuoteP noRange   killRange (RecP _ fs)       = killRange1 (RecP noRange) fs+  killRange (EqualP _ es)     = killRange1 (EqualP noRange) es   killRange (EllipsisP _)     = EllipsisP noRange   killRange (WithP _ p)       = killRange1 (WithP noRange) p @@ -851,29 +879,20 @@   killRange (OptionsPragma _ s)               = OptionsPragma noRange s   killRange (BuiltinPragma _ s e)             = killRange1 (BuiltinPragma noRange s) e   killRange (RewritePragma _ qs)              = killRange1 (RewritePragma noRange) qs-  killRange (CompiledDataPragma _ q s ss)     = killRange1 (\q -> CompiledDataPragma noRange q s ss) q-  killRange (CompiledTypePragma _ q s)        = killRange1 (\q -> CompiledTypePragma noRange q s) q-  killRange (CompiledPragma _ q s)            = killRange1 (\q -> CompiledPragma noRange q s) q-  killRange (CompiledExportPragma _ q s)      = killRange1 (\q -> CompiledExportPragma noRange q s) q-  killRange (CompiledJSPragma _ q s)          = killRange1 (\q -> CompiledJSPragma noRange q s) q-  killRange (CompiledUHCPragma _ q s)         = killRange1 (\q -> CompiledUHCPragma noRange q s) q-  killRange (CompiledDataUHCPragma _ q s ss)  = killRange1 (\q -> CompiledDataUHCPragma noRange q s ss) q-  killRange (HaskellCodePragma _ s)           = HaskellCodePragma noRange s   killRange (StaticPragma _ q)                = killRange1 (StaticPragma noRange) q   killRange (InjectivePragma _ q)             = killRange1 (InjectivePragma noRange) q   killRange (InlinePragma _ b q)              = killRange1 (InlinePragma noRange b) q-  killRange (ImportPragma _ s)                = ImportPragma noRange s-  killRange (ImportUHCPragma _ s)             = ImportUHCPragma noRange s   killRange (CompilePragma _ b q s)           = killRange1 (\ q -> CompilePragma noRange b q s) q   killRange (ForeignPragma _ b s)             = ForeignPragma noRange b s   killRange (ImpossiblePragma _)              = ImpossiblePragma noRange   killRange (TerminationCheckPragma _ t)      = TerminationCheckPragma noRange (killRange t)-  killRange (WarningOnUsage _ nm str)         = WarningOnUsage noRange nm str+  killRange (WarningOnUsage _ nm str)         = WarningOnUsage noRange (killRange nm) str   killRange (CatchallPragma _)                = CatchallPragma noRange   killRange (DisplayPragma _ lhs rhs)         = killRange2 (DisplayPragma noRange) lhs rhs   killRange (EtaPragma _ q)                   = killRange1 (EtaPragma noRange) q   killRange (NoPositivityCheckPragma _)       = NoPositivityCheckPragma noRange   killRange (PolarityPragma _ q occs)         = killRange1 (\q -> PolarityPragma noRange q occs) q+  killRange (NoUniverseCheckPragma _)         = NoUniverseCheckPragma noRange  instance KillRange RHS where   killRange AbsurdRHS = AbsurdRHS@@ -883,9 +902,6 @@   killRange (TBind _ b e) = killRange2 (TBind noRange) b e   killRange (TLet r ds)   = killRange2 TLet r ds -instance KillRange TypedBindings where-  killRange (TypedBindings _ t) = killRange1 (TypedBindings noRange) t- instance KillRange WhereClause where   killRange NoWhere         = NoWhere   killRange (AnyWhere d)    = killRange1 AnyWhere d@@ -915,6 +931,7 @@   rnf (Set _)            = ()   rnf (Prop _)           = ()   rnf (SetN _ a)         = rnf a+  rnf (PropN _ a)        = rnf a   rnf (Rec _ a)          = rnf a   rnf (RecUpdate _ a b)  = rnf a `seq` rnf b   rnf (Let _ a b)        = rnf a `seq` rnf b@@ -934,6 +951,7 @@   rnf (DontCare a)       = rnf a   rnf (Equal _ a b)      = rnf a `seq` rnf b   rnf (Ellipsis _)       = ()+  rnf (Generalized e)    = rnf e  -- | Ranges are not forced. @@ -952,6 +970,7 @@   rnf (DotP _ a) = rnf a   rnf (LitP a) = rnf a   rnf (RecP _ a) = rnf a+  rnf (EqualP _ es) = rnf es   rnf (EllipsisP _) = ()   rnf (WithP _ a) = rnf a @@ -959,11 +978,14 @@  instance NFData Declaration where   rnf (TypeSig a b c)         = rnf a `seq` rnf b `seq` rnf c+  rnf (Generalize _ a)        = rnf a   rnf (Field a b c)           = rnf a `seq` rnf b `seq` rnf c   rnf (FunClause a b c d)     = rnf a `seq` rnf b `seq` rnf c `seq` rnf d   rnf (DataSig _ a b c d)     = rnf a `seq` rnf b `seq` rnf c `seq` rnf d   rnf (Data _ a b c d e)      = rnf a `seq` rnf b `seq` rnf c `seq` rnf d `seq` rnf e+  rnf (DataDef _ a b c d)     = rnf a `seq` rnf b `seq` rnf c `seq` rnf d   rnf (RecordSig _ a b c)     = rnf a `seq` rnf b `seq` rnf c+  rnf (RecordDef _ a b c d e f) = rnf a `seq` rnf b `seq` rnf c `seq` rnf d `seq` rnf e `seq` rnf f   rnf (Record _ a b c d e f g)  = rnf a `seq` rnf b `seq` rnf c `seq` rnf d `seq` rnf e `seq` rnf f `seq` rnf g   rnf (Infix a b)             = rnf a `seq` rnf b   rnf (Syntax a b)            = rnf a `seq` rnf b@@ -989,21 +1011,11 @@   rnf (OptionsPragma _ a)               = rnf a   rnf (BuiltinPragma _ a b)             = rnf a `seq` rnf b   rnf (RewritePragma _ a)               = rnf a-  rnf (CompiledDataPragma _ a b c)      = rnf a `seq` rnf b `seq` rnf c-  rnf (CompiledTypePragma _ a b)        = rnf a `seq` rnf b-  rnf (CompiledPragma _ a b)            = rnf a `seq` rnf b-  rnf (CompiledExportPragma _ a b)      = rnf a `seq` rnf b-  rnf (CompiledJSPragma _ a b)          = rnf a `seq` rnf b-  rnf (CompiledUHCPragma _ a b)         = rnf a `seq` rnf b-  rnf (CompiledDataUHCPragma _ a b c)   = rnf a `seq` rnf b `seq` rnf c-  rnf (HaskellCodePragma _ s)           = rnf s   rnf (CompilePragma _ a b c)           = rnf a `seq` rnf b `seq` rnf c   rnf (ForeignPragma _ b s)             = rnf b `seq` rnf s   rnf (StaticPragma _ a)                = rnf a   rnf (InjectivePragma _ a)             = rnf a   rnf (InlinePragma _ _ a)              = rnf a-  rnf (ImportPragma _ a)                = rnf a-  rnf (ImportUHCPragma _ a)             = rnf a   rnf (ImpossiblePragma _)              = ()   rnf (EtaPragma _ a)                   = rnf a   rnf (TerminationCheckPragma _ a)      = rnf a@@ -1012,11 +1024,7 @@   rnf (DisplayPragma _ a b)             = rnf a `seq` rnf b   rnf (NoPositivityCheckPragma _)       = ()   rnf (PolarityPragma _ a b)            = rnf a `seq` rnf b---- | Ranges are not forced.--instance NFData a => NFData (TypedBindings' a) where-  rnf (TypedBindings _ a) = rnf a+  rnf (NoUniverseCheckPragma _)         = ()  -- | Ranges are not forced. @@ -1033,7 +1041,7 @@  instance NFData ModuleApplication where   rnf (SectionApp _ a b)    = rnf a `seq` rnf b-  rnf (RecordModuleIFS _ a) = rnf a+  rnf (RecordModuleInstance _ a) = rnf a  -- | Ranges are not forced. @@ -1061,11 +1069,11 @@   rnf (LamClause a b c d) = rnf (a, b, c, d)  instance NFData a => NFData (LamBinding' a) where-  rnf (DomainFree a b) = rnf a `seq` rnf b-  rnf (DomainFull a)   = rnf a+  rnf (DomainFree a) = rnf a+  rnf (DomainFull a) = rnf a  instance NFData BoundName where-  rnf (BName a b c) = rnf a `seq` rnf b `seq` rnf c+  rnf (BName a b) = rnf a `seq` rnf b  instance NFData a => NFData (RHS' a) where   rnf AbsurdRHS = ()
+ src/full/Agda/Syntax/Concrete/Attribute.hs view
@@ -0,0 +1,128 @@+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE LambdaCase    #-}+{-# LANGUAGE ConstraintKinds #-}++-- | Attributes: concrete syntax for ArgInfo, esp. modalities.++module Agda.Syntax.Concrete.Attribute where++import Control.Arrow (second)+import Control.Monad (foldM)++import Data.List (foldl')+import Data.Map (Map)+import qualified Data.Map as Map+import Data.Maybe++import Agda.Syntax.Common+import Agda.Syntax.Concrete.Name++-- import Agda.Utils.Functor++-- | An attribute is a modifier for `ArgInfo`.++data Attribute+  = RelevanceAttribute Relevance+  | QuantityAttribute  Quantity+  deriving (Eq, Ord, Show)++-- | (Conjunctive constraint.)++type LensAttribute a = (LensRelevance a, LensQuantity a)++-- | Modifiers for 'Relevance'.++relevanceAttributeTable :: [(String, Relevance)]+relevanceAttributeTable = concat+  [ map (, Irrelevant)  [ "irr", "irrelevant" ]+  , map (, NonStrict)   [ "shirr", "shape-irrelevant" ]+  , map (, Relevant)    [ "relevant" ]+  ]++-- | Modifiers for 'Quantity'.++quantityAttributeTable :: [(String, Quantity)]+quantityAttributeTable = concat+  [ map (, Quantity0) [ "0", "erased" ] -- , "static", "compile-time" ]+  , map (, Quantityω) [ "ω", "plenty" ] -- , "dynamic", "runtime", "unrestricted", "abundant" ]+  -- , map (, Quantity1)  [ "1", "linear" ]+  -- , map (, Quantity01) [ "01", "affine" ]+  ]++-- | Concrete syntax for all attributes.++attributesMap :: Map String Attribute+attributesMap = Map.fromList $ concat+  [ map (second RelevanceAttribute) relevanceAttributeTable+  , map (second QuantityAttribute)  quantityAttributeTable+  ]++-- | Parsing a string into an attribute.++stringToAttribute :: String -> Maybe Attribute+stringToAttribute = (`Map.lookup` attributesMap)++-- | Setting an attribute (in e.g. an 'Arg').  Overwrites previous value.++setAttribute :: (LensAttribute a) => Attribute -> a -> a+setAttribute = \case+  RelevanceAttribute r -> setRelevance r+  QuantityAttribute  q -> setQuantity  q+++-- | Setting some attributes in left-to-right order.+--   Blindly overwrites previous settings.++setAttributes :: (LensAttribute a) => [Attribute] -> a -> a+setAttributes attrs arg = foldl' (flip setAttribute) arg attrs++---------------------------------------------------------------------------+-- * Applying attributes only if they have not been set already.+--   No overwriting.+---------------------------------------------------------------------------++-- | Setting 'Relevance' if unset.++setPristineRelevance :: (LensRelevance a) => Relevance -> a -> Maybe a+setPristineRelevance r a+  | getRelevance a == defaultRelevance = Just $ setRelevance r a+  | otherwise = Nothing++-- | Setting 'Quantity' if unset.++setPristineQuantity :: (LensQuantity a) => Quantity -> a -> Maybe a+setPristineQuantity q a+  | getQuantity a == defaultQuantity = Just $ setQuantity q a+  | otherwise = Nothing++-- | Setting an unset attribute (to e.g. an 'Arg').++setPristineAttribute :: (LensAttribute a) => Attribute -> a -> Maybe a+setPristineAttribute = \case+  RelevanceAttribute r -> setPristineRelevance r+  QuantityAttribute  q -> setPristineQuantity  q++-- | Setting a list of unset attributes.++setPristineAttributes :: (LensAttribute a) => [Attribute] -> a -> Maybe a+setPristineAttributes attrs arg = foldM (flip setPristineAttribute) arg attrs++---------------------------------------------------------------------------+-- * Filtering attributes+---------------------------------------------------------------------------++isRelevanceAttribute :: Attribute -> Maybe Relevance+isRelevanceAttribute = \case+  RelevanceAttribute q -> Just q+  _ -> Nothing++isQuantityAttribute :: Attribute -> Maybe Quantity+isQuantityAttribute = \case+  QuantityAttribute q -> Just q+  _ -> Nothing++relevanceAttributes :: [Attribute] -> [Attribute]+relevanceAttributes = filter $ isJust . isRelevanceAttribute++quantityAttributes :: [Attribute] -> [Attribute]+quantityAttributes = filter $ isJust . isQuantityAttribute
src/full/Agda/Syntax/Concrete/Definitions.hs view
@@ -1,1744 +1,1746 @@ {-# LANGUAGE CPP                #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE GADTs              #-}---- | Preprocess 'Agda.Syntax.Concrete.Declaration's, producing 'NiceDeclaration's.------   * Attach fixity and syntax declarations to the definition they refer to.------   * Distribute the following attributes to the individual definitions:---       @abstract@,---       @instance@,---       @postulate@,---       @primitive@,---       @private@,---       termination pragmas.------   * Gather the function clauses belonging to one function definition.------   * Expand ellipsis @...@ in function clauses following @with@.------   * Infer mutual blocks.---     A block starts when a lone signature is encountered, and ends when---     all lone signatures have seen their definition.------   * Report basic well-formedness error,---     when one of the above transformation fails.---     When possible, errors should be deferred to the scope checking phase---     (ConcreteToAbstract), where we are in the TCM and can produce more---     informative error messages.---module Agda.Syntax.Concrete.Definitions-    ( NiceDeclaration(..)-    , NiceConstructor, NiceTypeSignature-    , Clause(..)-    , DeclarationException(..)-    , DeclarationWarning(..)-    , Nice, runNice-    , niceDeclarations-    , notSoNiceDeclarations-    , niceHasAbstract-    , Measure-    , declarationWarningName-    ) where--import Prelude hiding (null)--import Control.Arrow ((***), first, second)-import Control.Applicative hiding (empty)-import Control.Monad.State--import qualified Data.Map as Map-import Data.Map (Map)-import Data.Maybe-import Data.Monoid ( Monoid, mempty, mappend )-import Data.Semigroup ( Semigroup, (<>) )-import qualified Data.List as List-import qualified Data.Set as Set-import Data.Traversable (Traversable, traverse)-import qualified Data.Traversable as Trav--import Data.Data (Data)--import Agda.Syntax.Concrete-import Agda.Syntax.Concrete.Pattern-import Agda.Syntax.Common hiding (TerminationCheck())-import qualified Agda.Syntax.Common as Common-import Agda.Syntax.Position-import Agda.Syntax.Fixity-import Agda.Syntax.Notation-import Agda.Syntax.Concrete.Pretty ()--import Agda.Interaction.Options.Warnings--import Agda.TypeChecking.Positivity.Occurrence--import Agda.Utils.AffineHole-import Agda.Utils.Except ( MonadError(throwError,catchError) )-import Agda.Utils.Function-import Agda.Utils.Functor-import Agda.Utils.Lens-import Agda.Utils.List (caseList, headMaybe, isSublistOf)-import Agda.Utils.Maybe-import Agda.Utils.Monad-import Agda.Utils.Null-import qualified Agda.Utils.Pretty as Pretty-import Agda.Utils.Pretty hiding ((<>))-import Agda.Utils.Singleton-import Agda.Utils.Tuple-import Agda.Utils.Update--#include "undefined.h"-import Agda.Utils.Impossible--{---------------------------------------------------------------------------    Types- --------------------------------------------------------------------------}--{-| The nice declarations. No fixity declarations and function definitions are-    contained in a single constructor instead of spread out between type-    signatures and clauses. The @private@, @postulate@, @abstract@ and @instance@-    modifiers have been distributed to the individual declarations.--    Observe the order of components:--      Range-      Fixity'-      Access-      IsAbstract-      IsInstance-      TerminationCheck-      PositivityCheck--      further attributes--      (Q)Name--      content (Expr, Declaration ...)--}-data NiceDeclaration-  = Axiom Range Fixity' Access IsAbstract IsInstance ArgInfo (Maybe [Occurrence]) Name Expr-      -- ^ 'IsAbstract' argument: We record whether a declaration was made in an @abstract@ block.-      ---      --   'ArgInfo' argument: Axioms and functions can be declared irrelevant.-      --   ('Hiding' should be 'NotHidden'.)-      ---      --   @Maybe [Occurrence]@ argument: Polarities can be assigned to identifiers.-  | NiceField Range Fixity' Access IsAbstract IsInstance Name (Arg Expr)-  | PrimitiveFunction Range Fixity' Access IsAbstract Name Expr-  | NiceMutual Range TerminationCheck PositivityCheck [NiceDeclaration]-  | NiceModule Range Access IsAbstract QName Telescope [Declaration]-  | NiceModuleMacro Range Access Name ModuleApplication OpenShortHand ImportDirective-  | NiceOpen Range QName ImportDirective-  | NiceImport Range QName (Maybe AsName) OpenShortHand ImportDirective-  | NicePragma Range Pragma-  | NiceRecSig Range Fixity' Access IsAbstract PositivityCheck Name [LamBinding] Expr-  | NiceDataSig Range Fixity' Access IsAbstract PositivityCheck Name [LamBinding] Expr-  | NiceFunClause Range Access IsAbstract TerminationCheck Catchall Declaration-    -- ^ An uncategorized function clause, could be a function clause-    --   without type signature or a pattern lhs (e.g. for irrefutable let).-    --   The 'Declaration' is the actual 'FunClause'.-  | FunSig Range Fixity' Access IsAbstract IsInstance IsMacro ArgInfo TerminationCheck Name Expr-  | FunDef Range [Declaration] Fixity' IsAbstract IsInstance TerminationCheck Name [Clause]-      -- ^ Block of function clauses (we have seen the type signature before).-      --   The 'Declaration's are the original declarations that were processed-      --   into this 'FunDef' and are only used in 'notSoNiceDeclaration'.-      --   Andreas, 2017-01-01: Because of issue #2372, we add 'IsInstance' here.-      --   An alias should know that it is an instance.-  | DataDef Range Fixity' IsAbstract PositivityCheck Name [LamBinding] [NiceConstructor]-  | RecDef Range Fixity' IsAbstract PositivityCheck Name (Maybe (Ranged Induction)) (Maybe HasEta) (Maybe (ThingWithFixity Name, IsInstance)) [LamBinding] [NiceDeclaration]-  | NicePatternSyn Range Fixity' Name [Arg Name] Pattern-  | NiceUnquoteDecl Range [Fixity'] Access IsAbstract IsInstance TerminationCheck [Name] Expr-  | NiceUnquoteDef Range [Fixity'] Access IsAbstract TerminationCheck [Name] Expr-  deriving (Data, Show)--type TerminationCheck = Common.TerminationCheck Measure---- | Termination measure is, for now, a variable name.-type Measure = Name--type Catchall = Bool---- | Only 'Axiom's.-type NiceConstructor = NiceTypeSignature---- | Only 'Axiom's.-type NiceTypeSignature  = NiceDeclaration---- | One clause in a function definition. There is no guarantee that the 'LHS'---   actually declares the 'Name'. We will have to check that later.-data Clause = Clause Name Catchall LHS RHS WhereClause [Clause]-    deriving (Data, Show)---- | The exception type.-data DeclarationException-        = MultipleFixityDecls [(Name, [Fixity'])]-        | MultiplePolarityPragmas [Name]-        | MultipleEllipses Pattern-        | InvalidName Name-        | DuplicateDefinition Name-        | MissingDefinition Name-        | MissingWithClauses Name-        | WrongDefinition Name DataRecOrFun DataRecOrFun-        | WrongParameters Name Params Params-          -- ^ 'Name' of symbol, 'Params' of signature, 'Params' of definition.-        | NotAllowedInMutual NiceDeclaration-        | Codata Range-        | DeclarationPanic String-        | WrongContentBlock KindOfBlock Range-        | AmbiguousFunClauses LHS [Name] -- ^ in a mutual block, a clause could belong to any of the @[Name]@ type signatures-        | InvalidMeasureMutual Range-          -- ^ In a mutual block, all or none need a MEASURE pragma.-          --   Range is of mutual block.-        | PragmaNoTerminationCheck Range-          -- ^ Pragma @{-# NO_TERMINATION_CHECK #-}@ has been replaced-          --   by {-# TERMINATING #-} and {-# NON_TERMINATING #-}.-        | UnquoteDefRequiresSignature [Name]-        | BadMacroDef NiceDeclaration-    deriving (Data, Show)---- | Non-fatal errors encountered in the Nicifier-data DeclarationWarning-  = UnknownNamesInFixityDecl [Name]-  | UnknownFixityInMixfixDecl [Name]-  | UnknownNamesInPolarityPragmas [Name]-  | PolarityPragmasButNotPostulates [Name]-  | UselessPrivate Range-  | UselessAbstract Range-  | UselessInstance Range-  | EmptyMutual Range     -- ^ Empty @mutual@    block.-  | EmptyAbstract Range   -- ^ Empty @abstract@  block.-  | EmptyPrivate Range    -- ^ Empty @private@   block.-  | EmptyInstance Range   -- ^ Empty @instance@  block-  | EmptyMacro Range      -- ^ Empty @macro@     block.-  | EmptyPostulate Range  -- ^ Empty @postulate@ block.-  | InvalidTerminationCheckPragma Range-      -- ^ A {-# TERMINATING #-} and {-# NON_TERMINATING #-} pragma-      --   that does not apply to any function.-  | InvalidNoPositivityCheckPragma Range-      -- ^ A {-# NO_POSITIVITY_CHECK #-} pragma-      --   that does not apply to any data or record type.-  | InvalidCatchallPragma Range-      -- ^ A {-# CATCHALL #-} pragma-      --   that does not precede a function clause.-  deriving (Data, Show)--declarationWarningName :: DeclarationWarning -> WarningName-declarationWarningName dw = case dw of-  UnknownNamesInFixityDecl{}        -> UnknownNamesInFixityDecl_-  UnknownFixityInMixfixDecl{}       -> UnknownFixityInMixfixDecl_-  UnknownNamesInPolarityPragmas{}   -> UnknownNamesInPolarityPragmas_-  PolarityPragmasButNotPostulates{} -> PolarityPragmasButNotPostulates_-  UselessPrivate{}                  -> UselessPrivate_-  UselessAbstract{}                 -> UselessAbstract_-  UselessInstance{}                 -> UselessInstance_-  EmptyMutual{}                     -> EmptyMutual_-  EmptyAbstract{}                   -> EmptyAbstract_-  EmptyPrivate{}                    -> EmptyPrivate_-  EmptyInstance{}                   -> EmptyInstance_-  EmptyMacro{}                      -> EmptyMacro_-  EmptyPostulate{}                  -> EmptyPostulate_-  InvalidTerminationCheckPragma{}   -> InvalidTerminationCheckPragma_-  InvalidNoPositivityCheckPragma{}  -> InvalidNoPositivityCheckPragma_-  InvalidCatchallPragma{}           -> InvalidCatchallPragma_---- | Several declarations expect only type signatures as sub-declarations.  These are:-data KindOfBlock-  = PostulateBlock  -- ^ @postulate@-  | PrimitiveBlock  -- ^ @primitive@.  Ensured by parser.-  | InstanceBlock   -- ^ @instance@.  Actually, here all kinds of sub-declarations are allowed a priori.-  | FieldBlock      -- ^ @field@.  Ensured by parser.-  | DataBlock       -- ^ @data ... where@.  Here we got a bad error message for Agda-2.5 (Issue 1698).-  deriving (Data, Eq, Ord, Show)---instance HasRange DeclarationException where-  getRange (MultipleFixityDecls xs)             = getRange (fst $ head xs)-  getRange (MultiplePolarityPragmas xs)         = getRange (head xs)-  getRange (MultipleEllipses d)                 = getRange d-  getRange (InvalidName x)                      = getRange x-  getRange (DuplicateDefinition x)              = getRange x-  getRange (MissingDefinition x)                = getRange x-  getRange (MissingWithClauses x)               = getRange x-  getRange (WrongDefinition x k k')             = getRange x-  getRange (WrongParameters x _ _)              = getRange x-  getRange (AmbiguousFunClauses lhs xs)         = getRange lhs-  getRange (NotAllowedInMutual x)               = getRange x-  getRange (Codata r)                           = r-  getRange (DeclarationPanic _)                 = noRange-  getRange (WrongContentBlock _ r)              = r-  getRange (InvalidMeasureMutual r)             = r-  getRange (PragmaNoTerminationCheck r)         = r-  getRange (UnquoteDefRequiresSignature x)      = getRange x-  getRange (BadMacroDef d)                      = getRange d--instance HasRange DeclarationWarning where-  getRange (UnknownNamesInFixityDecl xs)        = getRange . head $ xs-  getRange (UnknownFixityInMixfixDecl xs)       = getRange . head $ xs-  getRange (UnknownNamesInPolarityPragmas xs)   = getRange . head $ xs-  getRange (PolarityPragmasButNotPostulates xs) = getRange . head $ xs-  getRange (UselessPrivate r)                   = r-  getRange (UselessAbstract r)                  = r-  getRange (UselessInstance r)                  = r-  getRange (EmptyMutual r)                      = r-  getRange (EmptyAbstract r)                    = r-  getRange (EmptyPrivate r)                     = r-  getRange (EmptyInstance r)                    = r-  getRange (EmptyMacro r)                       = r-  getRange (EmptyPostulate r)                   = r-  getRange (InvalidTerminationCheckPragma r)    = r-  getRange (InvalidNoPositivityCheckPragma r)   = r-  getRange (InvalidCatchallPragma r)            = r--instance HasRange NiceDeclaration where-  getRange (Axiom r _ _ _ _ _ _ _ _)         = r-  getRange (NiceField r _ _ _ _ _ _)         = r-  getRange (NiceMutual r _ _ _)              = r-  getRange (NiceModule r _ _ _ _ _ )         = r-  getRange (NiceModuleMacro r _ _ _ _ _)     = r-  getRange (NiceOpen r _ _)                  = r-  getRange (NiceImport r _ _ _ _)            = r-  getRange (NicePragma r _)                  = r-  getRange (PrimitiveFunction r _ _ _ _ _)   = r-  getRange (FunSig r _ _ _ _ _ _ _ _ _)      = r-  getRange (FunDef r _ _ _ _ _ _ _)          = r-  getRange (DataDef r _ _ _ _ _ _)           = r-  getRange (RecDef r _ _ _ _ _ _ _ _ _)      = r-  getRange (NiceRecSig r _ _ _ _ _ _ _)      = r-  getRange (NiceDataSig r _ _ _ _ _ _ _)     = r-  getRange (NicePatternSyn r _ _ _ _)        = r-  getRange (NiceFunClause r _ _ _ _ _)       = r-  getRange (NiceUnquoteDecl r _ _ _ _ _ _ _) = r-  getRange (NiceUnquoteDef r _ _ _ _ _ _)    = r---- These error messages can (should) be terminated by a dot ".",--- there is no error context printed after them.-instance Pretty DeclarationException where-  pretty (MultipleFixityDecls xs) =-    sep [ fsep $ pwords "Multiple fixity or syntax declarations for"-        , vcat $ map f xs-        ]-      where-        f (x, fs) = pretty x Pretty.<> text ": " <+> fsep (map pretty fs)-  pretty (MultiplePolarityPragmas xs) = fsep $-    pwords "Multiple polarity pragmas for" ++ map pretty xs-  pretty (MultipleEllipses p) = fsep $-    pwords "Multiple ellipses in left-hand side" ++ [pretty p]-  pretty (InvalidName x) = fsep $-    pwords "Invalid name:" ++ [pretty x]-  pretty (DuplicateDefinition x) = fsep $-    pwords "Duplicate definition of" ++ [pretty x]-  pretty (MissingDefinition x) = fsep $-    pwords "Missing definition for" ++ [pretty x]-  pretty (MissingWithClauses x) = fsep $-    pwords "Missing with-clauses for function" ++ [pretty x]--  pretty (WrongDefinition x k k') = fsep $ pretty x :-    pwords ("has been declared as a " ++ show k ++-      ", but is being defined as a " ++ show k')-  pretty (WrongParameters x sig def) = fsep $-    pwords "List of parameters " ++ map pretty def ++-    pwords " does not match parameters " ++ map pretty sig ++-    pwords " of previous signature for " ++ [pretty x]-  pretty (AmbiguousFunClauses lhs xs) = sep-    [ fsep $-        pwords "More than one matching type signature for left hand side " ++ [pretty lhs] ++-        pwords "it could belong to any of:"-    , vcat $ map (pretty . PrintRange) xs-    ]-  pretty (WrongContentBlock b _)      = fsep . pwords $-    case b of-      PostulateBlock -> "A postulate block can only contain type signatures, possibly under keyword instance"-      DataBlock -> "A data definition can only contain type signatures, possibly under keyword instance"-      _ -> "Unexpected declaration"-  pretty (PragmaNoTerminationCheck _) = fsep $-    pwords "Pragma {-# NO_TERMINATION_CHECK #-} has been removed.  To skip the termination check, label your definitions either as {-# TERMINATING #-} or {-# NON_TERMINATING #-}."-  pretty (InvalidMeasureMutual _) = fsep $-    pwords "In a mutual block, either all functions must have the same (or no) termination checking pragma."-  pretty (UnquoteDefRequiresSignature xs) = fsep $-    pwords "Missing type signatures for unquoteDef" ++ map pretty xs-  pretty (BadMacroDef nd) = fsep $-    [text $ declName nd] ++ pwords "are not allowed in macro blocks"-  pretty (NotAllowedInMutual nd) = fsep $-    [text $ declName nd] ++ pwords "are not allowed in mutual blocks"-  pretty (Codata _) = text $-    "The codata construction has been removed. " ++-    "Use the INFINITY builtin instead."-  pretty (DeclarationPanic s) = text s--instance Pretty DeclarationWarning where-  pretty (UnknownNamesInFixityDecl xs) = fsep $-    pwords "The following names are not declared in the same scope as their syntax or fixity declaration (i.e., either not in scope at all, imported from another module, or declared in a super module):" ++ map pretty xs-  pretty (UnknownFixityInMixfixDecl xs) = fsep $-    pwords "The following mixfix names do not have an associated fixity declaration:" ++ map pretty xs-  pretty (UnknownNamesInPolarityPragmas xs) = fsep $-    pwords "The following names are not declared in the same scope as their polarity pragmas (they could for instance be out of scope, imported from another module, or declared in a super module):" ++ map pretty xs-  pretty (PolarityPragmasButNotPostulates xs) = fsep $-    pwords "Polarity pragmas have been given for the following identifiers which are not postulates:" ++ map pretty xs-  pretty (UselessPrivate _)      = fsep $-    pwords "Using private here has no effect. Private applies only to declarations that introduce new identifiers into the module, like type signatures and data, record, and module declarations."-  pretty (UselessAbstract _)      = fsep $-    pwords "Using abstract here has no effect. Abstract applies to only definitions like data definitions, record type definitions and function clauses."-  pretty (UselessInstance _)      = fsep $-    pwords "Using instance here has no effect. Instance applies only to declarations that introduce new identifiers into the module, like type signatures and axioms."-  pretty (EmptyMutual    _) = fsep $ pwords "Empty mutual block."-  pretty (EmptyAbstract  _) = fsep $ pwords "Empty abstract block."-  pretty (EmptyPrivate   _) = fsep $ pwords "Empty private block."-  pretty (EmptyInstance  _) = fsep $ pwords "Empty instance block."-  pretty (EmptyMacro     _) = fsep $ pwords "Empty macro block."-  pretty (EmptyPostulate _) = fsep $ pwords "Empty postulate block."-  pretty (InvalidTerminationCheckPragma _) = fsep $-    pwords "Termination checking pragmas can only precede a function definition or a mutual block (that contains a function definition)."-  pretty (InvalidNoPositivityCheckPragma _) = fsep $-    pwords "No positivity checking pragmas can only precede a data/record definition or a mutual block (that contains a data/record definition)."-  pretty (InvalidCatchallPragma _) = fsep $-    pwords "The CATCHALL pragma can only precede a function clause."--declName :: NiceDeclaration -> String-declName Axiom{}             = "Postulates"-declName NiceField{}         = "Fields"-declName NiceMutual{}        = "Mutual blocks"-declName NiceModule{}        = "Modules"-declName NiceModuleMacro{}   = "Modules"-declName NiceOpen{}          = "Open declarations"-declName NiceImport{}        = "Import statements"-declName NicePragma{}        = "Pragmas"-declName PrimitiveFunction{} = "Primitive declarations"-declName NicePatternSyn{}    = "Pattern synonyms"-declName NiceUnquoteDecl{}   = "Unquoted declarations"-declName NiceUnquoteDef{}    = "Unquoted definitions"-declName NiceRecSig{}        = "Records"-declName NiceDataSig{}       = "Data types"-declName NiceFunClause{}     = "Functions without a type signature"-declName FunSig{}            = "Type signatures"-declName FunDef{}            = "Function definitions"-declName RecDef{}            = "Records"-declName DataDef{}           = "Data types"--{---------------------------------------------------------------------------    The niceifier- --------------------------------------------------------------------------}--data InMutual-  = InMutual    -- ^ we are nicifying a mutual block-  | NotInMutual -- ^ we are nicifying decls not in a mutual block-    deriving (Eq, Show)---- | The kind of the forward declaration, remembering the parameters.--data DataRecOrFun-  = DataName { kindPosCheck :: PositivityCheck, kindParams :: Params }-    -- ^ Name of a data type with parameters.-  | RecName  { kindPosCheck :: PositivityCheck, kindParams :: Params }-    -- ^ Name of a record type with parameters.-  | FunName  TerminationCheck-    -- ^ Name of a function.-  deriving Data---- Ignore pragmas when checking equality-instance Eq DataRecOrFun where-  DataName _ p == DataName _ q = p == q-  RecName  _ p == RecName  _ q = p == q-  FunName  _   == FunName  _   = True-  _            == _            = False--type Params = [Arg BoundName]--instance Show DataRecOrFun where-  show (DataName _ n) = "data type" --  "with " ++ show n ++ " visible parameters"-  show (RecName _ n)  = "record type" -- "with " ++ show n ++ " visible parameters"-  show (FunName{})    = "function"--isFunName :: DataRecOrFun -> Bool-isFunName (FunName{}) = True-isFunName _           = False--sameKind :: DataRecOrFun -> DataRecOrFun -> Bool-sameKind DataName{} DataName{} = True-sameKind RecName{} RecName{} = True-sameKind FunName{} FunName{} = True-sameKind _ _ = False--terminationCheck :: DataRecOrFun -> TerminationCheck-terminationCheck (FunName tc) = tc-terminationCheck _            = TerminationCheck--positivityCheck :: DataRecOrFun -> PositivityCheck-positivityCheck (DataName pc _) = pc-positivityCheck (RecName pc _)  = pc-positivityCheck _               = True---- | Check that declarations in a mutual block are consistently---   equipped with MEASURE pragmas, or whether there is a---   NO_TERMINATION_CHECK pragma.-combineTermChecks :: Range -> [TerminationCheck] -> Nice TerminationCheck-combineTermChecks r tcs = loop tcs where-  loop :: [TerminationCheck] -> Nice TerminationCheck-  loop []         = return TerminationCheck-  loop (tc : tcs) = do-    let failure r = throwError $ InvalidMeasureMutual r-    tc' <- loop tcs-    case (tc, tc') of-      (TerminationCheck      , tc'                   ) -> return tc'-      (tc                    , TerminationCheck      ) -> return tc-      (NonTerminating        , NonTerminating        ) -> return NonTerminating-      (NoTerminationCheck    , NoTerminationCheck    ) -> return NoTerminationCheck-      (NoTerminationCheck    , Terminating           ) -> return Terminating-      (Terminating           , NoTerminationCheck    ) -> return Terminating-      (Terminating           , Terminating           ) -> return Terminating-      (TerminationMeasure{}  , TerminationMeasure{}  ) -> return tc-      (TerminationMeasure r _, NoTerminationCheck    ) -> failure r-      (TerminationMeasure r _, Terminating           ) -> failure r-      (NoTerminationCheck    , TerminationMeasure r _) -> failure r-      (Terminating           , TerminationMeasure r _) -> failure r-      (TerminationMeasure r _, NonTerminating        ) -> failure r-      (NonTerminating        , TerminationMeasure r _) -> failure r-      (NoTerminationCheck    , NonTerminating        ) -> failure r-      (Terminating           , NonTerminating        ) -> failure r-      (NonTerminating        , NoTerminationCheck    ) -> failure r-      (NonTerminating        , Terminating           ) -> failure r---- | Check that the parameters of the data/record definition---   match the parameters of the corresponding signature.------   The definition may omit some hidden parameters.---   The names need to match.---   The types are not checked here.------   Precondition: the signature and definition have the same kind (data/record/fun).----matchParameters-  :: Name          -- ^ The data/record name.-  -> DataRecOrFun  -- ^ The data/record signature.-  -> DataRecOrFun  -- ^ The parameters as given in the data/record definition.-  -> Nice ()-matchParameters _ FunName{} FunName{} = return ()-matchParameters x sig def = loop (kindParams sig) (kindParams def)-  where-  failure = throwError $ WrongParameters x (kindParams sig) (kindParams def)-  loop hs     []     = unless (all notVisible hs) failure-  loop []     (_:_)  = failure-  loop (h:hs) (j:js)-    | h == j                  = loop hs js-    | notVisible h, visible j = loop hs (j:js)-    | otherwise               = failure---- | Nicifier monad.---   Preserve the state when throwing an exception.--newtype Nice a = Nice { unNice :: NiceEnv -> (Either DeclarationException a, NiceEnv) }---- We have to hand-roll the instances ourselves, since the automagic does not--- work for @Nice a = State s (Except e a)@, only for the usual--- @Nice a = StateT s (Except e) a@.--instance Functor Nice where-  fmap f m = Nice $ \ s ->-    let (r, s') = unNice m s in-    case r of-      Left  e -> (Left e, s')-      Right a -> (Right (f a), s')--instance Applicative Nice where-  pure a = Nice $ \ s -> (Right a, s)-  (<*>)  = ap--instance Monad Nice where-  return = pure-  m >>= k  = Nice $ \ s ->-    let (r, s') = unNice m s in-    case r of-      Left e  -> (Left e, s')-      Right a -> unNice (k a) s'--instance MonadState NiceEnv Nice where-  state f  = Nice $ \ s -> first Right $ f s-  -- get = Nice $ \ s -> (Right s, s)  -- Subsumed by state--instance MonadError DeclarationException Nice where-  throwError e   = Nice $ \ s -> (Left e, s)-  catchError m h = Nice $ \ s ->-    let (r, s') = unNice m s in-    case r of-      Left e  -> unNice (h e) s'-      Right a -> (Right a, s')---- | Run a Nicifier computation, return result and warnings---   (in chronological order).-runNice :: Nice a -> (Either DeclarationException a, NiceWarnings)-runNice m = second (reverse . niceWarn) $ unNice m initNiceEnv---- | Nicifier state.--data NiceEnv = NiceEnv-  { _loneSigs :: LoneSigs-    -- ^ Lone type signatures that wait for their definition.-  , _termChk  :: TerminationCheck-    -- ^ Termination checking pragma waiting for a definition.-  , _posChk   :: PositivityCheck-    -- ^ Positivity checking pragma waiting for a definition.-  , _catchall :: Catchall-    -- ^ Catchall pragma waiting for a function clause.-  , fixs     :: Fixities-  , pols     :: Polarities-  , niceWarn :: NiceWarnings-    -- ^ Stack of warnings. Head is last warning.-  }--type LoneSigs   = Map Name DataRecOrFun-type Fixities   = Map Name Fixity'-type Polarities = Map Name [Occurrence]-type NiceWarnings = [DeclarationWarning]-     -- ^ Stack of warnings. Head is last warning.---- | Initial nicifier state.--initNiceEnv :: NiceEnv-initNiceEnv = NiceEnv-  { _loneSigs = empty-  , _termChk  = TerminationCheck-  , _posChk   = True-  , _catchall = False-  , fixs      = empty-  , pols      = empty-  , niceWarn  = []-  }---- * Handling the lone signatures, stored to infer mutual blocks.---- | Lens for field '_loneSigs'.--loneSigs :: Lens' LoneSigs NiceEnv-loneSigs f e = f (_loneSigs e) <&> \ s -> e { _loneSigs = s }---- | Adding a lone signature to the state.--addLoneSig :: Name -> DataRecOrFun -> Nice ()-addLoneSig x k = loneSigs %== \ s -> do-   let (mr, s') = Map.insertLookupWithKey (\ k new old -> new) x k s-   case mr of-     Nothing -> return s'-     Just{}  -> throwError $ DuplicateDefinition x---- | Remove a lone signature from the state.--removeLoneSig :: Name -> Nice ()-removeLoneSig x = loneSigs %= Map.delete x---- | Search for forward type signature.--getSig :: Name -> Nice (Maybe DataRecOrFun)-getSig x = Map.lookup x <$> use loneSigs---- | Check that no lone signatures are left in the state.--noLoneSigs :: Nice Bool-noLoneSigs = null <$> use loneSigs---- | Ensure that all forward declarations have been given a definition.--checkLoneSigs :: [(Name, a)] -> Nice ()-checkLoneSigs xs =-  case xs of-    []       -> return ()-    (x, _):_ -> throwError $ MissingDefinition x---- | Lens for field '_termChk'.--terminationCheckPragma :: Lens' TerminationCheck NiceEnv-terminationCheckPragma f e = f (_termChk e) <&> \ s -> e { _termChk = s }--withTerminationCheckPragma :: TerminationCheck -> Nice a -> Nice a-withTerminationCheckPragma tc f = do-  tc_old <- use terminationCheckPragma-  terminationCheckPragma .= tc-  result <- f-  terminationCheckPragma .= tc_old-  return result---- | Lens for field '_posChk'.--positivityCheckPragma :: Lens' PositivityCheck NiceEnv-positivityCheckPragma f e = f (_posChk e) <&> \ s -> e { _posChk = s }--withPositivityCheckPragma :: PositivityCheck -> Nice a -> Nice a-withPositivityCheckPragma pc f = do-  pc_old <- use positivityCheckPragma-  positivityCheckPragma .= pc-  result <- f-  positivityCheckPragma .= pc_old-  return result---- | Lens for field '_catchall'.--catchallPragma :: Lens' Catchall NiceEnv-catchallPragma f e = f (_catchall e) <&> \ s -> e { _catchall = s }---- | Get current catchall pragma, and reset it for the next clause.--popCatchallPragma :: Nice Catchall-popCatchallPragma = do-  ca <- use catchallPragma-  catchallPragma .= False-  return ca--withCatchallPragma :: Catchall -> Nice a -> Nice a-withCatchallPragma ca f = do-  ca_old <- use catchallPragma-  catchallPragma .= ca-  result <- f-  catchallPragma .= ca_old-  return result---- | Add a new warning.-niceWarning :: DeclarationWarning -> Nice ()-niceWarning w = modify $ \ st -> st { niceWarn = w : niceWarn st }---- | Check whether name is not "_" and return its fixity.-getFixity :: Name -> Nice Fixity'-getFixity x = Map.findWithDefault noFixity' x <$> gets fixs -- WAS: defaultFixity'---- | Fail if the name is @_@. Otherwise the name's polarity, if any,--- is removed from the state and returned.-getPolarity :: Name -> Nice (Maybe [Occurrence])-getPolarity x = do-  p <- gets (Map.lookup x . pols)-  modify (\s -> s { pols = Map.delete x (pols s) })-  return p--data DeclKind-    = LoneSig DataRecOrFun Name-    | LoneDefs DataRecOrFun [Name]-    | OtherDecl-  deriving (Eq, Show)--declKind :: NiceDeclaration -> DeclKind-declKind (FunSig _ _ _ _ _ _ _ tc x _)    = LoneSig (FunName tc) x-declKind (NiceRecSig _ _ _ _ pc x pars _) = LoneSig (RecName pc $ parameters pars) x-declKind (NiceDataSig _ _ _ _ pc x pars _)= LoneSig (DataName pc $ parameters pars) x-declKind (FunDef _ _ _ _ _ tc x _)        = LoneDefs (FunName tc) [x]-declKind (DataDef _ _ _ pc x pars _)      = LoneDefs (DataName pc $ parameters pars) [x]-declKind (RecDef _ _ _ pc x _ _ _ pars _) = LoneDefs (RecName pc $ parameters pars) [x]-declKind (NiceUnquoteDef _ _ _ _ tc xs _) = LoneDefs (FunName tc) xs-declKind Axiom{}                          = OtherDecl-declKind NiceField{}                      = OtherDecl-declKind PrimitiveFunction{}              = OtherDecl-declKind NiceMutual{}                     = OtherDecl-declKind NiceModule{}                     = OtherDecl-declKind NiceModuleMacro{}                = OtherDecl-declKind NiceOpen{}                       = OtherDecl-declKind NiceImport{}                     = OtherDecl-declKind NicePragma{}                     = OtherDecl-declKind NiceFunClause{}                  = OtherDecl-declKind NicePatternSyn{}                 = OtherDecl-declKind NiceUnquoteDecl{}                = OtherDecl---- | Compute parameters of a data or record signature or definition.-parameters :: [LamBinding] -> Params-parameters = List.concatMap $ \case-  DomainFree i x                                      -> [Arg i x]-  DomainFull (TypedBindings _ (Arg _ TLet{}))         -> []-  DomainFull (TypedBindings _ (Arg i (TBind _ xs _))) -> for xs $ \ (WithHiding h x) ->-    mergeHiding $ WithHiding h $ Arg i x---- | Main.-niceDeclarations :: [Declaration] -> Nice [NiceDeclaration]-niceDeclarations ds = do--  -- Get fixity and syntax declarations.-  (fixs, polarities) <- fixitiesAndPolarities ds-  let declared    = Set.fromList (concatMap declaredNames ds)--  -- If we have names in fixity declarations-  -- which are not defined in the appropriate scope,-  -- raise a warning and delete them from fixs.-  fixs <- ifNull (Map.keysSet fixs Set.\\ declared) (return fixs) $ \ unknownFixs -> do-    niceWarning $ UnknownNamesInFixityDecl $ Set.toList unknownFixs-    -- Note: Data.Map.restrictKeys requires containers >= 0.5.8.2-    -- return $ Map.restrictKeys fixs declared-    return $ Map.filterWithKey (\ k _ -> Set.member k declared) fixs--  -- Same for undefined names in polarity declarations.-  polarities <- ifNull (Map.keysSet polarities Set.\\ declared) (return polarities) $-    \ unknownPols -> do-      niceWarning $ UnknownNamesInPolarityPragmas $ Set.toList unknownPols-      -- Note: Data.Map.restrictKeys requires containers >= 0.5.8.2-      -- return $ Map.restrictKeys polarities declared-      return $ Map.filterWithKey (\ k _ -> Set.member k declared) polarities--  -- If we have mixfix identifiers without a corresponding fixity-  -- declaration, we raise a warning-  ifNull (Set.filter isOpenMixfix declared Set.\\ Map.keysSet fixs) (return ()) $-    niceWarning . UnknownFixityInMixfixDecl . Set.toList--  -- Run the nicifier in an initial environment of fixity decls-  -- and polarities.  But keep the warnings.-  st <- get-  put $ initNiceEnv { fixs = fixs, pols = polarities, niceWarn = niceWarn st }-  ds <- nice ds--  -- Check that every polarity pragma was used.-  unlessNullM (Map.keys <$> gets pols) $ \ unusedPolarities -> do-    niceWarning $ PolarityPragmasButNotPostulates unusedPolarities--  -- Check that every signature got its definition.-  checkLoneSigs . Map.toList =<< use loneSigs--  -- Note that loneSigs is ensured to be empty.-  -- (Important, since inferMutualBlocks also uses loneSigs state).-  res <- inferMutualBlocks ds--  -- Restore the old state, but keep the warnings.-  warns <- gets niceWarn-  put $ st { niceWarn = warns }-  return res--  where-    -- Compute the names defined in a declaration.-    -- We stay in the current scope, i.e., do not go into modules.-    declaredNames :: Declaration -> [Name]-    declaredNames d = case d of-      TypeSig _ x _        -> [x]-      Field _ x _          -> [x]-      FunClause (LHS p [] []) _ _ _-        | IdentP (QName x) <- removeSingletonRawAppP p-                           -> [x]-      FunClause{}          -> []-      DataSig _ _ x _ _    -> [x]-      Data _ _ x _ _ cs    -> x : concatMap declaredNames cs-      RecordSig _ x _ _    -> [x]-      Record _ x _ _ c _ _ _ -> x : foldMap (:[]) (fst <$> c)-      Infix _ _            -> []-      Syntax _ _           -> []-      PatternSyn _ x _ _   -> [x]-      Mutual    _ ds       -> concatMap declaredNames ds-      Abstract  _ ds       -> concatMap declaredNames ds-      Private _ _ ds       -> concatMap declaredNames ds-      InstanceB _ ds       -> concatMap declaredNames ds-      Macro     _ ds       -> concatMap declaredNames ds-      Postulate _ ds       -> concatMap declaredNames ds-      Primitive _ ds       -> concatMap declaredNames ds-      Open{}               -> []-      Import{}             -> []-      ModuleMacro{}        -> []-      Module{}             -> []-      UnquoteDecl _ xs _   -> xs-      UnquoteDef{}         -> []-      Pragma{}             -> []--    inferMutualBlocks :: [NiceDeclaration] -> Nice [NiceDeclaration]-    inferMutualBlocks [] = return []-    inferMutualBlocks (d : ds) =-      case declKind d of-        OtherDecl    -> (d :) <$> inferMutualBlocks ds-        LoneDefs{}   -> (d :) <$> inferMutualBlocks ds  -- Andreas, 2017-10-09, issue #2576: report error in ConcreteToAbstract-        LoneSig k x  -> do-          addLoneSig x k-          ((tcs, pcs), (ds0, ds1)) <- untilAllDefined ([terminationCheck k], [positivityCheck k]) ds-          tc <- combineTermChecks (getRange d) tcs-          (NiceMutual (getRange (d : ds0)) tc (and pcs) (d : ds0) :) <$> inferMutualBlocks ds1-      where-        untilAllDefined :: ([TerminationCheck], [PositivityCheck])-                        -> [NiceDeclaration]-                        -> Nice (([TerminationCheck], [PositivityCheck]), ([NiceDeclaration], [NiceDeclaration]))-        untilAllDefined (tc, pc) ds = do-          done <- noLoneSigs-          if done then return ((tc, pc), ([], ds)) else-            case ds of-              []     -> __IMPOSSIBLE__ <$ (checkLoneSigs . Map.toList =<< use loneSigs)-              d : ds -> case declKind d of-                LoneSig k x -> do-                  addLoneSig x k-                  cons d (untilAllDefined (terminationCheck k : tc, positivityCheck k : pc) ds)-                LoneDefs k xs -> do-                  mapM_ removeLoneSig xs-                  cons d (untilAllDefined (terminationCheck k : tc, positivityCheck k : pc) ds)-                OtherDecl   -> cons d (untilAllDefined (tc, pc) ds)-          where-            -- ASR (26 December 2015): Type annotated version of the @cons@ function.-            -- cons d = fmap $-            --            (id :: (([TerminationCheck], [PositivityCheck]) -> ([TerminationCheck], [PositivityCheck])))-            --            *** (d :)-            --            *** (id :: [NiceDeclaration] -> [NiceDeclaration])-            cons d = fmap (id *** (d :) *** id)--    notMeasure TerminationMeasure{} = False-    notMeasure _ = True--    nice :: [Declaration] -> Nice [NiceDeclaration]-    nice [] = return []-    nice ds = do-      (xs , ys) <- nice1 ds-      (xs ++) <$> nice ys--    nice1 :: [Declaration] -> Nice ([NiceDeclaration], [Declaration])-    nice1 []     = return ([], []) -- Andreas, 2017-09-16, issue #2759: no longer __IMPOSSIBLE__-    nice1 (d:ds) = do-      let justWarning w = do niceWarning w; nice1 ds--      case d of--        (TypeSig info x t)            -> do-          termCheck <- use terminationCheckPragma-          fx <- getFixity x-          -- register x as lone type signature, to recognize clauses later-          addLoneSig x (FunName termCheck)-          return ([FunSig (getRange d) fx PublicAccess ConcreteDef NotInstanceDef NotMacroDef info termCheck x t] , ds)--        (FunClause lhs _ _ _)         -> do-          termCheck <- use terminationCheckPragma-          catchall  <- popCatchallPragma-          xs <- map fst . filter (isFunName . snd) . Map.toList <$> use loneSigs-          -- for each type signature 'x' waiting for clauses, we try-          -- if we have some clauses for 'x'-          fixs <- gets fixs-          case [ (x, (fits, rest))-               | x <- xs-               , let (fits, rest) =-                      -- Anonymous declarations only have 1 clause each!-                      if isNoName x then ([d], ds)-                      else span (couldBeFunClauseOf (Map.lookup x fixs) x) (d : ds)-               , not (null fits)-               ] of--            -- case: clauses match none of the sigs-            [] -> case lhs of-              -- Subcase: The lhs is single identifier (potentially anonymous).-              -- Treat it as a function clause without a type signature.-              LHS p [] [] | Just x <- isSingleIdentifierP p -> do-                d  <- mkFunDef defaultArgInfo termCheck x Nothing [d] -- fun def without type signature is relevant-                return (d , ds)-              -- Subcase: The lhs is a proper pattern.-              -- This could be a let-pattern binding. Pass it on.-              -- A missing type signature error might be raise in ConcreteToAbstract-              _ -> do-                return ([NiceFunClause (getRange d) PublicAccess ConcreteDef termCheck catchall d] , ds)--            -- case: clauses match exactly one of the sigs-            [(x,(fits,rest))] -> do-               removeLoneSig x-               ds  <- expandEllipsis fits-               cs  <- mkClauses x ds False-               fx  <- getFixity x-               return ([FunDef (getRange fits) fits fx ConcreteDef NotInstanceDef termCheck x cs] , rest)--            -- case: clauses match more than one sigs (ambiguity)-            l -> throwError $ AmbiguousFunClauses lhs $ reverse $ map fst l -- "ambiguous function clause; cannot assign it uniquely to one type signature"--        Field{}                       -> (,ds) <$> niceAxioms FieldBlock [ d ]-        DataSig r CoInductive _ _ _   -> throwError (Codata r)-        Data r CoInductive _ _ _ _    -> throwError (Codata r)--        (DataSig r Inductive x tel t) -> do-          pc <- use positivityCheckPragma-          addLoneSig x (DataName pc $ parameters tel)-          (,) <$> dataOrRec pc DataDef NiceDataSig (niceAxioms DataBlock) r x (Just (tel, t)) Nothing-              <*> return ds--        (Data r Inductive x tel mt cs) -> do-          pc <- use positivityCheckPragma-          mt <- defaultTypeSig (DataName pc $ parameters tel) x mt-          (,) <$> dataOrRec pc DataDef NiceDataSig (niceAxioms DataBlock) r x ((tel,) <$> mt) (Just (tel, cs))-              <*> return ds--        (RecordSig r x tel t)         -> do-          pc <- use positivityCheckPragma-          addLoneSig x (RecName pc $ parameters tel)-          fx <- getFixity x-          return ([NiceRecSig r fx PublicAccess ConcreteDef pc x tel t] , ds)--        (Record r x i e c tel mt cs)   -> do-          pc <- use positivityCheckPragma-          mt <- defaultTypeSig (RecName pc $ parameters tel) x mt-          c <- traverse (\(cname, cinst) -> do fix <- getFixity cname; return (ThingWithFixity cname fix, cinst)) c-          (,) <$> dataOrRec pc (\ r f a pc x tel cs -> RecDef r f a pc x i e c tel cs) NiceRecSig-                    niceDeclarations r x ((tel,) <$> mt) (Just (tel, cs))-              <*> return ds--        Mutual r []  -> justWarning $ EmptyMutual r-        Mutual r ds' ->-          (,ds) <$> (singleton <$> (mkOldMutual r =<< nice ds'))--        Abstract r []  -> justWarning $ EmptyAbstract r-        Abstract r ds' ->-          (,ds) <$> (abstractBlock r =<< nice ds')--        Private r UserWritten []  -> justWarning $ EmptyPrivate r-        Private r o ds' ->-          (,ds) <$> (privateBlock r o =<< nice ds')--        InstanceB r []  -> justWarning $ EmptyInstance r-        InstanceB r ds' ->-          (,ds) <$> (instanceBlock r =<< nice ds')--        Macro r []  -> justWarning $ EmptyMacro r-        Macro r ds' ->-          (,ds) <$> (macroBlock r =<< nice ds')--        Postulate r []  -> justWarning $ EmptyPostulate r-        Postulate _ ds' ->-          (,ds) <$> (mapM setPolarity =<< niceAxioms PostulateBlock ds')-          where-          setPolarity (Axiom r f acc a i arg Nothing x e) = do-            mp <- getPolarity x-            return (Axiom r f acc a i arg mp x e)-          setPolarity (Axiom _ _ _ _ _ _ (Just _) _ _) = __IMPOSSIBLE__-          setPolarity d = return d--        Primitive _ ds' -> (,ds) <$> (map toPrim <$> niceAxioms PrimitiveBlock ds')--        Module r x tel ds' -> return $-          ([NiceModule r PublicAccess ConcreteDef x tel ds'] , ds)--        ModuleMacro r x modapp op is -> return $-          ([NiceModuleMacro r PublicAccess x modapp op is] , ds)--        -- Fixity and syntax declarations and polarity pragmas have-        -- already been processed.-        Infix _ _  -> return ([], ds)-        Syntax _ _ -> return ([], ds)--        PatternSyn r n as p -> do-          fx <- getFixity n-          return ([NicePatternSyn r fx n as p] , ds)-        Open r x is         -> return ([NiceOpen r x is] , ds)-        Import r x as op is -> return ([NiceImport r x as op is] , ds)--        UnquoteDecl r xs e -> do-          fxs <- mapM getFixity xs-          tc  <- use terminationCheckPragma-          return ([NiceUnquoteDecl r fxs PublicAccess ConcreteDef NotInstanceDef tc xs e] , ds)--        UnquoteDef r xs e -> do-          fxs  <- mapM getFixity xs-          sigs <- map fst . filter (isFunName . snd) . Map.toList <$> use loneSigs-          let missing = filter (`notElem` sigs) xs-          if null missing-            then do-              mapM_ removeLoneSig xs-              return ([NiceUnquoteDef r fxs PublicAccess ConcreteDef TerminationCheck xs e] , ds)-            else throwError $ UnquoteDefRequiresSignature missing--        Pragma p -> nicePragma p ds--    nicePragma :: Pragma -> [Declaration] -> Nice ([NiceDeclaration], [Declaration])--    nicePragma (TerminationCheckPragma r (TerminationMeasure _ x)) ds =-      if canHaveTerminationMeasure ds then-        withTerminationCheckPragma (TerminationMeasure r x) $ nice1 ds-      else do-        niceWarning $ InvalidTerminationCheckPragma r-        nice1 ds--    nicePragma (TerminationCheckPragma r NoTerminationCheck) ds =-      throwError $ PragmaNoTerminationCheck r--    nicePragma (TerminationCheckPragma r tc) ds =-      if canHaveTerminationCheckPragma ds then-        withTerminationCheckPragma tc $ nice1 ds-      else do-        niceWarning $ InvalidTerminationCheckPragma r-        nice1 ds--    nicePragma (CatchallPragma r) ds =-      if canHaveCatchallPragma ds then-        withCatchallPragma True $ nice1 ds-      else do-        niceWarning $ InvalidCatchallPragma r-        nice1 ds--    nicePragma (NoPositivityCheckPragma r) ds =-      if canHaveNoPositivityCheckPragma ds then-        withPositivityCheckPragma False $ nice1 ds-      else do-        niceWarning $ InvalidNoPositivityCheckPragma r-        nice1 ds--    nicePragma (PolarityPragma{}) ds = return ([], ds)--    nicePragma p ds = return ([NicePragma (getRange p) p], ds)--    canHaveTerminationMeasure :: [Declaration] -> Bool-    canHaveTerminationMeasure [] = False-    canHaveTerminationMeasure (d:ds) = case d of-      TypeSig{} -> True-      (Pragma p) | isAttachedPragma p -> canHaveTerminationMeasure ds-      _         -> False--    canHaveTerminationCheckPragma :: [Declaration] -> Bool-    canHaveTerminationCheckPragma []     = False-    canHaveTerminationCheckPragma (d:ds) = case d of-      Mutual _ ds   -> any (canHaveTerminationCheckPragma . singleton) ds-      TypeSig{}     -> True-      FunClause{}   -> True-      UnquoteDecl{} -> True-      (Pragma p) | isAttachedPragma p -> canHaveTerminationCheckPragma ds-      _             -> False--    canHaveCatchallPragma :: [Declaration] -> Bool-    canHaveCatchallPragma []     = False-    canHaveCatchallPragma (d:ds) = case d of-      FunClause{} -> True-      (Pragma p) | isAttachedPragma p -> canHaveCatchallPragma ds-      _           -> False--    canHaveNoPositivityCheckPragma :: [Declaration] -> Bool-    canHaveNoPositivityCheckPragma []     = False-    canHaveNoPositivityCheckPragma (d:ds) = case d of-      Mutual _ ds                 -> any (canHaveNoPositivityCheckPragma . singleton) ds-      (Data _ Inductive _ _ _ _)  -> True-      (DataSig _ Inductive _ _ _) -> True-      Record{}                    -> True-      RecordSig{}                 -> True-      (Pragma p) | isAttachedPragma p -> canHaveNoPositivityCheckPragma ds-      _                           -> False--    -- Pragma that attaches to the following declaration.-    isAttachedPragma :: Pragma -> Bool-    isAttachedPragma p = case p of-      TerminationCheckPragma{}  -> True-      CatchallPragma{}          -> True-      NoPositivityCheckPragma{} -> True-      _                         -> False--    -- We could add a default type signature here, but at the moment we can't-    -- infer the type of a record or datatype, so better to just fail here.-    defaultTypeSig :: DataRecOrFun -> Name -> Maybe Expr -> Nice (Maybe Expr)-    defaultTypeSig k x t@Just{} = return t-    defaultTypeSig k x Nothing  = do-      caseMaybeM (getSig x) (return Nothing) $ \ k' -> do-        unless (sameKind k k') $ throwError $ WrongDefinition x k' k-        unless (k == k') $ matchParameters x k' k-        Nothing <$ removeLoneSig x--    dataOrRec-      :: forall a-      .  PositivityCheck-      -> (Range -> Fixity' -> IsAbstract -> PositivityCheck -> Name -> [LamBinding] -> [NiceConstructor] -> NiceDeclaration)-         -- ^ Construct definition.-      -> (Range -> Fixity' -> Access -> IsAbstract -> PositivityCheck -> Name -> [LamBinding] -> Expr -> NiceDeclaration)-         -- ^ Construct signature.-      -> ([a] -> Nice [NiceDeclaration])-         -- ^ Constructor checking.-      -> Range-      -> Name          -- ^ Data/record type name.-      -> Maybe ([LamBinding], Expr)    -- ^ Parameters and type.  If not @Nothing@ a signature is created.-      -> Maybe ([LamBinding], [a])     -- ^ Parameters and constructors.  If not @Nothing@, a definition body is created.-      -> Nice [NiceDeclaration]-    dataOrRec pc mkDef mkSig niceD r x mt mcs = do-      mds <- Trav.forM mcs $ \ (tel, cs) -> (tel,) <$> niceD cs-      f   <- getFixity x-      return $ catMaybes $-        [ mt  <&> \ (tel, t)  -> mkSig (fuseRange x t) f PublicAccess ConcreteDef pc x tel t-        , mds <&> \ (tel, ds) -> mkDef r f ConcreteDef pc x (caseMaybe mt tel $ const $ concatMap dropType tel) ds-          -- If a type is given (mt /= Nothing), we have to delete the types in @tel@-          -- for the data definition, lest we duplicate them.-        ]-      where-        -- | Drop type annotations and lets from bindings.-        dropType :: LamBinding -> [LamBinding]-        dropType (DomainFull (TypedBindings _r (Arg ai (TBind _ xs _)))) =-          map (mergeHiding . fmap (DomainFree ai)) xs-        dropType (DomainFull (TypedBindings _r (Arg _ TLet{}))) = []-        dropType b@DomainFree{} = [b]--    -- Translate axioms-    niceAxioms :: KindOfBlock -> [TypeSignatureOrInstanceBlock] -> Nice [NiceDeclaration]-    niceAxioms b ds = liftM List.concat $ mapM (niceAxiom b) ds--    niceAxiom :: KindOfBlock -> TypeSignatureOrInstanceBlock -> Nice [NiceDeclaration]-    niceAxiom b d = case d of-      TypeSig rel x t -> do-        fx <- getFixity x-        return [ Axiom (getRange d) fx PublicAccess ConcreteDef NotInstanceDef rel Nothing x t ]-      Field i x argt | b == FieldBlock -> do-        fx <- getFixity x-        return [ NiceField (getRange d) fx PublicAccess ConcreteDef i x argt ]-      InstanceB r decls -> do-        instanceBlock r =<< niceAxioms InstanceBlock decls-      Pragma p@(RewritePragma r _) -> do-        return [ NicePragma r p ]-      _ -> throwError $ WrongContentBlock b $ getRange d--    toPrim :: NiceDeclaration -> NiceDeclaration-    toPrim (Axiom r f p a i rel Nothing x t) = PrimitiveFunction r f p a x t-    toPrim _                               = __IMPOSSIBLE__--    -- Create a function definition.-    mkFunDef info termCheck x mt ds0 = do-      ds <- expandEllipsis ds0-      cs <- mkClauses x ds False-      f  <- getFixity x-      return [ FunSig (fuseRange x t) f PublicAccess ConcreteDef NotInstanceDef NotMacroDef info termCheck x t-             , FunDef (getRange ds0) ds0 f ConcreteDef NotInstanceDef termCheck x cs ]-        where-          t = case mt of-                Just t  -> t-                Nothing -> underscore (getRange x)--    underscore r = Underscore r Nothing---    expandEllipsis :: [Declaration] -> Nice [Declaration]-    expandEllipsis [] = return []-    expandEllipsis (d@(FunClause lhs@(LHS p _ _) _ _ _) : ds)-      | hasEllipsis p = (d :) <$> expandEllipsis ds-      | otherwise     = (d :) <$> expand (killRange p) ds-      where-        expand :: Pattern -> [Declaration] -> Nice [Declaration]-        expand _ [] = return []-        expand p (d : ds) = do-          case d of-            Pragma (CatchallPragma _) -> do-                  (d :) <$> expand p ds-            FunClause (LHS p0 eqs es) rhs wh ca -> do-              case hasEllipsis' p0 of-                ManyHoles -> throwError $ MultipleEllipses p0-                OneHole cxt -> do-                  -- Replace the ellipsis by @p@.-                  let p1 = cxt p-                  let d' = FunClause (LHS p1 eqs es) rhs wh ca-                  -- If we have with-expressions (es /= []) then the following-                  -- ellipses also get the additional patterns in p0.-                  (d' :) <$> expand (if null es then p else killRange p1) ds-                ZeroHoles _ -> do-                  -- We can have ellipses after a fun clause without.-                  -- They refer to the last clause that introduced new with-expressions.-                  -- Same here: If we have new with-expressions, the next ellipses will-                  -- refer to us.-                  -- Andreas, Jesper, 2017-05-13, issue #2578-                  -- Need to update the range also on the next with-patterns.-                  (d :) <$> expand (if null es then p else killRange p0) ds-            _ -> __IMPOSSIBLE__-    expandEllipsis _ = __IMPOSSIBLE__--    -- Turn function clauses into nice function clauses.-    mkClauses :: Name -> [Declaration] -> Catchall -> Nice [Clause]-    mkClauses _ [] _ = return []-    mkClauses x (Pragma (CatchallPragma r) : cs) True  = do-      niceWarning $ InvalidCatchallPragma r-      mkClauses x cs True-    mkClauses x (Pragma (CatchallPragma r) : cs) False = do-      when (null cs) $ niceWarning $ InvalidCatchallPragma r-      mkClauses x cs True--    mkClauses x (FunClause lhs rhs wh ca : cs) catchall-      | null (lhsWithExpr lhs) || hasEllipsis lhs  =-      (Clause x (ca || catchall) lhs rhs wh [] :) <$> mkClauses x cs False   -- Will result in an error later.--    mkClauses x (FunClause lhs rhs wh ca : cs) catchall = do-      when (null withClauses) $ throwError $ MissingWithClauses x-      wcs <- mkClauses x withClauses False-      (Clause x (ca || catchall) lhs rhs wh wcs :) <$> mkClauses x cs' False-      where-        (withClauses, cs') = subClauses cs--        -- A clause is a subclause if the number of with-patterns is-        -- greater or equal to the current number of with-patterns plus the-        -- number of with arguments.-        numWith = numberOfWithPatterns p + length es where LHS p _ es = lhs--        subClauses :: [Declaration] -> ([Declaration],[Declaration])-        subClauses (c@(FunClause (LHS p0 _ _) _ _ _) : cs)-         | isEllipsis p0 ||-           numberOfWithPatterns p0 >= numWith = mapFst (c:) (subClauses cs)-         | otherwise                           = ([], c:cs)-        subClauses (c@(Pragma (CatchallPragma r)) : cs) = case subClauses cs of-          ([], cs') -> ([], c:cs')-          (cs, cs') -> (c:cs, cs')-        subClauses [] = ([],[])-        subClauses _  = __IMPOSSIBLE__-    mkClauses _ _ _ = __IMPOSSIBLE__--    -- for finding clauses for a type sig in mutual blocks-    couldBeFunClauseOf :: Maybe Fixity' -> Name -> Declaration -> Bool-    couldBeFunClauseOf mFixity x (Pragma (CatchallPragma{})) = True-    couldBeFunClauseOf mFixity x (FunClause (LHS p _ _) _ _ _) = hasEllipsis p ||-      let-      pns        = patternNames p-      xStrings   = nameStringParts x-      patStrings = concatMap nameStringParts pns-      in---          trace ("x = " ++ prettyShow x) $---          trace ("pns = " ++ show pns) $---          trace ("xStrings = " ++ show xStrings) $---          trace ("patStrings = " ++ show patStrings) $---          trace ("mFixity = " ++ show mFixity) $-      case (headMaybe pns, mFixity) of-        -- first identifier in the patterns is the fun.symbol?-        (Just y, _) | x == y -> True -- trace ("couldBe since y = " ++ prettyShow y) $ True-        -- are the parts of x contained in p-        _ | xStrings `isSublistOf` patStrings -> True -- trace ("couldBe since isSublistOf") $ True-        -- looking for a mixfix fun.symb-        (_, Just fix) ->  -- also matches in case of a postfix-           let notStrings = stringParts (theNotation fix)-           in  -- trace ("notStrings = " ++ show notStrings) $-               -- trace ("patStrings = " ++ show patStrings) $-               (not $ null notStrings) && (notStrings `isSublistOf` patStrings)-        -- not a notation, not first id: give up-        _ -> False -- trace ("couldBe not (case default)") $ False-    couldBeFunClauseOf _ _ _ = False -- trace ("couldBe not (fun default)") $ False--    isSingleIdentifierP :: Pattern -> Maybe Name-    isSingleIdentifierP p = case removeSingletonRawAppP p of-      IdentP (QName x) -> Just x-      WildP r          -> Just $ noName r-      _                -> Nothing--    removeSingletonRawAppP :: Pattern -> Pattern-    removeSingletonRawAppP p = case p of-        RawAppP _ [p'] -> removeSingletonRawAppP p'-        ParenP _ p'    -> removeSingletonRawAppP p'-        _ -> p--    -- Make an old style mutual block from a list of mutual declarations-    mkOldMutual :: Range -> [NiceDeclaration] -> Nice NiceDeclaration-    mkOldMutual r ds = do-        -- Check that there aren't any missing definitions-        checkLoneSigs loneNames--        -- Check that there are no declarations that aren't allowed in old style mutual blocks-        forM_ ds $ \case-          -- Andreas, 2013-11-23 allow postulates in mutual blocks-          Axiom{} -> return ()-          -- Andreas, 2017-10-09, issue #2576, raise error about missing type signature-          -- in ConcreteToAbstract rather than here.-          NiceFunClause{} -> return ()-          -- Andreas, 2018-05-11, issue #3052, allow pat.syn.s in mutual blocks-          NicePatternSyn{} -> return ()-          -- Otherwise, only categorized signatures and definitions are allowed (data/record/fun)-          d -> when (declKind d == OtherDecl) $ throwError $ NotAllowedInMutual d--        -- Compute termination checking flag for mutual block-        tc0 <- use terminationCheckPragma-        let tcs = map termCheck ds-        tc <- combineTermChecks r (tc0:tcs)--        -- Compute positivity checking flag for mutual block-        pc0 <- use positivityCheckPragma-        let pc :: PositivityCheck-            pc = pc0 && all positivityCheckOldMutual ds--        return $ NiceMutual r tc pc $ sigs ++ other-      where-        -- Pull type signatures to the top-        (sigs, other) = List.partition isTypeSig ds-        isTypeSig Axiom{}                     = True-        isTypeSig d | LoneSig{} <- declKind d = True-        isTypeSig _                           = False--        sigNames  = [ (x, k) | LoneSig k x <- map declKind ds ]-        defNames  = [ (x, k) | LoneDefs k xs <- map declKind ds, x <- xs ]-        -- compute the set difference with equality just on names-        loneNames = [ (x, k) | (x, k) <- sigNames, List.all ((x /=) . fst) defNames ]--        -- Andreas, 2013-02-28 (issue 804):-        -- do not termination check a mutual block if any of its-        -- inner declarations comes with a {-# NO_TERMINATION_CHECK #-}-        termCheck (FunSig _ _ _ _ _ _ _ tc _ _)      = tc-        termCheck (FunDef _ _ _ _ _ tc _ _)          = tc-        -- ASR (28 December 2015): Is this equation necessary?-        termCheck (NiceMutual _ tc _ _)              = __IMPOSSIBLE__-        termCheck (NiceUnquoteDecl _ _ _ _ _ tc _ _) = tc-        termCheck (NiceUnquoteDef _ _ _ _ tc _ _)    = tc-        termCheck Axiom{}                            = TerminationCheck-        termCheck NiceField{}                        = TerminationCheck-        termCheck PrimitiveFunction{}                = TerminationCheck-        termCheck NiceModule{}                       = TerminationCheck-        termCheck NiceModuleMacro{}                  = TerminationCheck-        termCheck NiceOpen{}                         = TerminationCheck-        termCheck NiceImport{}                       = TerminationCheck-        termCheck NicePragma{}                       = TerminationCheck-        termCheck NiceRecSig{}                       = TerminationCheck-        termCheck NiceDataSig{}                      = TerminationCheck-        termCheck NiceFunClause{}                    = TerminationCheck-        termCheck DataDef{}                          = TerminationCheck-        termCheck RecDef{}                           = TerminationCheck-        termCheck NicePatternSyn{}                   = TerminationCheck--        -- ASR (26 December 2015): Do not positivity check a mutual-        -- block if any of its inner declarations comes with a-        -- NO_POSITIVITY_CHECK pragma. See Issue 1614.-        positivityCheckOldMutual :: NiceDeclaration -> PositivityCheck-        positivityCheckOldMutual (DataDef _ _ _ pc _ _ _)      = pc-        positivityCheckOldMutual (NiceDataSig _ _ _ _ pc _ _ _)= pc-        positivityCheckOldMutual (NiceMutual _ _ pc _)         = __IMPOSSIBLE__-        positivityCheckOldMutual (NiceRecSig _ _ _ _ pc _ _ _) = pc-        positivityCheckOldMutual (RecDef _ _ _ pc _ _ _ _ _ _) = pc-        positivityCheckOldMutual _                             = True--        -- A mutual block cannot have a measure,-        -- but it can skip termination check.--    abstractBlock _ [] = return []-    abstractBlock r ds = do-      let (ds', anyChange) = runChange $ mkAbstract ds-          inherited        = r == noRange-      if anyChange then return ds' else do-        -- hack to avoid failing on inherited abstract blocks in where clauses-        unless inherited $ niceWarning $ UselessAbstract r-        return ds -- no change!--    privateBlock _ _ [] = return []-    privateBlock r o ds = do-      let (ds', anyChange) = runChange $ mkPrivate o ds-      if anyChange then return ds' else do-        when (o == UserWritten) $ niceWarning $ UselessPrivate r-        return ds -- no change!--    instanceBlock _ [] = return []-    instanceBlock r ds = do-      let (ds', anyChange) = runChange $ mapM mkInstance ds-      if anyChange then return ds' else do-        niceWarning $ UselessInstance r-        return ds -- no change!--    -- Make a declaration eligible for instance search.-    mkInstance :: Updater NiceDeclaration-    mkInstance d =-      case d of-        Axiom r f p a i rel mp x e       -> (\ i -> Axiom r f p a i rel mp x e) <$> setInstance i-        FunSig r f p a i m rel tc x e    -> (\ i -> FunSig r f p a i m rel tc x e) <$> setInstance i-        NiceUnquoteDecl r f p a i tc x e -> (\ i -> NiceUnquoteDecl r f p a i tc x e) <$> setInstance i-        NiceMutual r termCheck pc ds     -> NiceMutual r termCheck pc <$> mapM mkInstance ds-        NiceFunClause{}                  -> return d-        FunDef r ds f a i tc x cs        -> (\ i -> FunDef r ds f a i tc x cs) <$> setInstance i-        NiceField{}                      -> return d  -- Field instance are handled by the parser-        PrimitiveFunction{}              -> return d-        NiceUnquoteDef{}                 -> return d-        NiceRecSig{}                     -> return d-        NiceDataSig{}                    -> return d-        NiceModuleMacro{}                -> return d-        NiceModule{}                     -> return d-        NicePragma{}                     -> return d-        NiceOpen{}                       -> return d-        NiceImport{}                     -> return d-        DataDef{}                        -> return d-        RecDef{}                         -> return d-        NicePatternSyn{}                 -> return d--    setInstance :: Updater IsInstance-    setInstance i = case i of-      InstanceDef -> return i-      _           -> dirty $ InstanceDef--    macroBlock r ds = mapM mkMacro ds--    mkMacro :: NiceDeclaration -> Nice NiceDeclaration-    mkMacro d =-      case d of-        FunSig r f p a i _ rel tc x e -> return $ FunSig r f p a i MacroDef rel tc x e-        FunDef{}                    -> return d-        _                           -> throwError (BadMacroDef d)---- | Make a declaration abstract.------ Mark computation as 'dirty' if there was a declaration that could be made abstract.--- If no abstraction is taking place, we want to complain about 'UselessAbstract'.------ Alternatively, we could only flag 'dirty' if a non-abstract thing was abstracted.--- Then, nested @abstract@s would sometimes also be complained about.--class MakeAbstract a where-  mkAbstract :: Updater a-  default mkAbstract :: (Traversable f, MakeAbstract a', a ~ f a') => Updater a-  mkAbstract = traverse mkAbstract--instance MakeAbstract a => MakeAbstract [a] where-  -- Default definition kicks in here!-  -- But note that we still have to declare the instance!---- Leads to overlap with 'WhereClause':--- instance (Traversable f, MakeAbstract a) => MakeAbstract (f a) where---   mkAbstract = traverse mkAbstract--instance MakeAbstract IsAbstract where-  mkAbstract a = case a of-    AbstractDef -> return a-    ConcreteDef -> dirty $ AbstractDef--instance MakeAbstract NiceDeclaration where-  mkAbstract d =-    case d of-      NiceMutual r termCheck pc ds     -> NiceMutual r termCheck pc <$> mkAbstract ds-      FunDef r ds f a i tc x cs        -> (\ a -> FunDef r ds f a i tc x) <$> mkAbstract a <*> mkAbstract cs-      DataDef r f a pc x ps cs         -> (\ a -> DataDef r f a pc x ps) <$> mkAbstract a <*> mkAbstract cs-      RecDef r f a pc x i e c ps cs    -> (\ a -> RecDef r f a pc x i e c ps) <$> mkAbstract a <*> mkAbstract cs-      NiceFunClause r p a termCheck catchall d  -> (\ a -> NiceFunClause r p a termCheck catchall d) <$> mkAbstract a-      -- The following declarations have an @InAbstract@ field-      -- but are not really definitions, so we do count them into-      -- the declarations which can be made abstract-      -- (thus, do not notify progress with @dirty@).-      Axiom r f p a i rel mp x e       -> return $ Axiom             r f p AbstractDef i rel mp x e-      FunSig r f p a i m rel tc x e    -> return $ FunSig            r f p AbstractDef i m rel tc x e-      NiceRecSig r f p a pc x ls t     -> return $ NiceRecSig        r f p AbstractDef pc x ls t-      NiceDataSig r f p a pc x ls t    -> return $ NiceDataSig       r f p AbstractDef pc x ls t-      NiceField r f p _ i x e          -> return $ NiceField         r f p AbstractDef i x e-      PrimitiveFunction r f p _ x e    -> return $ PrimitiveFunction r f p AbstractDef x e-      -- Andreas, 2016-07-17 it does have effect on unquoted defs.-      -- Need to set updater state to dirty!-      NiceUnquoteDecl r f p _ i t x e  -> dirty $ NiceUnquoteDecl r f p AbstractDef i t x e-      NiceUnquoteDef r f p _ t x e     -> dirty $ NiceUnquoteDef r f p AbstractDef t x e-      NiceModule{}                     -> return d-      NiceModuleMacro{}                -> return d-      NicePragma{}                     -> return d-      NiceOpen{}                       -> return d-      NiceImport{}                     -> return d-      NicePatternSyn{}                 -> return d--instance MakeAbstract Clause where-  mkAbstract (Clause x catchall lhs rhs wh with) = do-    Clause x catchall lhs rhs <$> mkAbstract wh <*> mkAbstract with---- | Contents of a @where@ clause are abstract if the parent is.-instance MakeAbstract WhereClause where-  mkAbstract  NoWhere           = return $ NoWhere-  mkAbstract (AnyWhere ds)      = dirty $ AnyWhere [Abstract noRange ds]-  mkAbstract (SomeWhere m a ds) = dirty $ SomeWhere m a [Abstract noRange ds]---- | Make a declaration private.------ Andreas, 2012-11-17:--- Mark computation as 'dirty' if there was a declaration that could be privatized.--- If no privatization is taking place, we want to complain about 'UselessPrivate'.------ Alternatively, we could only flag 'dirty' if a non-private thing was privatized.--- Then, nested @private@s would sometimes also be complained about.--class MakePrivate a where-  mkPrivate :: Origin -> Updater a-  default mkPrivate :: (Traversable f, MakePrivate a', a ~ f a') => Origin -> Updater a-  mkPrivate o = traverse $ mkPrivate o--instance MakePrivate a => MakePrivate [a] where-  -- Default definition kicks in here!-  -- But note that we still have to declare the instance!---- Leads to overlap with 'WhereClause':--- instance (Traversable f, MakePrivate a) => MakePrivate (f a) where---   mkPrivate = traverse mkPrivate--instance MakePrivate Access where-  mkPrivate o p = case p of-    PrivateAccess{} -> return p  -- OR? return $ PrivateAccess o-    _               -> dirty $ PrivateAccess o--instance MakePrivate NiceDeclaration where-  mkPrivate o d =-    case d of-      Axiom r f p a i rel mp x e               -> (\ p -> Axiom r f p a i rel mp x e)               <$> mkPrivate o p-      NiceField r f p a i x e                  -> (\ p -> NiceField r f p a i x e)                  <$> mkPrivate o p-      PrimitiveFunction r f p a x e            -> (\ p -> PrimitiveFunction r f p a x e)            <$> mkPrivate o p-      NiceMutual r termCheck pc ds             -> (\ p -> NiceMutual r termCheck pc p)              <$> mkPrivate o ds-      NiceModule r p a x tel ds                -> (\ p -> NiceModule r p a x tel ds)                <$> mkPrivate o p-      NiceModuleMacro r p x ma op is           -> (\ p -> NiceModuleMacro r p x ma op is)           <$> mkPrivate o p-      FunSig r f p a i m rel tc x e            -> (\ p -> FunSig r f p a i m rel tc x e)            <$> mkPrivate o p-      NiceRecSig r f p a pc x ls t             -> (\ p -> NiceRecSig r f p a pc x ls t)             <$> mkPrivate o p-      NiceDataSig r f p a pc x ls t            -> (\ p -> NiceDataSig r f p a pc x ls t)            <$> mkPrivate o p-      NiceFunClause r p a termCheck catchall d -> (\ p -> NiceFunClause r p a termCheck catchall d) <$> mkPrivate o p-      NiceUnquoteDecl r f p a i t x e          -> (\ p -> NiceUnquoteDecl r f p a i t x e)          <$> mkPrivate o p-      NiceUnquoteDef r f p a t x e             -> (\ p -> NiceUnquoteDef r f p a t x e)             <$> mkPrivate o p-      NicePragma _ _                           -> return $ d-      NiceOpen _ _ _                           -> return $ d-      NiceImport _ _ _ _ _                     -> return $ d-      -- Andreas, 2016-07-08, issue #2089-      -- we need to propagate 'private' to the named where modules-      FunDef r ds f a i tc x cls               -> FunDef r ds f a i tc x <$> mkPrivate o cls-      DataDef{}                                -> return $ d-      RecDef{}                                 -> return $ d-      NicePatternSyn _ _ _ _ _                 -> return $ d--instance MakePrivate Clause where-  mkPrivate o (Clause x catchall lhs rhs wh with) = do-    Clause x catchall lhs rhs <$> mkPrivate o wh <*> mkPrivate o with--instance MakePrivate WhereClause where-  mkPrivate o  NoWhere         = return $ NoWhere-  -- @where@-declarations are protected behind an anonymous module,-  -- thus, they are effectively private by default.-  mkPrivate o (AnyWhere ds)    = return $ AnyWhere ds-  -- Andreas, 2016-07-08-  -- A @where@-module is private if the parent function is private.-  -- The contents of this module are not private, unless declared so!-  -- Thus, we do not recurse into the @ds@ (could not anyway).-  mkPrivate o (SomeWhere m a ds) = mkPrivate o a <&> \ a' -> SomeWhere m a' ds---- | Add more fixities. Throw an exception for multiple fixity declarations.---   OR:  Disjoint union of fixity maps.  Throws exception if not disjoint.--plusFixities :: Fixities -> Fixities -> Nice Fixities-plusFixities m1 m2-    -- If maps are not disjoint, report conflicts as exception.-    | not (null isect) = throwError $ MultipleFixityDecls isect-    -- Otherwise, do the union.-    | otherwise        = return $ Map.unionWithKey mergeFixites m1 m2-  where-    --  Merge two fixities, assuming there is no conflict-    mergeFixites name (Fixity' f1 s1 r1) (Fixity' f2 s2 r2) = Fixity' f s $ fuseRange r1 r2-              where f | f1 == noFixity = f2-                      | f2 == noFixity = f1-                      | otherwise = __IMPOSSIBLE__-                    s | s1 == noNotation = s2-                      | s2 == noNotation = s1-                      | otherwise = __IMPOSSIBLE__--    -- Compute a list of conflicts in a format suitable for error reporting.-    isect = [ (x, map (Map.findWithDefault __IMPOSSIBLE__ x) [m1,m2])-            | (x, False) <- Map.assocs $ Map.intersectionWith compatible m1 m2 ]--    -- Check for no conflict.-    compatible (Fixity' f1 s1 _) (Fixity' f2 s2 _) =-      (f1 == noFixity   || f2 == noFixity  ) &&-      (s1 == noNotation || s2 == noNotation)---- | While 'Fixities' and Polarities are not semigroups under disjoint---   union (which might fail), we get a semigroup instance for the---   monadic @Nice (Fixities, Polarities)@ which propagates the first---   error.-instance Semigroup (Nice (Fixities, Polarities)) where-  c1 <> c2 = do-    (f1, p1) <- c1-    (f2, p2) <- c2-    f <- plusFixities f1 f2-    p <- mergePolarities p1 p2-    return (f, p)-    where-    mergePolarities p1 p2-      | Set.null i = return (Map.union p1 p2)-      | otherwise  = throwError $ MultiplePolarityPragmas (Set.toList i)-      where-      i = Set.intersection (Map.keysSet p1) (Map.keysSet p2)--instance Monoid (Nice (Fixities, Polarities)) where-  mempty  = return (Map.empty, Map.empty)-  mappend = (<>)---- | Get the fixities and polarity pragmas from the current block.---   Doesn't go inside modules and where blocks.---   The reason for this is that these declarations have to appear at the same---   level (or possibly outside an abstract or mutual block) as their target---   declaration.-fixitiesAndPolarities :: [Declaration] -> Nice (Fixities, Polarities)-fixitiesAndPolarities = foldMap $ \ d -> case d of-  -- These declarations define polarities:-  Pragma (PolarityPragma _ x occs) -> return (Map.empty, Map.singleton x occs)-  -- These declarations define fixities:-  Syntax x syn    -> return ( Map.singleton x (Fixity' noFixity syn $ getRange x)-                            , Map.empty-                            )-  Infix  f xs     -> return ( Map.fromList $ for xs $ \ x -> (x, Fixity' f noNotation$ getRange x)-                            , Map.empty-                            )-  -- We look into these blocks:-  Mutual    _ ds' -> fixitiesAndPolarities ds'-  Abstract  _ ds' -> fixitiesAndPolarities ds'-  Private _ _ ds' -> fixitiesAndPolarities ds'-  InstanceB _ ds' -> fixitiesAndPolarities ds'-  Macro     _ ds' -> fixitiesAndPolarities ds'-  -- All other declarations are ignored.-  -- We expand these boring cases to trigger a revisit-  -- in case the @Declaration@ type is extended in the future.-  TypeSig     {}  -> mempty-  Field       {}  -> mempty-  FunClause   {}  -> mempty-  DataSig     {}  -> mempty-  Data        {}  -> mempty-  RecordSig   {}  -> mempty-  Record      {}  -> mempty-  PatternSyn  {}  -> mempty-  Postulate   {}  -> mempty-  Primitive   {}  -> mempty-  Open        {}  -> mempty-  Import      {}  -> mempty-  ModuleMacro {}  -> mempty-  Module      {}  -> mempty-  UnquoteDecl {}  -> mempty-  UnquoteDef  {}  -> mempty-  Pragma      {}  -> mempty----- The following function is (at the time of writing) only used three--- times: for building Lets, and for printing error messages.---- | (Approximately) convert a 'NiceDeclaration' back to a list of--- 'Declaration's.-notSoNiceDeclarations :: NiceDeclaration -> [Declaration]-notSoNiceDeclarations d = fixityDecl d ++-  case d of-    Axiom _ _ _ _ i rel mp x e       -> (case mp of-                                           Nothing   -> []-                                           Just occs -> [Pragma (PolarityPragma noRange x occs)]) ++-                                        inst i [TypeSig rel x e]-    NiceField _ _ _ _ i x argt       -> [Field i x argt]-    PrimitiveFunction r _ _ _ x e    -> [Primitive r [TypeSig defaultArgInfo x e]]-    NiceMutual r _ _ ds              -> [Mutual r $ concatMap notSoNiceDeclarations ds]-    NiceModule r _ _ x tel ds        -> [Module r x tel ds]-    NiceModuleMacro r _ x ma o dir   -> [ModuleMacro r x ma o dir]-    NiceOpen r x dir                 -> [Open r x dir]-    NiceImport r x as o dir          -> [Import r x as o dir]-    NicePragma _ p                   -> [Pragma p]-    NiceRecSig r _ _ _ _ x bs e      -> [RecordSig r x bs e]-    NiceDataSig r _ _ _ _ x bs e     -> [DataSig r Inductive x bs e]-    NiceFunClause _ _ _ _ _ d        -> [d]-    FunSig _ _ _ _ i _ rel tc x e    -> inst i [TypeSig rel x e]-    FunDef _r ds _ _ _ _ _ _         -> ds-    DataDef r _ _ _ x bs cs          -> [Data r Inductive x bs Nothing $ concatMap notSoNiceDeclarations cs]-    RecDef r _ _ _ x i e c bs ds     -> [Record r x i e (unThing <$> c) bs Nothing $ concatMap notSoNiceDeclarations ds]-      where unThing (ThingWithFixity c _, inst) = (c, inst)-    NicePatternSyn r _ n as p        -> [PatternSyn r n as p]-    NiceUnquoteDecl r _ _ _ i _ x e  -> inst i [UnquoteDecl r x e]-    NiceUnquoteDef r _ _ _ _ x e     -> [UnquoteDef r x e]-  where-    inst InstanceDef    ds = [InstanceB (getRange ds) ds]-    inst NotInstanceDef ds = ds--    fixityDecl d = nameAndFixity >>= \ (x, f) -> infixDecl (theFixity f) x ++ syntaxDecl (theNotation f) x-      where-        nameAndFixity = case d of-          Axiom _ f _ _ _ _ _ x _           -> [(x, f)]-          NiceField _ f _ _ _ x _           -> [(x, f)]-          PrimitiveFunction _ f _ _ x _     -> [(x, f)]-          NiceRecSig _ f _ _ _ x _ _        -> [(x, f)]-          NiceDataSig _ f _ _ _ x _ _       -> [(x, f)]-          FunSig _ f _ _ _ _ _ _ x _        -> [(x, f)]-          NicePatternSyn _ f x _ _          -> [(x, f)]-          NiceUnquoteDecl _ fs _ _ _ _ xs _ -> zip xs fs-          NiceUnquoteDef _ fs _ _ _ xs _    -> zip xs fs-          NiceMutual{}      -> []-          NiceModule{}      -> []-          NiceModuleMacro{} -> []-          NiceOpen{}        -> []-          NiceImport{}      -> []-          NicePragma{}      -> []-          NiceFunClause{}   -> []-          FunDef{}          -> []  -- use the fixity from the FunSig/DataSig/RecSig-          DataDef{}         -> []-          RecDef{}          -> []--    infixDecl  f x = [Infix f [x] | notElem f [defaultFixity, noFixity]]-    syntaxDecl n x = [Syntax x n  | not (null n) ]---- | Has the 'NiceDeclaration' a field of type 'IsAbstract'?-niceHasAbstract :: NiceDeclaration -> Maybe IsAbstract-niceHasAbstract d =-  case d of-    Axiom{}                         -> Nothing-    NiceField _ _ _ a _ _ _         -> Just a-    PrimitiveFunction _ _ _ a _ _   -> Just a-    NiceMutual{}                    -> Nothing-    NiceModule _ _ a _ _ _          -> Just a-    NiceModuleMacro{}               -> Nothing-    NiceOpen{}                      -> Nothing-    NiceImport{}                    -> Nothing-    NicePragma{}                    -> Nothing-    NiceRecSig{}                    -> Nothing-    NiceDataSig{}                   -> Nothing-    NiceFunClause _ _ a _ _ _       -> Just a-    FunSig{}                        -> Nothing-    FunDef _ _ _ a _ _ _ _          -> Just a-    DataDef _ _ a _ _ _ _           -> Just a-    RecDef _ _ a _ _ _ _ _ _ _      -> Just a-    NicePatternSyn{}                -> Nothing-    NiceUnquoteDecl _ _ _ a _ _ _ _ -> Just a-    NiceUnquoteDef _ _ _ a _ _ _    -> Just a+{-# LANGUAGE GeneralizedNewtypeDeriving #-}++-- | Preprocess 'Agda.Syntax.Concrete.Declaration's, producing 'NiceDeclaration's.+--+--   * Attach fixity and syntax declarations to the definition they refer to.+--+--   * Distribute the following attributes to the individual definitions:+--       @abstract@,+--       @instance@,+--       @postulate@,+--       @primitive@,+--       @private@,+--       termination pragmas.+--+--   * Gather the function clauses belonging to one function definition.+--+--   * Expand ellipsis @...@ in function clauses following @with@.+--+--   * Infer mutual blocks.+--     A block starts when a lone signature is encountered, and ends when+--     all lone signatures have seen their definition.+--+--   * Report basic well-formedness error,+--     when one of the above transformation fails.+--     When possible, errors should be deferred to the scope checking phase+--     (ConcreteToAbstract), where we are in the TCM and can produce more+--     informative error messages.+++module Agda.Syntax.Concrete.Definitions+    ( NiceDeclaration(..)+    , NiceConstructor, NiceTypeSignature+    , Clause(..)+    , DeclarationException(..)+    , DeclarationWarning(..)+    , Nice, runNice+    , niceDeclarations+    , notSoNiceDeclarations+    , niceHasAbstract+    , Measure+    , declarationWarningName+    ) where++import Prelude hiding (null)++import Control.Arrow ((&&&), (***), first, second)+import Control.Applicative hiding (empty)+import Control.Monad.Except+import Control.Monad.State++import Data.Either ( partitionEithers )+import Data.Function ( on )+import qualified Data.Map as Map+import Data.Map (Map)+import Data.Maybe+import Data.Monoid ( Monoid, mempty, mappend )+import Data.Semigroup ( Semigroup, (<>) )+import qualified Data.List as List+import qualified Data.Set as Set+import Data.Traversable (Traversable, traverse)+import qualified Data.Traversable as Trav++import Data.Data (Data)++import Agda.Syntax.Concrete+import Agda.Syntax.Concrete.Pattern+import Agda.Syntax.Common hiding (TerminationCheck())+import qualified Agda.Syntax.Common as Common+import Agda.Syntax.Position+import Agda.Syntax.Fixity+import Agda.Syntax.Notation+import Agda.Syntax.Concrete.Pretty ()+import Agda.Syntax.Concrete.Fixity++import Agda.Interaction.Options.Warnings++import Agda.Utils.AffineHole+import Agda.Utils.Except ( MonadError(throwError,catchError) )+import Agda.Utils.Function+import Agda.Utils.Functor+import Agda.Utils.Lens+import Agda.Utils.List (caseList, headMaybe, isSublistOf)+import Agda.Utils.Maybe+import Agda.Utils.Monad+import Agda.Utils.Null+import qualified Agda.Utils.Pretty as Pretty+import Agda.Utils.Pretty hiding ((<>))+import Agda.Utils.Singleton+import Agda.Utils.Three+import Agda.Utils.Tuple+import Agda.Utils.Update++#include "undefined.h"+import Agda.Utils.Impossible++{--------------------------------------------------------------------------+    Types+ --------------------------------------------------------------------------}++{-| The nice declarations. No fixity declarations and function definitions are+    contained in a single constructor instead of spread out between type+    signatures and clauses. The @private@, @postulate@, @abstract@ and @instance@+    modifiers have been distributed to the individual declarations.++    Observe the order of components:++      Range+      Fixity'+      Access+      IsAbstract+      IsInstance+      TerminationCheck+      PositivityCheck++      further attributes++      (Q)Name++      content (Expr, Declaration ...)+-}+data NiceDeclaration+  = Axiom Range Access IsAbstract IsInstance ArgInfo Name Expr+      -- ^ 'IsAbstract' argument: We record whether a declaration was made in an @abstract@ block.+      --+      --   'ArgInfo' argument: Axioms and functions can be declared irrelevant.+      --   ('Hiding' should be 'NotHidden'.)+  | NiceField Range Access IsAbstract IsInstance Name (Arg Expr)+  | PrimitiveFunction Range Access IsAbstract Name Expr+  | NiceMutual Range TerminationCheck PositivityCheck [NiceDeclaration]+  | NiceModule Range Access IsAbstract QName Telescope [Declaration]+  | NiceModuleMacro Range Access Name ModuleApplication OpenShortHand ImportDirective+  | NiceOpen Range QName ImportDirective+  | NiceImport Range QName (Maybe AsName) OpenShortHand ImportDirective+  | NicePragma Range Pragma+  | NiceRecSig Range Access IsAbstract PositivityCheck UniverseCheck Name [LamBinding] Expr+  | NiceDataSig Range Access IsAbstract PositivityCheck UniverseCheck Name [LamBinding] Expr+  | NiceFunClause Range Access IsAbstract TerminationCheck Catchall Declaration+    -- ^ An uncategorized function clause, could be a function clause+    --   without type signature or a pattern lhs (e.g. for irrefutable let).+    --   The 'Declaration' is the actual 'FunClause'.+  | FunSig Range Access IsAbstract IsInstance IsMacro ArgInfo TerminationCheck Name Expr+  | FunDef Range [Declaration] IsAbstract IsInstance TerminationCheck Name [Clause]+      -- ^ Block of function clauses (we have seen the type signature before).+      --   The 'Declaration's are the original declarations that were processed+      --   into this 'FunDef' and are only used in 'notSoNiceDeclaration'.+      --   Andreas, 2017-01-01: Because of issue #2372, we add 'IsInstance' here.+      --   An alias should know that it is an instance.+  | NiceDataDef Range Origin IsAbstract PositivityCheck UniverseCheck Name [LamBinding] [NiceConstructor]+  | NiceRecDef Range Origin IsAbstract PositivityCheck UniverseCheck Name (Maybe (Ranged Induction)) (Maybe HasEta)+           (Maybe (Name, IsInstance)) [LamBinding] [Declaration]+  | NicePatternSyn Range Name [Arg Name] Pattern+  | NiceGeneralize Range Access ArgInfo Name Expr+  | NiceUnquoteDecl Range Access IsAbstract IsInstance TerminationCheck [Name] Expr+  | NiceUnquoteDef Range Access IsAbstract TerminationCheck [Name] Expr+  deriving (Data, Show)++type TerminationCheck = Common.TerminationCheck Measure++-- | Termination measure is, for now, a variable name.+type Measure = Name++type Catchall = Bool++-- | Only 'Axiom's.+type NiceConstructor = NiceTypeSignature++-- | Only 'Axiom's.+type NiceTypeSignature  = NiceDeclaration++-- | One clause in a function definition. There is no guarantee that the 'LHS'+--   actually declares the 'Name'. We will have to check that later.+data Clause = Clause Name Catchall LHS RHS WhereClause [Clause]+    deriving (Data, Show)++-- | The exception type.+data DeclarationException+        = MultipleEllipses Pattern+        | InvalidName Name+        | DuplicateDefinition Name+        | MissingWithClauses Name LHS+        | WrongDefinition Name DataRecOrFun DataRecOrFun+        | Codata Range+        | DeclarationPanic String+        | WrongContentBlock KindOfBlock Range+        | AmbiguousFunClauses LHS [Name] -- ^ in a mutual block, a clause could belong to any of the @[Name]@ type signatures+        | InvalidMeasureMutual Range+          -- ^ In a mutual block, all or none need a MEASURE pragma.+          --   Range is of mutual block.+        | UnquoteDefRequiresSignature [Name]+        | BadMacroDef NiceDeclaration+    deriving (Data, Show)++-- | Non-fatal errors encountered in the Nicifier+data DeclarationWarning+  = EmptyAbstract Range   -- ^ Empty @abstract@  block.+  | EmptyInstance Range   -- ^ Empty @instance@  block+  | EmptyMacro Range      -- ^ Empty @macro@     block.+  | EmptyMutual Range     -- ^ Empty @mutual@    block.+  | EmptyPostulate Range  -- ^ Empty @postulate@ block.+  | EmptyPrivate Range    -- ^ Empty @private@   block.+  | EmptyGeneralize Range -- ^ Empty @variable@  block.+  | EmptyPrimitive Range  -- ^ Empty @primitive@ block.+  | InvalidCatchallPragma Range+      -- ^ A {-\# CATCHALL \#-} pragma+      --   that does not precede a function clause.+  | InvalidNoPositivityCheckPragma Range+      -- ^ A {-\# NO_POSITIVITY_CHECK \#-} pragma+      --   that does not apply to any data or record type.+  | InvalidNoUniverseCheckPragma Range+      -- ^ A {-\# NO_UNIVERSE_CHECK \#-} pragma+      --   that does not apply to a data or record type.+  | InvalidTerminationCheckPragma Range+      -- ^ A {-\# TERMINATING \#-} and {-\# NON_TERMINATING \#-} pragma+      --   that does not apply to any function.+  | MissingDefinitions [Name]+  | NotAllowedInMutual Range String+  | PolarityPragmasButNotPostulates [Name]+  | PragmaNoTerminationCheck Range+  -- ^ Pragma @{-\# NO_TERMINATION_CHECK \#-}@ has been replaced+  --   by @{-\# TERMINATING \#-}@ and @{-\# NON_TERMINATING \#-}@.+  | PragmaCompiled Range+  -- ^ @COMPILE@ pragmas are not allowed in safe mode+  | UnknownFixityInMixfixDecl [Name]+  | UnknownNamesInFixityDecl [Name]+  | UnknownNamesInPolarityPragmas [Name]+  | UselessAbstract Range+  | UselessInstance Range+  | UselessPrivate Range+  deriving (Data, Show)++declarationWarningName :: DeclarationWarning -> WarningName+declarationWarningName dw = case dw of+  EmptyAbstract{}                   -> EmptyAbstract_+  EmptyInstance{}                   -> EmptyInstance_+  EmptyMacro{}                      -> EmptyMacro_+  EmptyMutual{}                     -> EmptyMutual_+  EmptyPrivate{}                    -> EmptyPrivate_+  EmptyPostulate{}                  -> EmptyPostulate_+  EmptyGeneralize{}                 -> EmptyGeneralize_+  EmptyPrimitive{}                  -> EmptyPrimitive_+  InvalidCatchallPragma{}           -> InvalidCatchallPragma_+  InvalidNoPositivityCheckPragma{}  -> InvalidNoPositivityCheckPragma_+  InvalidNoUniverseCheckPragma{}    -> InvalidNoUniverseCheckPragma_+  InvalidTerminationCheckPragma{}   -> InvalidTerminationCheckPragma_+  MissingDefinitions{}              -> MissingDefinitions_+  NotAllowedInMutual{}              -> NotAllowedInMutual_+  PolarityPragmasButNotPostulates{} -> PolarityPragmasButNotPostulates_+  PragmaNoTerminationCheck{}        -> PragmaNoTerminationCheck_+  PragmaCompiled{}                  -> PragmaCompiled_+  UnknownFixityInMixfixDecl{}       -> UnknownFixityInMixfixDecl_+  UnknownNamesInFixityDecl{}        -> UnknownNamesInFixityDecl_+  UnknownNamesInPolarityPragmas{}   -> UnknownNamesInPolarityPragmas_+  UselessAbstract{}                 -> UselessAbstract_+  UselessInstance{}                 -> UselessInstance_+  UselessPrivate{}                  -> UselessPrivate_++-- | Several declarations expect only type signatures as sub-declarations.  These are:+data KindOfBlock+  = PostulateBlock  -- ^ @postulate@+  | PrimitiveBlock  -- ^ @primitive@.  Ensured by parser.+  | InstanceBlock   -- ^ @instance@.  Actually, here all kinds of sub-declarations are allowed a priori.+  | FieldBlock      -- ^ @field@.  Ensured by parser.+  | DataBlock       -- ^ @data ... where@.  Here we got a bad error message for Agda-2.5 (Issue 1698).+  deriving (Data, Eq, Ord, Show)+++instance HasRange DeclarationException where+  getRange (MultipleEllipses d)                 = getRange d+  getRange (InvalidName x)                      = getRange x+  getRange (DuplicateDefinition x)              = getRange x+  getRange (MissingWithClauses x lhs)           = getRange lhs+  getRange (WrongDefinition x k k')             = getRange x+  getRange (AmbiguousFunClauses lhs xs)         = getRange lhs+  getRange (Codata r)                           = r+  getRange (DeclarationPanic _)                 = noRange+  getRange (WrongContentBlock _ r)              = r+  getRange (InvalidMeasureMutual r)             = r+  getRange (UnquoteDefRequiresSignature x)      = getRange x+  getRange (BadMacroDef d)                      = getRange d++instance HasRange DeclarationWarning where+  getRange (UnknownNamesInFixityDecl xs)        = getRange . head $ xs+  getRange (UnknownFixityInMixfixDecl xs)       = getRange . head $ xs+  getRange (UnknownNamesInPolarityPragmas xs)   = getRange . head $ xs+  getRange (PolarityPragmasButNotPostulates xs) = getRange . head $ xs+  getRange (MissingDefinitions xs)              = getRange . head $ xs+  getRange (UselessPrivate r)                   = r+  getRange (NotAllowedInMutual r x)             = r+  getRange (UselessAbstract r)                  = r+  getRange (UselessInstance r)                  = r+  getRange (EmptyMutual r)                      = r+  getRange (EmptyAbstract r)                    = r+  getRange (EmptyPrivate r)                     = r+  getRange (EmptyInstance r)                    = r+  getRange (EmptyMacro r)                       = r+  getRange (EmptyPostulate r)                   = r+  getRange (EmptyGeneralize r)                  = r+  getRange (EmptyPrimitive r)                   = r+  getRange (InvalidTerminationCheckPragma r)    = r+  getRange (InvalidNoPositivityCheckPragma r)   = r+  getRange (InvalidCatchallPragma r)            = r+  getRange (InvalidNoUniverseCheckPragma r)     = r+  getRange (PragmaNoTerminationCheck r)         = r+  getRange (PragmaCompiled r)                   = r++instance HasRange NiceDeclaration where+  getRange (Axiom r _ _ _ _ _ _)           = r+  getRange (NiceField r _ _ _ _ _)         = r+  getRange (NiceMutual r _ _ _)            = r+  getRange (NiceModule r _ _ _ _ _ )       = r+  getRange (NiceModuleMacro r _ _ _ _ _)   = r+  getRange (NiceOpen r _ _)                = r+  getRange (NiceImport r _ _ _ _)          = r+  getRange (NicePragma r _)                = r+  getRange (PrimitiveFunction r _ _ _ _)   = r+  getRange (FunSig r _ _ _ _ _ _ _ _)      = r+  getRange (FunDef r _ _ _ _ _ _)          = r+  getRange (NiceDataDef r _ _ _ _ _ _ _)   = r+  getRange (NiceRecDef r _ _ _ _ _ _ _ _ _ _)  = r+  getRange (NiceRecSig r _ _ _ _ _ _ _)    = r+  getRange (NiceDataSig r _ _ _ _ _ _ _)   = r+  getRange (NicePatternSyn r _ _ _)        = r+  getRange (NiceGeneralize r _ _ _ _)      = r+  getRange (NiceFunClause r _ _ _ _ _)     = r+  getRange (NiceUnquoteDecl r _ _ _ _ _ _) = r+  getRange (NiceUnquoteDef r _ _ _ _ _)    = r++instance Pretty NiceDeclaration where+  pretty = \case+    Axiom _ _ _ _ _ x _            -> text "postulate" <+> pretty x <+> colon <+> text "_"+    NiceField _ _ _ _ x _          -> text "field" <+> pretty x+    PrimitiveFunction _ _ _ x _    -> text "primitive" <+> pretty x+    NiceMutual{}                   -> text "mutual"+    NiceModule _ _ _ x _ _         -> text "module" <+> pretty x <+> text "where"+    NiceModuleMacro _ _ x _ _ _    -> text "module" <+> pretty x <+> text "= ..."+    NiceOpen _ x _                 -> text "open" <+> pretty x+    NiceImport _ x _ _ _           -> text "import" <+> pretty x+    NicePragma{}                   -> text "{-# ... #-}"+    NiceRecSig _ _ _ _ _ x _ _     -> text "record" <+> pretty x+    NiceDataSig _ _ _ _ _ x _ _    -> text "data" <+> pretty x+    NiceFunClause{}                -> text "<function clause>"+    FunSig _ _ _ _ _ _ _ x _       -> pretty x <+> colon <+> text "_"+    FunDef _ _ _ _ _ x _           -> pretty x <+> text "= _"+    NiceDataDef _ _ _ _ _ x _ _    -> text "data" <+> pretty x <+> text "where"+    NiceRecDef _ _ _ _ _ x _ _ _ _ _   -> text "record" <+> pretty x <+> text "where"+    NicePatternSyn _ x _ _         -> text "pattern" <+> pretty x+    NiceGeneralize _ _ _ x _       -> text "variable" <+> pretty x+    NiceUnquoteDecl _ _ _ _ _ xs _ -> text "<unquote declarations>"+    NiceUnquoteDef _ _ _ _ xs _    -> text "<unquote definitions>"++-- These error messages can (should) be terminated by a dot ".",+-- there is no error context printed after them.+instance Pretty DeclarationException where+  pretty (MultipleEllipses p) = fsep $+    pwords "Multiple ellipses in left-hand side" ++ [pretty p]+  pretty (InvalidName x) = fsep $+    pwords "Invalid name:" ++ [pretty x]+  pretty (DuplicateDefinition x) = fsep $+    pwords "Duplicate definition of" ++ [pretty x]+  pretty (MissingWithClauses x lhs) = fsep $+    pwords "Missing with-clauses for function" ++ [pretty x]++  pretty (WrongDefinition x k k') = fsep $ pretty x :+    pwords ("has been declared as a " ++ show k +++      ", but is being defined as a " ++ show k')+  pretty (AmbiguousFunClauses lhs xs) = sep+    [ fsep $+        pwords "More than one matching type signature for left hand side " ++ [pretty lhs] +++        pwords "it could belong to any of:"+    , vcat $ map (pretty . PrintRange) xs+    ]+  pretty (WrongContentBlock b _)      = fsep . pwords $+    case b of+      PostulateBlock -> "A postulate block can only contain type signatures, possibly under keyword instance"+      DataBlock -> "A data definition can only contain type signatures, possibly under keyword instance"+      _ -> "Unexpected declaration"+  pretty (InvalidMeasureMutual _) = fsep $+    pwords "In a mutual block, either all functions must have the same (or no) termination checking pragma."+  pretty (UnquoteDefRequiresSignature xs) = fsep $+    pwords "Missing type signatures for unquoteDef" ++ map pretty xs+  pretty (BadMacroDef nd) = fsep $+    [text $ declName nd] ++ pwords "are not allowed in macro blocks"+  pretty (Codata _) = text $+    "The codata construction has been removed. " +++    "Use the INFINITY builtin instead."+  pretty (DeclarationPanic s) = text s++instance Pretty DeclarationWarning where+  pretty (UnknownNamesInFixityDecl xs) = fsep $+    pwords "The following names are not declared in the same scope as their syntax or fixity declaration (i.e., either not in scope at all, imported from another module, or declared in a super module):"+    ++ punctuate comma (map pretty xs)+  pretty (UnknownFixityInMixfixDecl xs) = fsep $+    pwords "The following mixfix names do not have an associated fixity declaration:"+    ++ punctuate comma (map pretty xs)+  pretty (UnknownNamesInPolarityPragmas xs) = fsep $+    pwords "The following names are not declared in the same scope as their polarity pragmas (they could for instance be out of scope, imported from another module, or declared in a super module):"+    ++ punctuate comma  (map pretty xs)+  pretty (MissingDefinitions xs) = fsep $+   pwords "The following names are declared but not accompanied by a definition:"+   ++ punctuate comma (map pretty xs)+  pretty (NotAllowedInMutual r nd) = fsep $+    [text nd] ++ pwords "in mutual blocks are not supported.  Suggestion: get rid of mutual block by manually ordering declarations"+  pretty (PolarityPragmasButNotPostulates xs) = fsep $+    pwords "Polarity pragmas have been given for the following identifiers which are not postulates:"+    ++ punctuate comma (map pretty xs)+  pretty (UselessPrivate _)      = fsep $+    pwords "Using private here has no effect. Private applies only to declarations that introduce new identifiers into the module, like type signatures and data, record, and module declarations."+  pretty (UselessAbstract _)      = fsep $+    pwords "Using abstract here has no effect. Abstract applies to only definitions like data definitions, record type definitions and function clauses."+  pretty (UselessInstance _)      = fsep $+    pwords "Using instance here has no effect. Instance applies only to declarations that introduce new identifiers into the module, like type signatures and axioms."+  pretty (EmptyMutual    _)  = fsep $ pwords "Empty mutual block."+  pretty (EmptyAbstract  _)  = fsep $ pwords "Empty abstract block."+  pretty (EmptyPrivate   _)  = fsep $ pwords "Empty private block."+  pretty (EmptyInstance  _)  = fsep $ pwords "Empty instance block."+  pretty (EmptyMacro     _)  = fsep $ pwords "Empty macro block."+  pretty (EmptyPostulate _)  = fsep $ pwords "Empty postulate block."+  pretty (EmptyGeneralize _) = fsep $ pwords "Empty variable block."+  pretty (EmptyPrimitive _)  = fsep $ pwords "Empty primitive block."+  pretty (InvalidTerminationCheckPragma _) = fsep $+    pwords "Termination checking pragmas can only precede a function definition or a mutual block (that contains a function definition)."+  pretty (InvalidNoPositivityCheckPragma _) = fsep $+    pwords "NO_POSITIVITY_CHECKING pragmas can only precede a data/record definition or a mutual block (that contains a data/record definition)."+  pretty (InvalidCatchallPragma _) = fsep $+    pwords "The CATCHALL pragma can only precede a function clause."+  pretty (InvalidNoUniverseCheckPragma _) = fsep $+    pwords "NO_UNIVERSE_CHECKING pragmas can only precede a data/record definition."+  pretty (PragmaNoTerminationCheck _) = fsep $+    pwords "Pragma {-# NO_TERMINATION_CHECK #-} has been removed.  To skip the termination check, label your definitions either as {-# TERMINATING #-} or {-# NON_TERMINATING #-}."+  pretty (PragmaCompiled _) = fsep $+    pwords "COMPILE pragma not allowed in safe mode."++declName :: NiceDeclaration -> String+declName Axiom{}             = "Postulates"+declName NiceField{}         = "Fields"+declName NiceMutual{}        = "Mutual blocks"+declName NiceModule{}        = "Modules"+declName NiceModuleMacro{}   = "Modules"+declName NiceOpen{}          = "Open declarations"+declName NiceImport{}        = "Import statements"+declName NicePragma{}        = "Pragmas"+declName PrimitiveFunction{} = "Primitive declarations"+declName NicePatternSyn{}    = "Pattern synonyms"+declName NiceGeneralize{}    = "Generalized variables"+declName NiceUnquoteDecl{}   = "Unquoted declarations"+declName NiceUnquoteDef{}    = "Unquoted definitions"+declName NiceRecSig{}        = "Records"+declName NiceDataSig{}       = "Data types"+declName NiceFunClause{}     = "Functions without a type signature"+declName FunSig{}            = "Type signatures"+declName FunDef{}            = "Function definitions"+declName NiceRecDef{}            = "Records"+declName NiceDataDef{}       = "Data types"++{--------------------------------------------------------------------------+    The niceifier+ --------------------------------------------------------------------------}++data InMutual+  = InMutual    -- ^ we are nicifying a mutual block+  | NotInMutual -- ^ we are nicifying decls not in a mutual block+    deriving (Eq, Show)++-- | The kind of the forward declaration.++data DataRecOrFun+  = DataName+    { kindPosCheck :: PositivityCheck+    , kindUniCheck :: UniverseCheck+    }+    -- ^ Name of a data type+  | RecName+    { kindPosCheck :: PositivityCheck+    , kindUniCheck :: UniverseCheck+    }+    -- ^ Name of a record type+  | FunName TerminationCheck+    -- ^ Name of a function.+  deriving Data++-- Ignore pragmas when checking equality+instance Eq DataRecOrFun where+  DataName{} == DataName{} = True+  RecName{}  == RecName{}  = True+  FunName{}  == FunName{}  = True+  _          == _          = False++instance Show DataRecOrFun where+  show DataName{} = "data type"+  show RecName{}  = "record type"+  show FunName{}  = "function"++isFunName :: DataRecOrFun -> Bool+isFunName (FunName{}) = True+isFunName _           = False++sameKind :: DataRecOrFun -> DataRecOrFun -> Bool+sameKind = (==)++terminationCheck :: DataRecOrFun -> TerminationCheck+terminationCheck (FunName tc) = tc+terminationCheck _ = TerminationCheck++positivityCheck :: DataRecOrFun -> PositivityCheck+positivityCheck (DataName pc _) = pc+positivityCheck (RecName pc _)  = pc+positivityCheck _               = True++universeCheck :: DataRecOrFun -> UniverseCheck+universeCheck (DataName _ uc) = uc+universeCheck (RecName _ uc)  = uc+universeCheck _               = YesUniverseCheck++-- | Check that declarations in a mutual block are consistently+--   equipped with MEASURE pragmas, or whether there is a+--   NO_TERMINATION_CHECK pragma.+combineTermChecks :: Range -> [TerminationCheck] -> Nice TerminationCheck+combineTermChecks r tcs = loop tcs where+  loop :: [TerminationCheck] -> Nice TerminationCheck+  loop []         = return TerminationCheck+  loop (tc : tcs) = do+    let failure r = throwError $ InvalidMeasureMutual r+    tc' <- loop tcs+    case (tc, tc') of+      (TerminationCheck      , tc'                   ) -> return tc'+      (tc                    , TerminationCheck      ) -> return tc+      (NonTerminating        , NonTerminating        ) -> return NonTerminating+      (NoTerminationCheck    , NoTerminationCheck    ) -> return NoTerminationCheck+      (NoTerminationCheck    , Terminating           ) -> return Terminating+      (Terminating           , NoTerminationCheck    ) -> return Terminating+      (Terminating           , Terminating           ) -> return Terminating+      (TerminationMeasure{}  , TerminationMeasure{}  ) -> return tc+      (TerminationMeasure r _, NoTerminationCheck    ) -> failure r+      (TerminationMeasure r _, Terminating           ) -> failure r+      (NoTerminationCheck    , TerminationMeasure r _) -> failure r+      (Terminating           , TerminationMeasure r _) -> failure r+      (TerminationMeasure r _, NonTerminating        ) -> failure r+      (NonTerminating        , TerminationMeasure r _) -> failure r+      (NoTerminationCheck    , NonTerminating        ) -> failure r+      (Terminating           , NonTerminating        ) -> failure r+      (NonTerminating        , NoTerminationCheck    ) -> failure r+      (NonTerminating        , Terminating           ) -> failure r++-- | Nicifier monad.+--   Preserve the state when throwing an exception.++newtype Nice a = Nice { unNice :: ExceptT DeclarationException (State NiceEnv) a }+  deriving ( Functor, Applicative, Monad+           , MonadState NiceEnv, MonadError DeclarationException+           )++-- | Run a Nicifier computation, return result and warnings+--   (in chronological order).+runNice :: Nice a -> (Either DeclarationException a, NiceWarnings)+runNice m = second (reverse . niceWarn) $+  runExceptT (unNice m) `runState` initNiceEnv++-- | Nicifier state.++data NiceEnv = NiceEnv+  { _loneSigs :: LoneSigs+    -- ^ Lone type signatures that wait for their definition.+  , _termChk  :: TerminationCheck+    -- ^ Termination checking pragma waiting for a definition.+  , _posChk   :: PositivityCheck+    -- ^ Positivity checking pragma waiting for a definition.+  , _uniChk   :: UniverseCheck+    -- ^ Universe checking pragma waiting for a data/rec signature or definition.+  , _catchall :: Catchall+    -- ^ Catchall pragma waiting for a function clause.+  , niceWarn :: NiceWarnings+    -- ^ Stack of warnings. Head is last warning.+  }++type LoneSigs   = Map Name DataRecOrFun+type NiceWarnings = [DeclarationWarning]+     -- ^ Stack of warnings. Head is last warning.++-- | Initial nicifier state.++initNiceEnv :: NiceEnv+initNiceEnv = NiceEnv+  { _loneSigs = empty+  , _termChk  = TerminationCheck+  , _posChk   = True+  , _uniChk   = YesUniverseCheck+  , _catchall = False+  , niceWarn  = []+  }++-- * Handling the lone signatures, stored to infer mutual blocks.++-- | Lens for field '_loneSigs'.++loneSigs :: Lens' LoneSigs NiceEnv+loneSigs f e = f (_loneSigs e) <&> \ s -> e { _loneSigs = s }++-- | Adding a lone signature to the state.++addLoneSig :: Name -> DataRecOrFun -> Nice ()+addLoneSig x k = loneSigs %== \ s -> do+   let (mr, s') = Map.insertLookupWithKey (\ k new old -> new) x k s+   case mr of+     Nothing -> return s'+     Just{}  -> throwError $ DuplicateDefinition x++-- | Remove a lone signature from the state.++removeLoneSig :: Name -> Nice ()+removeLoneSig x = loneSigs %= Map.delete x++-- | Search for forward type signature.++getSig :: Name -> Nice (Maybe DataRecOrFun)+getSig x = Map.lookup x <$> use loneSigs++-- | Check that no lone signatures are left in the state.++noLoneSigs :: Nice Bool+noLoneSigs = null <$> use loneSigs++-- | Ensure that all forward declarations have been given a definition.++checkLoneSigs :: Map Name DataRecOrFun -> Nice ()+checkLoneSigs xs = do+  loneSigs .= Map.empty+  unless (Map.null xs) (niceWarning $ MissingDefinitions $ Map.keys xs)++-- | Lens for field '_termChk'.++terminationCheckPragma :: Lens' TerminationCheck NiceEnv+terminationCheckPragma f e = f (_termChk e) <&> \ s -> e { _termChk = s }++withTerminationCheckPragma :: TerminationCheck -> Nice a -> Nice a+withTerminationCheckPragma tc f = do+  tc_old <- use terminationCheckPragma+  terminationCheckPragma .= tc+  result <- f+  terminationCheckPragma .= tc_old+  return result++-- | Lens for field '_posChk'.++positivityCheckPragma :: Lens' PositivityCheck NiceEnv+positivityCheckPragma f e = f (_posChk e) <&> \ s -> e { _posChk = s }++withPositivityCheckPragma :: PositivityCheck -> Nice a -> Nice a+withPositivityCheckPragma pc f = do+  pc_old <- use positivityCheckPragma+  positivityCheckPragma .= pc+  result <- f+  positivityCheckPragma .= pc_old+  return result++-- | Lens for field '_uniChk'.++universeCheckPragma :: Lens' UniverseCheck NiceEnv+universeCheckPragma f e = f (_uniChk e) <&> \ s -> e { _uniChk = s }++withUniverseCheckPragma :: UniverseCheck -> Nice a -> Nice a+withUniverseCheckPragma uc f = do+  uc_old <- use universeCheckPragma+  universeCheckPragma .= uc+  result <- f+  universeCheckPragma .= uc_old+  return result++-- | Get universe check pragma from a data/rec signature.+--   Defaults to 'YesUniverseCheck'.++getUniverseCheckFromSig :: Name -> Nice UniverseCheck+getUniverseCheckFromSig x = maybe YesUniverseCheck universeCheck <$> getSig x++-- | Lens for field '_catchall'.++catchallPragma :: Lens' Catchall NiceEnv+catchallPragma f e = f (_catchall e) <&> \ s -> e { _catchall = s }++-- | Get current catchall pragma, and reset it for the next clause.++popCatchallPragma :: Nice Catchall+popCatchallPragma = do+  ca <- use catchallPragma+  catchallPragma .= False+  return ca++withCatchallPragma :: Catchall -> Nice a -> Nice a+withCatchallPragma ca f = do+  ca_old <- use catchallPragma+  catchallPragma .= ca+  result <- f+  catchallPragma .= ca_old+  return result++-- | Add a new warning.+niceWarning :: DeclarationWarning -> Nice ()+niceWarning w = modify $ \ st -> st { niceWarn = w : niceWarn st }++data DeclKind+    = LoneSig DataRecOrFun Name+    | LoneDefs DataRecOrFun [Name]+    | OtherDecl+  deriving (Eq, Show)++declKind :: NiceDeclaration -> DeclKind+declKind (FunSig _ _ _ _ _ _ tc x _)        = LoneSig (FunName tc) x+declKind (NiceRecSig _ _ _ pc uc x pars _)  = LoneSig (RecName pc uc) x+declKind (NiceDataSig _ _ _ pc uc x pars _) = LoneSig (DataName pc uc) x+declKind (FunDef r _ abs ins tc x _)        = LoneDefs (FunName tc) [x]+declKind (NiceDataDef _ _ _ pc uc x pars _) = LoneDefs (DataName pc uc) [x]+declKind (NiceRecDef _ _ _ pc uc x _ _ _ pars _)= LoneDefs (RecName pc uc) [x]+declKind (NiceUnquoteDef _ _ _ tc xs _)     = LoneDefs (FunName tc) xs+declKind Axiom{}                            = OtherDecl+declKind NiceField{}                        = OtherDecl+declKind PrimitiveFunction{}                = OtherDecl+declKind NiceMutual{}                       = OtherDecl+declKind NiceModule{}                       = OtherDecl+declKind NiceModuleMacro{}                  = OtherDecl+declKind NiceOpen{}                         = OtherDecl+declKind NiceImport{}                       = OtherDecl+declKind NicePragma{}                       = OtherDecl+declKind NiceFunClause{}                    = OtherDecl+declKind NicePatternSyn{}                   = OtherDecl+declKind NiceGeneralize{}                   = OtherDecl+declKind NiceUnquoteDecl{}                  = OtherDecl++-- | Replace (Data/Rec/Fun)Sigs with Axioms for postulated names+--   The first argument is a list of axioms only.+replaceSigs+  :: Map Name DataRecOrFun  -- ^ Lone signatures to be turned into Axioms+  -> [NiceDeclaration]      -- ^ Declarations containing them+  -> [NiceDeclaration]      -- ^ In the output, everything should be defined+replaceSigs ps = if Map.null ps then id else \case+  []     -> __IMPOSSIBLE__+  (d:ds) ->+    case replaceable d of+      -- If declaration d of x is mentioned in the map of lone signatures then replace+      -- it with an axiom+      Just (x, axiom) | (Just{}, ps') <- Map.updateLookupWithKey (\ _ _ -> Nothing) x ps+        -> axiom : replaceSigs ps' ds+      _ -> d     : replaceSigs ps  ds++  where++    -- A @replaceable@ declaration is a signature. It has a name and we can make an+    -- @Axiom@ out of it.+    replaceable :: NiceDeclaration -> Maybe (Name, NiceDeclaration)+    replaceable = \case+      FunSig r acc abst inst _ argi _ x e ->+        Just (x, Axiom r acc abst inst argi x e)+      NiceRecSig r acc abst _ _ x pars t ->+        let e = Generalized $ makePi (lamBindingsToTelescope r pars) t in+        Just (x, Axiom r acc abst NotInstanceDef defaultArgInfo x e)+      NiceDataSig r acc abst _ _ x pars t ->+        let e = Generalized $ makePi (lamBindingsToTelescope r pars) t in+        Just (x, Axiom r acc abst NotInstanceDef defaultArgInfo x e)+      _ -> Nothing++-- | Main. Fixities (or more precisely syntax declarations) are needed when+--   grouping function clauses.+niceDeclarations :: Fixities -> [Declaration] -> Nice [NiceDeclaration]+niceDeclarations fixs ds = do++  -- Run the nicifier in an initial environment. But keep the warnings.+  st <- get+  put $ initNiceEnv { niceWarn = niceWarn st }+  nds <- nice ds++  -- Check that every signature got its definition.+  ps <- use loneSigs+  checkLoneSigs ps+  -- We postulate the missing ones and insert them in place of the corresponding @FunSig@+  let ds = replaceSigs ps nds++  -- Note that loneSigs is ensured to be empty.+  -- (Important, since inferMutualBlocks also uses loneSigs state).+  res <- inferMutualBlocks ds++  -- Restore the old state, but keep the warnings.+  warns <- gets niceWarn+  put $ st { niceWarn = warns }+  return res++  where++    inferMutualBlocks :: [NiceDeclaration] -> Nice [NiceDeclaration]+    inferMutualBlocks [] = return []+    inferMutualBlocks (d : ds) =+      case declKind d of+        OtherDecl    -> (d :) <$> inferMutualBlocks ds+        LoneDefs{}   -> (d :) <$> inferMutualBlocks ds  -- Andreas, 2017-10-09, issue #2576: report error in ConcreteToAbstract+        LoneSig k x  -> do+          addLoneSig x k+          let tcpc = (pure . terminationCheck) &&& (pure . positivityCheck) $ k+          ((tcs, pcs), (nds0, ds1)) <- untilAllDefined tcpc ds+          -- If we still have lone signatures without any accompanying definition,+          -- we postulate the definition and substitute the axiom for the lone signature+          ps <- use loneSigs+          checkLoneSigs ps+          let ds0 = replaceSigs ps (d : nds0) -- NB: don't forget the LoneSig the block started with!+          -- We then keep processing the rest of the block+          tc <- combineTermChecks (getRange d) tcs+          (NiceMutual (getRange ds0) tc (and pcs) ds0 :) <$> inferMutualBlocks ds1+      where+        untilAllDefined :: ([TerminationCheck], [PositivityCheck])+                        -> [NiceDeclaration]+                        -> Nice (([TerminationCheck], [PositivityCheck]), ([NiceDeclaration], [NiceDeclaration]))+        untilAllDefined tcpc@(tc, pc) ds = do+          done <- noLoneSigs+          if done then return (tcpc, ([], ds)) else+            case ds of+              []     -> return (tcpc, ([], ds))+              d : ds -> case declKind d of+                LoneSig k x -> do+                  addLoneSig x k+                  let tcpc' = (terminationCheck k : tc, positivityCheck k : pc)+                  cons d (untilAllDefined tcpc' ds)+                LoneDefs k xs -> do+                  mapM_ removeLoneSig xs+                  let tcpc' = (terminationCheck k : tc, positivityCheck k : pc)+                  cons d (untilAllDefined tcpc' ds)+                OtherDecl   -> cons d (untilAllDefined tcpc ds)+          where+            -- ASR (26 December 2015): Type annotated version of the @cons@ function.+            -- cons d = fmap $+            --            (id :: (([TerminationCheck], [PositivityCheck]) -> ([TerminationCheck], [PositivityCheck])))+            --            *** (d :)+            --            *** (id :: [NiceDeclaration] -> [NiceDeclaration])+            cons d = fmap (id *** (d :) *** id)++    notMeasure TerminationMeasure{} = False+    notMeasure _ = True++    nice :: [Declaration] -> Nice [NiceDeclaration]+    nice [] = return []+    nice ds = do+      (xs , ys) <- nice1 ds+      (xs ++) <$> nice ys++    nice1 :: [Declaration] -> Nice ([NiceDeclaration], [Declaration])+    nice1 []     = return ([], []) -- Andreas, 2017-09-16, issue #2759: no longer __IMPOSSIBLE__+    nice1 (d:ds) = do+      let justWarning w = do niceWarning w; nice1 ds++      case d of++        (TypeSig info x t)            -> do+          termCheck <- use terminationCheckPragma+          let r = getRange d+          -- register x as lone type signature, to recognize clauses later+          addLoneSig x $ FunName termCheck+          return ([FunSig r PublicAccess ConcreteDef NotInstanceDef NotMacroDef info termCheck x t] , ds)++        Generalize r [] -> justWarning $ EmptyGeneralize r+        Generalize r sigs -> do+          gs <- forM sigs $ \case+            sig@(TypeSig info x t) -> do+              return $ NiceGeneralize (getRange sig) PublicAccess info x t+            _ -> __IMPOSSIBLE__+          return (gs, ds)++        (FunClause lhs _ _ _)         -> do+          termCheck <- use terminationCheckPragma+          catchall  <- popCatchallPragma+          xs <- map fst . filter (isFunName . snd) . Map.toList+                <$> use loneSigs+          -- for each type signature 'x' waiting for clauses, we try+          -- if we have some clauses for 'x'+          case [ (x, (fits, rest))+               | x <- xs+               , let (fits, rest) =+                      -- Anonymous declarations only have 1 clause each!+                      if isNoName x then ([d], ds)+                      else span (couldBeFunClauseOf (Map.lookup x fixs) x) (d : ds)+               , not (null fits)+               ] of++            -- case: clauses match none of the sigs+            [] -> case lhs of+              -- Subcase: The lhs is single identifier (potentially anonymous).+              -- Treat it as a function clause without a type signature.+              LHS p [] [] | Just x <- isSingleIdentifierP p -> do+                d  <- mkFunDef defaultArgInfo termCheck x Nothing [d] -- fun def without type signature is relevant+                return (d , ds)+              -- Subcase: The lhs is a proper pattern.+              -- This could be a let-pattern binding. Pass it on.+              -- A missing type signature error might be raise in ConcreteToAbstract+              _ -> do+                return ([NiceFunClause (getRange d) PublicAccess ConcreteDef termCheck catchall d] , ds)++            -- case: clauses match exactly one of the sigs+            [(x,(fits,rest))] -> do+               removeLoneSig x+               ds  <- expandEllipsis fits+               cs  <- mkClauses x ds False+               return ([FunDef (getRange fits) fits ConcreteDef NotInstanceDef termCheck x cs] , rest)++            -- case: clauses match more than one sigs (ambiguity)+            l -> throwError $ AmbiguousFunClauses lhs $ reverse $ map fst l -- "ambiguous function clause; cannot assign it uniquely to one type signature"++        Field{}                       -> (,ds) <$> niceAxioms FieldBlock [ d ]+        DataSig r CoInductive _ _ _   -> throwError (Codata r)+        Data r CoInductive _ _ _ _    -> throwError (Codata r)+        DataDef r CoInductive _ _ _   -> throwError (Codata r)++        DataSig r Inductive x tel t -> do+          pc <- use positivityCheckPragma+          uc <- use universeCheckPragma+          addLoneSig x $ DataName pc uc+          (,) <$> dataOrRec pc uc NiceDataDef NiceDataSig (niceAxioms DataBlock) r x (Just (tel, t)) Nothing+              <*> return ds++        Data r Inductive x tel t cs -> do+          pc <- use positivityCheckPragma+          -- Andreas, 2018-10-27, issue #3327+          -- Propagate {-# NO_UNIVERSE_CHECK #-} pragma from signature to definition.+          -- Universe check is performed if both the current value of+          -- 'universeCheckPragma' AND the one from the signature say so.+          uc <- use universeCheckPragma+          uc <- if uc == NoUniverseCheck then return uc else getUniverseCheckFromSig x+          mt <- defaultTypeSig (DataName pc uc) x (Just t)+          (,) <$> dataOrRec pc uc NiceDataDef NiceDataSig (niceAxioms DataBlock) r x ((tel,) <$> mt) (Just (tel, cs))+              <*> return ds++        DataDef r Inductive x tel cs -> do+          pc <- use positivityCheckPragma+          -- Andreas, 2018-10-27, issue #3327+          -- Propagate {-# NO_UNIVERSE_CHECK #-} pragma from signature to definition.+          -- Universe check is performed if both the current value of+          -- 'universeCheckPragma' AND the one from the signature say so.+          uc <- use universeCheckPragma+          uc <- if uc == NoUniverseCheck then return uc else getUniverseCheckFromSig x+          mt <- defaultTypeSig (DataName pc uc) x Nothing+          (,) <$> dataOrRec pc uc NiceDataDef NiceDataSig (niceAxioms DataBlock) r x ((tel,) <$> mt) (Just (tel, cs))+              <*> return ds++        RecordSig r x tel t         -> do+          pc <- use positivityCheckPragma+          uc <- use universeCheckPragma+          addLoneSig x $ RecName pc uc+          return ([NiceRecSig r PublicAccess ConcreteDef pc uc x tel t] , ds)++        Record r x i e c tel t cs   -> do+          pc <- use positivityCheckPragma+          -- Andreas, 2018-10-27, issue #3327+          -- Propagate {-# NO_UNIVERSE_CHECK #-} pragma from signature to definition.+          -- Universe check is performed if both the current value of+          -- 'universeCheckPragma' AND the one from the signature say so.+          uc <- use universeCheckPragma+          uc <- if uc == NoUniverseCheck then return uc else getUniverseCheckFromSig x+          mt <- defaultTypeSig (RecName pc uc) x (Just t)+          (,) <$> dataOrRec pc uc (\ r o a pc uc x tel cs -> NiceRecDef r o a pc uc x i e c tel cs) NiceRecSig+                    return r x ((tel,) <$> mt) (Just (tel, cs))+              <*> return ds++        RecordDef r x i e c tel cs   -> do+          pc <- use positivityCheckPragma+          -- Andreas, 2018-10-27, issue #3327+          -- Propagate {-# NO_UNIVERSE_CHECK #-} pragma from signature to definition.+          -- Universe check is performed if both the current value of+          -- 'universeCheckPragma' AND the one from the signature say so.+          uc <- use universeCheckPragma+          uc <- if uc == NoUniverseCheck then return uc else getUniverseCheckFromSig x+          mt <- defaultTypeSig (RecName pc uc) x Nothing+          (,) <$> dataOrRec pc uc (\ r o a pc uc x tel cs -> NiceRecDef r o a pc uc x i e c tel cs) NiceRecSig+                    return r x ((tel,) <$> mt) (Just (tel, cs))+              <*> return ds++        Mutual r []  -> justWarning $ EmptyMutual r+        Mutual r ds' ->+          (,ds) <$> (singleton <$> (mkOldMutual r =<< nice ds'))++        Abstract r []  -> justWarning $ EmptyAbstract r+        Abstract r ds' ->+          (,ds) <$> (abstractBlock r =<< nice ds')++        Private r UserWritten []  -> justWarning $ EmptyPrivate r+        Private r o ds' ->+          (,ds) <$> (privateBlock r o =<< nice ds')++        InstanceB r []  -> justWarning $ EmptyInstance r+        InstanceB r ds' ->+          (,ds) <$> (instanceBlock r =<< nice ds')++        Macro r []  -> justWarning $ EmptyMacro r+        Macro r ds' ->+          (,ds) <$> (macroBlock r =<< nice ds')++        Postulate r []  -> justWarning $ EmptyPostulate r+        Postulate _ ds' ->+          (,ds) <$> niceAxioms PostulateBlock ds'++        Primitive r []  -> justWarning $ EmptyPrimitive r+        Primitive _ ds' -> (,ds) <$> (map toPrim <$> niceAxioms PrimitiveBlock ds')++        Module r x tel ds' -> return $+          ([NiceModule r PublicAccess ConcreteDef x tel ds'] , ds)++        ModuleMacro r x modapp op is -> return $+          ([NiceModuleMacro r PublicAccess x modapp op is] , ds)++        -- Fixity and syntax declarations and polarity pragmas have+        -- already been processed.+        Infix _ _  -> return ([], ds)+        Syntax _ _ -> return ([], ds)++        PatternSyn r n as p -> do+          return ([NicePatternSyn r n as p] , ds)+        Open r x is         -> return ([NiceOpen r x is] , ds)+        Import r x as op is -> return ([NiceImport r x as op is] , ds)++        UnquoteDecl r xs e -> do+          tc  <- use terminationCheckPragma+          return ([NiceUnquoteDecl r PublicAccess ConcreteDef NotInstanceDef tc xs e] , ds)++        UnquoteDef r xs e -> do+          sigs <- map fst . filter (isFunName . snd) . Map.toList <$> use loneSigs+          let missing = filter (`notElem` sigs) xs+          if null missing+            then do+              mapM_ removeLoneSig xs+              return ([NiceUnquoteDef r PublicAccess ConcreteDef TerminationCheck xs e] , ds)+            else throwError $ UnquoteDefRequiresSignature missing++        Pragma p -> nicePragma p ds++    nicePragma :: Pragma -> [Declaration] -> Nice ([NiceDeclaration], [Declaration])++    nicePragma (TerminationCheckPragma r (TerminationMeasure _ x)) ds =+      if canHaveTerminationMeasure ds then+        withTerminationCheckPragma (TerminationMeasure r x) $ nice1 ds+      else do+        niceWarning $ InvalidTerminationCheckPragma r+        nice1 ds++    nicePragma (TerminationCheckPragma r NoTerminationCheck) ds = do+      -- This PRAGMA has been deprecated in favour of (NON_)TERMINATING+      -- We warn the user about it and then assume the function is NON_TERMINATING.+      niceWarning $ PragmaNoTerminationCheck r+      nicePragma (TerminationCheckPragma r NonTerminating) ds++    nicePragma (TerminationCheckPragma r tc) ds =+      if canHaveTerminationCheckPragma ds then+        withTerminationCheckPragma tc $ nice1 ds+      else do+        niceWarning $ InvalidTerminationCheckPragma r+        nice1 ds++    nicePragma (CatchallPragma r) ds =+      if canHaveCatchallPragma ds then+        withCatchallPragma True $ nice1 ds+      else do+        niceWarning $ InvalidCatchallPragma r+        nice1 ds++    nicePragma (NoPositivityCheckPragma r) ds =+      if canHaveNoPositivityCheckPragma ds then+        withPositivityCheckPragma False $ nice1 ds+      else do+        niceWarning $ InvalidNoPositivityCheckPragma r+        nice1 ds++    nicePragma (NoUniverseCheckPragma r) ds =+      if canHaveNoUniverseCheckPragma ds then+        withUniverseCheckPragma NoUniverseCheck $ nice1 ds+      else do+        niceWarning $ InvalidNoUniverseCheckPragma r+        nice1 ds++    nicePragma p@CompilePragma{} ds = do+      niceWarning $ PragmaCompiled (getRange p)+      return ([NicePragma (getRange p) p], ds)++    nicePragma (PolarityPragma{}) ds = return ([], ds)++    nicePragma (BuiltinPragma r str qn@(QName x)) ds = do+      return ([NicePragma r (BuiltinPragma r str qn)], ds)++    nicePragma p ds = return ([NicePragma (getRange p) p], ds)++    canHaveTerminationMeasure :: [Declaration] -> Bool+    canHaveTerminationMeasure [] = False+    canHaveTerminationMeasure (d:ds) = case d of+      TypeSig{} -> True+      (Pragma p) | isAttachedPragma p -> canHaveTerminationMeasure ds+      _         -> False++    canHaveTerminationCheckPragma :: [Declaration] -> Bool+    canHaveTerminationCheckPragma []     = False+    canHaveTerminationCheckPragma (d:ds) = case d of+      Mutual _ ds   -> any (canHaveTerminationCheckPragma . singleton) ds+      TypeSig{}     -> True+      FunClause{}   -> True+      UnquoteDecl{} -> True+      (Pragma p) | isAttachedPragma p -> canHaveTerminationCheckPragma ds+      _             -> False++    canHaveCatchallPragma :: [Declaration] -> Bool+    canHaveCatchallPragma []     = False+    canHaveCatchallPragma (d:ds) = case d of+      FunClause{} -> True+      (Pragma p) | isAttachedPragma p -> canHaveCatchallPragma ds+      _           -> False++    canHaveNoPositivityCheckPragma :: [Declaration] -> Bool+    canHaveNoPositivityCheckPragma []     = False+    canHaveNoPositivityCheckPragma (d:ds) = case d of+      Mutual _ ds                   -> any (canHaveNoPositivityCheckPragma . singleton) ds+      Data _ Inductive _ _ _ _      -> True+      DataSig _ Inductive _ _ _     -> True+      DataDef _ Inductive _ _ _     -> True+      Record{}                      -> True+      RecordSig{}                   -> True+      RecordDef{}                   -> True+      Pragma p | isAttachedPragma p -> canHaveNoPositivityCheckPragma ds+      _                             -> False++    canHaveNoUniverseCheckPragma :: [Declaration] -> Bool+    canHaveNoUniverseCheckPragma []     = False+    canHaveNoUniverseCheckPragma (d:ds) = case d of+      Data _ Inductive _ _ _ _      -> True+      DataSig _ Inductive _ _ _     -> True+      DataDef _ Inductive _ _ _     -> True+      Record{}                      -> True+      RecordSig{}                   -> True+      RecordDef{}                   -> True+      Pragma p | isAttachedPragma p -> canHaveNoPositivityCheckPragma ds+      _                             -> False++    -- Pragma that attaches to the following declaration.+    isAttachedPragma :: Pragma -> Bool+    isAttachedPragma p = case p of+      TerminationCheckPragma{}  -> True+      CatchallPragma{}          -> True+      NoPositivityCheckPragma{} -> True+      NoUniverseCheckPragma{}   -> True+      _                         -> False++    -- We could add a default type signature here, but at the moment we can't+    -- infer the type of a record or datatype, so better to just fail here.+    defaultTypeSig :: DataRecOrFun -> Name -> Maybe Expr -> Nice (Maybe Expr)+    defaultTypeSig k x t@Just{} = return t+    defaultTypeSig k x Nothing  = do+      caseMaybeM (getSig x) (return Nothing) $ \ k' -> do+        unless (sameKind k k') $ throwError $ WrongDefinition x k' k+        Nothing <$ removeLoneSig x++    dataOrRec+      :: forall a decl+      .  PositivityCheck+      -> UniverseCheck+      -> (Range -> Origin -> IsAbstract -> PositivityCheck -> UniverseCheck -> Name -> [LamBinding] -> [decl] -> NiceDeclaration)+         -- ^ Construct definition.+      -> (Range -> Access -> IsAbstract -> PositivityCheck -> UniverseCheck -> Name -> [LamBinding] -> Expr -> NiceDeclaration)+         -- ^ Construct signature.+      -> ([a] -> Nice [decl])+         -- ^ Constructor checking.+      -> Range+      -> Name          -- ^ Data/record type name.+      -> Maybe ([LamBinding], Expr)    -- ^ Parameters and type.  If not @Nothing@ a signature is created.+      -> Maybe ([LamBinding], [a])     -- ^ Parameters and constructors.  If not @Nothing@, a definition body is created.+      -> Nice [NiceDeclaration]+    dataOrRec pc uc mkDef mkSig niceD r x mt mcs = do+      mds <- Trav.forM mcs $ \ (tel, cs) -> (tel,) <$> niceD cs+      -- We set origin to UserWritten if the user split the data/rec herself,+      -- and to Inserted if the she wrote a single declaration that we're+      -- splitting up here. We distinguish these because the scoping rules for+      -- generalizable variables differ in these cases.+      let o | isJust mt && isJust mcs = Inserted+            | otherwise               = UserWritten+      return $ catMaybes $+        [ mt  <&> \ (tel, t)  -> mkSig (fuseRange x t) PublicAccess ConcreteDef pc uc x tel t+        , mds <&> \ (tel, ds) -> mkDef r o ConcreteDef pc uc x (caseMaybe mt tel $ const $ concatMap dropTypeAndModality tel) ds+          -- If a type is given (mt /= Nothing), we have to delete the types in @tel@+          -- for the data definition, lest we duplicate them. And also drop modalities (#1886).+        ]+      where+        -- | Drop type annotations and lets from bindings.+        dropTypeAndModality :: LamBinding -> [LamBinding]+        dropTypeAndModality (DomainFull (TBind _ xs _)) =+          map (DomainFree . setModality defaultModality) xs+        dropTypeAndModality (DomainFull TLet{}) = []+        dropTypeAndModality (DomainFree x) = [DomainFree $ setModality defaultModality x]++    -- Translate axioms+    niceAxioms :: KindOfBlock -> [TypeSignatureOrInstanceBlock] -> Nice [NiceDeclaration]+    niceAxioms b ds = liftM List.concat $ mapM (niceAxiom b) ds++    niceAxiom :: KindOfBlock -> TypeSignatureOrInstanceBlock -> Nice [NiceDeclaration]+    niceAxiom b d = case d of+      TypeSig rel x t -> do+        return [ Axiom (getRange d) PublicAccess ConcreteDef NotInstanceDef rel x t ]+      Field i x argt | b == FieldBlock -> do+        return [ NiceField (getRange d) PublicAccess ConcreteDef i x argt ]+      InstanceB r decls -> do+        instanceBlock r =<< niceAxioms InstanceBlock decls+      Pragma p@(RewritePragma r _) -> do+        return [ NicePragma r p ]+      _ -> throwError $ WrongContentBlock b $ getRange d++    toPrim :: NiceDeclaration -> NiceDeclaration+    toPrim (Axiom r p a i rel x t) = PrimitiveFunction r p a x t+    toPrim _                       = __IMPOSSIBLE__++    -- Create a function definition.+    mkFunDef info termCheck x mt ds0 = do+      ds <- expandEllipsis ds0+      cs <- mkClauses x ds False+      return [ FunSig (fuseRange x t) PublicAccess ConcreteDef NotInstanceDef NotMacroDef info termCheck x t+             , FunDef (getRange ds0) ds0 ConcreteDef NotInstanceDef termCheck x cs ]+        where+          t = case mt of+                Just t  -> t+                Nothing -> underscore (getRange x)++    underscore r = Underscore r Nothing+++    expandEllipsis :: [Declaration] -> Nice [Declaration]+    expandEllipsis [] = return []+    expandEllipsis (d@(FunClause lhs@(LHS p _ _) _ _ _) : ds)+      | hasEllipsis p = (d :) <$> expandEllipsis ds+      | otherwise     = (d :) <$> expand (killRange p) ds+      where+        expand :: Pattern -> [Declaration] -> Nice [Declaration]+        expand _ [] = return []+        expand p (d : ds) = do+          case d of+            Pragma (CatchallPragma _) -> do+                  (d :) <$> expand p ds+            FunClause (LHS p0 eqs es) rhs wh ca -> do+              case hasEllipsis' p0 of+                ManyHoles -> throwError $ MultipleEllipses p0+                OneHole cxt -> do+                  -- Replace the ellipsis by @p@.+                  let p1 = cxt p+                  let d' = FunClause (LHS p1 eqs es) rhs wh ca+                  -- If we have with-expressions (es /= []) then the following+                  -- ellipses also get the additional patterns in p0.+                  (d' :) <$> expand (if null es then p else killRange p1) ds+                ZeroHoles _ -> do+                  -- We can have ellipses after a fun clause without.+                  -- They refer to the last clause that introduced new with-expressions.+                  -- Same here: If we have new with-expressions, the next ellipses will+                  -- refer to us.+                  -- Andreas, Jesper, 2017-05-13, issue #2578+                  -- Need to update the range also on the next with-patterns.+                  (d :) <$> expand (if null es then p else killRange p0) ds+            _ -> __IMPOSSIBLE__+    expandEllipsis _ = __IMPOSSIBLE__++    -- Turn function clauses into nice function clauses.+    mkClauses :: Name -> [Declaration] -> Catchall -> Nice [Clause]+    mkClauses _ [] _ = return []+    mkClauses x (Pragma (CatchallPragma r) : cs) True  = do+      niceWarning $ InvalidCatchallPragma r+      mkClauses x cs True+    mkClauses x (Pragma (CatchallPragma r) : cs) False = do+      when (null cs) $ niceWarning $ InvalidCatchallPragma r+      mkClauses x cs True++    mkClauses x (FunClause lhs rhs wh ca : cs) catchall+      | null (lhsWithExpr lhs) || hasEllipsis lhs  =+      (Clause x (ca || catchall) lhs rhs wh [] :) <$> mkClauses x cs False   -- Will result in an error later.++    mkClauses x (FunClause lhs rhs wh ca : cs) catchall = do+      when (null withClauses) $ throwError $ MissingWithClauses x lhs+      wcs <- mkClauses x withClauses False+      (Clause x (ca || catchall) lhs rhs wh wcs :) <$> mkClauses x cs' False+      where+        (withClauses, cs') = subClauses cs++        -- A clause is a subclause if the number of with-patterns is+        -- greater or equal to the current number of with-patterns plus the+        -- number of with arguments.+        numWith = numberOfWithPatterns p + length es where LHS p _ es = lhs++        subClauses :: [Declaration] -> ([Declaration],[Declaration])+        subClauses (c@(FunClause (LHS p0 _ _) _ _ _) : cs)+         | isEllipsis p0 ||+           numberOfWithPatterns p0 >= numWith = mapFst (c:) (subClauses cs)+         | otherwise                           = ([], c:cs)+        subClauses (c@(Pragma (CatchallPragma r)) : cs) = case subClauses cs of+          ([], cs') -> ([], c:cs')+          (cs, cs') -> (c:cs, cs')+        subClauses [] = ([],[])+        subClauses _  = __IMPOSSIBLE__+    mkClauses _ _ _ = __IMPOSSIBLE__++    -- for finding clauses for a type sig in mutual blocks+    couldBeFunClauseOf :: Maybe Fixity' -> Name -> Declaration -> Bool+    couldBeFunClauseOf mFixity x (Pragma (CatchallPragma{})) = True+    couldBeFunClauseOf mFixity x (FunClause (LHS p _ _) _ _ _) = hasEllipsis p ||+      let+      pns        = patternNames p+      xStrings   = nameStringParts x+      patStrings = concatMap nameStringParts pns+      in+--          trace ("x = " ++ prettyShow x) $+--          trace ("pns = " ++ show pns) $+--          trace ("xStrings = " ++ show xStrings) $+--          trace ("patStrings = " ++ show patStrings) $+--          trace ("mFixity = " ++ show mFixity) $+      case (headMaybe pns, mFixity) of+        -- first identifier in the patterns is the fun.symbol?+        (Just y, _) | x == y -> True -- trace ("couldBe since y = " ++ prettyShow y) $ True+        -- are the parts of x contained in p+        _ | xStrings `isSublistOf` patStrings -> True -- trace ("couldBe since isSublistOf") $ True+        -- looking for a mixfix fun.symb+        (_, Just fix) ->  -- also matches in case of a postfix+           let notStrings = stringParts (theNotation fix)+           in  -- trace ("notStrings = " ++ show notStrings) $+               -- trace ("patStrings = " ++ show patStrings) $+               (not $ null notStrings) && (notStrings `isSublistOf` patStrings)+        -- not a notation, not first id: give up+        _ -> False -- trace ("couldBe not (case default)") $ False+    couldBeFunClauseOf _ _ _ = False -- trace ("couldBe not (fun default)") $ False++    -- | Turn an old-style mutual block into a new style mutual block+    --   by pushing the definitions to the end.+    mkOldMutual+      :: Range                -- ^ Range of the whole @mutual@ block.+      -> [NiceDeclaration]    -- ^ Declarations inside the block.+      -> Nice NiceDeclaration -- ^ Returns a 'NiceMutual'.+    mkOldMutual r ds' = do+        -- Postulate the missing definitions+        let ps = Map.fromList loneNames+        checkLoneSigs ps+        let ds = replaceSigs ps ds'++        -- -- Remove the declarations that aren't allowed in old style mutual blocks+        -- ds <- fmap catMaybes $ forM ds $ \ d -> let success = pure (Just d) in case d of+        --   -- Andreas, 2013-11-23 allow postulates in mutual blocks+        --   Axiom{}          -> success+        --   -- Andreas, 2017-10-09, issue #2576, raise error about missing type signature+        --   -- in ConcreteToAbstract rather than here.+        --   NiceFunClause{}  -> success+        --   -- Andreas, 2018-05-11, issue #3052, allow pat.syn.s in mutual blocks+        --   NicePatternSyn{} -> success+        --   -- Otherwise, only categorized signatures and definitions are allowed:+        --   -- Data, Record, Fun+        --   _ -> if (declKind d /= OtherDecl) then success+        --        else Nothing <$ niceWarning (NotAllowedInMutual (getRange d) $ declName d)+        -- Sort the declarations in the mutual block.+        -- Declarations of names go to the top.  (Includes module definitions.)+        -- Definitions of names go to the bottom.+        -- Some declarations are forbidden, as their positioning could confuse+        -- the user.+        (top, bottom, invalid) <- forEither3M ds $ \ d -> do+          let top       = return (In1 d)+              bottom    = return (In2 d)+              invalid s = In3 d <$ do niceWarning $ NotAllowedInMutual (getRange d) s+          case d of+            -- Andreas, 2013-11-23 allow postulates in mutual blocks+            Axiom{}             -> top+            NiceField{}         -> top+            PrimitiveFunction{} -> top+            -- Nested mutual blocks should have been flattened by now.+            NiceMutual{}        -> __IMPOSSIBLE__+            -- Andreas, 2018-10-29, issue #3246+            -- We could allow modules (top), but this is potentially confusing.+            NiceModule{}        -> invalid "Module definitions"+            NiceModuleMacro{}   -> top+            NiceOpen{}          -> top+            NiceImport{}        -> top+            NiceRecSig{}        -> top+            NiceDataSig{}       -> top+            -- Andreas, 2017-10-09, issue #2576, raise error about missing type signature+            -- in ConcreteToAbstract rather than here.+            NiceFunClause{}     -> bottom+            FunSig{}            -> top+            FunDef{}            -> bottom+            NiceDataDef{}       -> bottom+            NiceRecDef{}        -> bottom+            -- Andreas, 2018-05-11, issue #3052, allow pat.syn.s in mutual blocks+            -- Andreas, 2018-10-29: We shift pattern synonyms to the bottom+            -- since they might refer to constructors defined in a data types+            -- just above them.+            NicePatternSyn{}    -> bottom+            NiceGeneralize{}    -> top+            NiceUnquoteDecl{}   -> top+            NiceUnquoteDef{}    -> bottom+            NicePragma r pragma -> case pragma of++              OptionsPragma{}           -> top     -- error thrown in the type checker++              -- Some builtins require a definition, and they affect type checking+              -- Thus, we do not handle BUILTINs in mutual blocks (at least for now).+              BuiltinPragma{}           -> invalid "BUILTIN pragmas"++              -- The REWRITE pragma behaves differently before or after the def.+              -- and affects type checking.  Thus, we refuse it here.+              RewritePragma{}           -> invalid "REWRITE pragmas"++              -- Compiler pragmas are not needed for type checking, thus,+              -- can go to the bottom.+              ForeignPragma{}           -> bottom+              CompilePragma{}           -> bottom++              StaticPragma{}            -> bottom+              InlinePragma{}            -> bottom++              ImpossiblePragma{}        -> top     -- error thrown in scope checker+              EtaPragma{}               -> bottom  -- needs record definition+              WarningOnUsage{}          -> top+              InjectivePragma{}         -> top     -- only needs name, not definition+              DisplayPragma{}           -> top     -- only for printing++              -- The attached pragmas have already been handled at this point.+              CatchallPragma{}          -> __IMPOSSIBLE__+              TerminationCheckPragma{}  -> __IMPOSSIBLE__+              NoPositivityCheckPragma{} -> __IMPOSSIBLE__+              PolarityPragma{}          -> __IMPOSSIBLE__+              NoUniverseCheckPragma{}   -> __IMPOSSIBLE__++        -- -- Pull type signatures to the top+        -- let (sigs, other) = List.partition isTypeSig ds++        -- -- Push definitions to the bottom+        -- let (other, defs) = flip List.partition ds $ \case+        --       FunDef{}         -> False+        --       NiceDataDef{}    -> False+        --       NiceRecDef{}         -> False+        --       NiceFunClause{}  -> False+        --       NicePatternSyn{} -> False+        --       NiceUnquoteDef{} -> False+        --       _ -> True++        -- Compute termination checking flag for mutual block+        tc0 <- use terminationCheckPragma+        let tcs = map termCheck ds+        tc <- combineTermChecks r (tc0:tcs)++        -- Compute positivity checking flag for mutual block+        pc0 <- use positivityCheckPragma+        let pc :: PositivityCheck+            pc = pc0 && all positivityCheckOldMutual ds++        return $ NiceMutual r tc pc $ top ++ bottom+        -- return $ NiceMutual r tc pc $ other ++ defs+        -- return $ NiceMutual r tc pc $ sigs ++ other+      where++        -- isTypeSig Axiom{}                     = True+        -- isTypeSig d | LoneSig{} <- declKind d = True+        -- isTypeSig _                           = False++        sigNames  = [ (x, k) | LoneSig k x <- map declKind ds' ]+        defNames  = [ (x, k) | LoneDefs k xs <- map declKind ds', x <- xs ]+        -- compute the set difference with equality just on names+        loneNames = [ (x, k) | (x, k) <- sigNames, List.all ((x /=) . fst) defNames ]++        -- Andreas, 2013-02-28 (issue 804):+        -- do not termination check a mutual block if any of its+        -- inner declarations comes with a {-# NO_TERMINATION_CHECK #-}+        termCheck (FunSig _ _ _ _ _ _ tc _ _)      = tc+        termCheck (FunDef _ _ _ _ tc _ _)          = tc+        -- ASR (28 December 2015): Is this equation necessary?+        termCheck (NiceMutual _ tc _ _)            = __IMPOSSIBLE__+        termCheck (NiceUnquoteDecl _ _ _ _ tc _ _) = tc+        termCheck (NiceUnquoteDef _ _ _ tc _ _)    = tc+        termCheck Axiom{}                          = TerminationCheck+        termCheck NiceField{}                      = TerminationCheck+        termCheck PrimitiveFunction{}              = TerminationCheck+        termCheck NiceModule{}                     = TerminationCheck+        termCheck NiceModuleMacro{}                = TerminationCheck+        termCheck NiceOpen{}                       = TerminationCheck+        termCheck NiceImport{}                     = TerminationCheck+        termCheck NicePragma{}                     = TerminationCheck+        termCheck NiceRecSig{}                     = TerminationCheck+        termCheck NiceDataSig{}                    = TerminationCheck+        termCheck NiceFunClause{}                  = TerminationCheck+        termCheck NiceDataDef{}                    = TerminationCheck+        termCheck NiceRecDef{}                         = TerminationCheck+        termCheck NicePatternSyn{}                 = TerminationCheck+        termCheck NiceGeneralize{}                 = TerminationCheck++        -- ASR (26 December 2015): Do not positivity check a mutual+        -- block if any of its inner declarations comes with a+        -- NO_POSITIVITY_CHECK pragma. See Issue 1614.+        positivityCheckOldMutual :: NiceDeclaration -> PositivityCheck+        positivityCheckOldMutual (NiceDataDef _ _ _ pc _ _ _ _) = pc+        positivityCheckOldMutual (NiceDataSig _ _ _ pc _ _ _ _) = pc+        positivityCheckOldMutual (NiceMutual _ _ pc _)          = __IMPOSSIBLE__+        positivityCheckOldMutual (NiceRecSig _ _ _ pc _ _ _ _)  = pc+        positivityCheckOldMutual (NiceRecDef _ _ _ pc _ _ _ _ _ _ _)= pc+        positivityCheckOldMutual _                              = True++        -- A mutual block cannot have a measure,+        -- but it can skip termination check.++    abstractBlock _ [] = return []+    abstractBlock r ds = do+      let (ds', anyChange) = runChange $ mkAbstract ds+          inherited        = r == noRange+      if anyChange then return ds' else do+        -- hack to avoid failing on inherited abstract blocks in where clauses+        unless inherited $ niceWarning $ UselessAbstract r+        return ds -- no change!++    privateBlock _ _ [] = return []+    privateBlock r o ds = do+      let (ds', anyChange) = runChange $ mkPrivate o ds+      if anyChange then return ds' else do+        when (o == UserWritten) $ niceWarning $ UselessPrivate r+        return ds -- no change!++    instanceBlock _ [] = return []+    instanceBlock r ds = do+      let (ds', anyChange) = runChange $ mapM mkInstance ds+      if anyChange then return ds' else do+        niceWarning $ UselessInstance r+        return ds -- no change!++    -- Make a declaration eligible for instance search.+    mkInstance :: Updater NiceDeclaration+    mkInstance d =+      case d of+        Axiom r p a i rel x e          -> (\ i -> Axiom r p a i rel x e) <$> setInstance i+        FunSig r p a i m rel tc x e    -> (\ i -> FunSig r p a i m rel tc x e) <$> setInstance i+        NiceUnquoteDecl r p a i tc x e -> (\ i -> NiceUnquoteDecl r p a i tc x e) <$> setInstance i+        NiceMutual r termCheck pc ds   -> NiceMutual r termCheck pc <$> mapM mkInstance ds+        NiceFunClause{}                -> return d+        FunDef r ds a i tc x cs        -> (\ i -> FunDef r ds a i tc x cs) <$> setInstance i+        NiceField{}                    -> return d  -- Field instance are handled by the parser+        PrimitiveFunction{}            -> return d+        NiceUnquoteDef{}               -> return d+        NiceRecSig{}                   -> return d+        NiceDataSig{}                  -> return d+        NiceModuleMacro{}              -> return d+        NiceModule{}                   -> return d+        NicePragma{}                   -> return d+        NiceOpen{}                     -> return d+        NiceImport{}                   -> return d+        NiceDataDef{}                  -> return d+        NiceRecDef{}                       -> return d+        NicePatternSyn{}               -> return d+        NiceGeneralize{}               -> return d++    setInstance :: Updater IsInstance+    setInstance i = case i of+      InstanceDef -> return i+      _           -> dirty $ InstanceDef++    macroBlock r ds = mapM mkMacro ds++    mkMacro :: NiceDeclaration -> Nice NiceDeclaration+    mkMacro d =+      case d of+        FunSig r p a i _ rel tc x e -> return $ FunSig r p a i MacroDef rel tc x e+        FunDef{}                    -> return d+        _                           -> throwError (BadMacroDef d)++-- | Make a declaration abstract.+--+-- Mark computation as 'dirty' if there was a declaration that could be made abstract.+-- If no abstraction is taking place, we want to complain about 'UselessAbstract'.+--+-- Alternatively, we could only flag 'dirty' if a non-abstract thing was abstracted.+-- Then, nested @abstract@s would sometimes also be complained about.++class MakeAbstract a where+  mkAbstract :: Updater a+  default mkAbstract :: (Traversable f, MakeAbstract a', a ~ f a') => Updater a+  mkAbstract = traverse mkAbstract++instance MakeAbstract a => MakeAbstract [a] where+  -- Default definition kicks in here!+  -- But note that we still have to declare the instance!++-- Leads to overlap with 'WhereClause':+-- instance (Traversable f, MakeAbstract a) => MakeAbstract (f a) where+--   mkAbstract = traverse mkAbstract++instance MakeAbstract IsAbstract where+  mkAbstract a = case a of+    AbstractDef -> return a+    ConcreteDef -> dirty $ AbstractDef++instance MakeAbstract NiceDeclaration where+  mkAbstract d =+    case d of+      NiceMutual r termCheck pc ds     -> NiceMutual r termCheck pc <$> mkAbstract ds+      FunDef r ds a i tc x cs          -> (\ a -> FunDef r ds a i tc x) <$> mkAbstract a <*> mkAbstract cs+      NiceDataDef r o a pc uc x ps cs  -> (\ a -> NiceDataDef r o a pc uc x ps) <$> mkAbstract a <*> mkAbstract cs+      NiceRecDef r o a pc uc x i e c ps cs -> (\ a -> NiceRecDef r o a pc uc x i e c ps) <$> mkAbstract a <*> return cs+      NiceFunClause r p a termCheck catchall d  -> (\ a -> NiceFunClause r p a termCheck catchall d) <$> mkAbstract a+      -- The following declarations have an @InAbstract@ field+      -- but are not really definitions, so we do count them into+      -- the declarations which can be made abstract+      -- (thus, do not notify progress with @dirty@).+      Axiom r p a i rel x e          -> return $ Axiom             r p AbstractDef i rel x e+      FunSig r p a i m rel tc x e    -> return $ FunSig            r p AbstractDef i m rel tc x e+      NiceRecSig r p a pc uc x ls t  -> return $ NiceRecSig        r p AbstractDef pc uc x ls t+      NiceDataSig r p a pc uc x ls t -> return $ NiceDataSig       r p AbstractDef pc uc x ls t+      NiceField r p _ i x e          -> return $ NiceField         r p AbstractDef i x e+      PrimitiveFunction r p _ x e    -> return $ PrimitiveFunction r p AbstractDef x e+      -- Andreas, 2016-07-17 it does have effect on unquoted defs.+      -- Need to set updater state to dirty!+      NiceUnquoteDecl r p _ i t x e  -> dirty $ NiceUnquoteDecl r p AbstractDef i t x e+      NiceUnquoteDef r p _ t x e     -> dirty $ NiceUnquoteDef r p AbstractDef t x e+      NiceModule{}                     -> return d+      NiceModuleMacro{}                -> return d+      NicePragma{}                     -> return d+      NiceOpen{}                       -> return d+      NiceImport{}                     -> return d+      NicePatternSyn{}                 -> return d+      NiceGeneralize{}                 -> return d++instance MakeAbstract Clause where+  mkAbstract (Clause x catchall lhs rhs wh with) = do+    Clause x catchall lhs rhs <$> mkAbstract wh <*> mkAbstract with++-- | Contents of a @where@ clause are abstract if the parent is.+instance MakeAbstract WhereClause where+  mkAbstract  NoWhere           = return $ NoWhere+  mkAbstract (AnyWhere ds)      = dirty $ AnyWhere [Abstract noRange ds]+  mkAbstract (SomeWhere m a ds) = dirty $ SomeWhere m a [Abstract noRange ds]++-- | Make a declaration private.+--+-- Andreas, 2012-11-17:+-- Mark computation as 'dirty' if there was a declaration that could be privatized.+-- If no privatization is taking place, we want to complain about 'UselessPrivate'.+--+-- Alternatively, we could only flag 'dirty' if a non-private thing was privatized.+-- Then, nested @private@s would sometimes also be complained about.++class MakePrivate a where+  mkPrivate :: Origin -> Updater a+  default mkPrivate :: (Traversable f, MakePrivate a', a ~ f a') => Origin -> Updater a+  mkPrivate o = traverse $ mkPrivate o++instance MakePrivate a => MakePrivate [a] where+  -- Default definition kicks in here!+  -- But note that we still have to declare the instance!++-- Leads to overlap with 'WhereClause':+-- instance (Traversable f, MakePrivate a) => MakePrivate (f a) where+--   mkPrivate = traverse mkPrivate++instance MakePrivate Access where+  mkPrivate o p = case p of+    PrivateAccess{} -> return p  -- OR? return $ PrivateAccess o+    _               -> dirty $ PrivateAccess o++instance MakePrivate NiceDeclaration where+  mkPrivate o d =+    case d of+      Axiom r p a i rel x e                    -> (\ p -> Axiom r p a i rel x e)                    <$> mkPrivate o p+      NiceField r p a i x e                    -> (\ p -> NiceField r p a i x e)                    <$> mkPrivate o p+      PrimitiveFunction r p a x e              -> (\ p -> PrimitiveFunction r p a x e)              <$> mkPrivate o p+      NiceMutual r termCheck pc ds             -> (\ p -> NiceMutual r termCheck pc p)              <$> mkPrivate o ds+      NiceModule r p a x tel ds                -> (\ p -> NiceModule r p a x tel ds)                <$> mkPrivate o p+      NiceModuleMacro r p x ma op is           -> (\ p -> NiceModuleMacro r p x ma op is)           <$> mkPrivate o p+      FunSig r p a i m rel tc x e              -> (\ p -> FunSig r p a i m rel tc x e)              <$> mkPrivate o p+      NiceRecSig r p a pc uc x ls t            -> (\ p -> NiceRecSig r p a pc uc x ls t)            <$> mkPrivate o p+      NiceDataSig r p a pc uc x ls t           -> (\ p -> NiceDataSig r p a pc uc x ls t)           <$> mkPrivate o p+      NiceFunClause r p a termCheck catchall d -> (\ p -> NiceFunClause r p a termCheck catchall d) <$> mkPrivate o p+      NiceUnquoteDecl r p a i t x e            -> (\ p -> NiceUnquoteDecl r p a i t x e)            <$> mkPrivate o p+      NiceUnquoteDef r p a t x e               -> (\ p -> NiceUnquoteDef r p a t x e)               <$> mkPrivate o p+      NiceGeneralize r p i x t                 -> (\ p -> NiceGeneralize r p i x t)                 <$> mkPrivate o p+      NicePragma _ _                           -> return $ d+      NiceOpen _ _ _                           -> return $ d+      NiceImport _ _ _ _ _                     -> return $ d+      -- Andreas, 2016-07-08, issue #2089+      -- we need to propagate 'private' to the named where modules+      FunDef r ds a i tc x cls                 -> FunDef r ds a i tc x <$> mkPrivate o cls+      NiceDataDef{}                            -> return $ d+      NiceRecDef{}                             -> return $ d+      NicePatternSyn _ _ _ _                   -> return $ d++instance MakePrivate Clause where+  mkPrivate o (Clause x catchall lhs rhs wh with) = do+    Clause x catchall lhs rhs <$> mkPrivate o wh <*> mkPrivate o with++instance MakePrivate WhereClause where+  mkPrivate o  NoWhere         = return $ NoWhere+  -- @where@-declarations are protected behind an anonymous module,+  -- thus, they are effectively private by default.+  mkPrivate o (AnyWhere ds)    = return $ AnyWhere ds+  -- Andreas, 2016-07-08+  -- A @where@-module is private if the parent function is private.+  -- The contents of this module are not private, unless declared so!+  -- Thus, we do not recurse into the @ds@ (could not anyway).+  mkPrivate o (SomeWhere m a ds) = mkPrivate o a <&> \ a' -> SomeWhere m a' ds++-- The following function is (at the time of writing) only used three+-- times: for building Lets, and for printing error messages.++-- | (Approximately) convert a 'NiceDeclaration' back to a list of+-- 'Declaration's.+notSoNiceDeclarations :: NiceDeclaration -> [Declaration]+notSoNiceDeclarations d =+  case d of+    Axiom _ _ _ i rel x e          -> inst i [TypeSig rel x e]+    NiceField _ _ _ i x argt       -> [Field i x argt]+    PrimitiveFunction r _ _ x e    -> [Primitive r [TypeSig defaultArgInfo x e]]+    NiceMutual r _ _ ds            -> [Mutual r $ concatMap notSoNiceDeclarations ds]+    NiceModule r _ _ x tel ds      -> [Module r x tel ds]+    NiceModuleMacro r _ x ma o dir -> [ModuleMacro r x ma o dir]+    NiceOpen r x dir               -> [Open r x dir]+    NiceImport r x as o dir        -> [Import r x as o dir]+    NicePragma _ p                 -> [Pragma p]+    NiceRecSig r _ _ _ _ x bs e    -> [RecordSig r x bs e]+    NiceDataSig r _ _ _ _ x bs e   -> [DataSig r Inductive x bs e]+    NiceFunClause _ _ _ _ _ d      -> [d]+    FunSig _ _ _ i _ rel tc x e    -> inst i [TypeSig rel x e]+    FunDef _r ds _ _ _ _ _         -> ds+    NiceDataDef r _ _ _ _ x bs cs  -> [DataDef r Inductive x bs $ concatMap notSoNiceDeclarations cs]+    NiceRecDef r _ _ _ _ x i e c bs ds -> [RecordDef r x i e c bs ds]+    NicePatternSyn r n as p        -> [PatternSyn r n as p]+    NiceGeneralize r _ i n e       -> [Generalize r [TypeSig i n e]]+    NiceUnquoteDecl r _ _ i _ x e  -> inst i [UnquoteDecl r x e]+    NiceUnquoteDef r _ _ _ x e     -> [UnquoteDef r x e]+  where+    inst InstanceDef    ds = [InstanceB (getRange ds) ds]+    inst NotInstanceDef ds = ds++-- | Has the 'NiceDeclaration' a field of type 'IsAbstract'?+niceHasAbstract :: NiceDeclaration -> Maybe IsAbstract+niceHasAbstract d =+  case d of+    Axiom{}                       -> Nothing+    NiceField _ _ a _ _ _         -> Just a+    PrimitiveFunction _ _ a _ _   -> Just a+    NiceMutual{}                  -> Nothing+    NiceModule _ _ a _ _ _        -> Just a+    NiceModuleMacro{}             -> Nothing+    NiceOpen{}                    -> Nothing+    NiceImport{}                  -> Nothing+    NicePragma{}                  -> Nothing+    NiceRecSig{}                  -> Nothing+    NiceDataSig{}                 -> Nothing+    NiceFunClause _ _ a _ _ _     -> Just a+    FunSig{}                      -> Nothing+    FunDef _ _ a _ _ _ _          -> Just a+    NiceDataDef _ _ a _ _ _ _ _   -> Just a+    NiceRecDef _ _ a _ _ _ _ _ _ _ _ -> Just a+    NicePatternSyn{}              -> Nothing+    NiceGeneralize{}              -> Nothing+    NiceUnquoteDecl _ _ a _ _ _ _ -> Just a+    NiceUnquoteDef _ _ a _ _ _    -> Just a
+ src/full/Agda/Syntax/Concrete/Fixity.hs view
@@ -0,0 +1,239 @@+{-# LANGUAGE CPP #-}+-- | Collecting fixity declarations (and polarity pragmas) for concrete+--   declarations.+module Agda.Syntax.Concrete.Fixity+  ( Fixities, Polarities, MonadFixityError(..)+  , DoWarn(..)+  , fixitiesAndPolarities+  ) where++import Prelude hiding (null)+import Control.Monad+import Data.Map (Map)+import qualified Data.Map as Map+import Data.Set (Set)+import qualified Data.Set as Set+import Data.Semigroup++import Agda.Syntax.Common+import Agda.Syntax.Position+import Agda.Syntax.Fixity+import Agda.Syntax.Notation+import Agda.Syntax.Concrete+import Agda.Syntax.Builtin (builtinsNoDef)+import Agda.TypeChecking.Positivity.Occurrence (Occurrence)++import Agda.Utils.Functor+import Agda.Utils.Null+import Agda.Utils.Impossible++#include "undefined.h"++type Fixities   = Map Name Fixity'+type Polarities = Map Name [Occurrence]++class Monad m => MonadFixityError m where+  throwMultipleFixityDecls            :: [(Name, [Fixity'])] -> m a+  throwMultiplePolarityPragmas        :: [Name] -> m a+  warnUnknownNamesInFixityDecl        :: [Name] -> m ()+  warnUnknownNamesInPolarityPragmas   :: [Name] -> m ()+  warnUnknownFixityInMixfixDecl       :: [Name] -> m ()+  warnPolarityPragmasButNotPostulates :: [Name] -> m ()++-- | Add more fixities. Throw an exception for multiple fixity declarations.+--   OR:  Disjoint union of fixity maps.  Throws exception if not disjoint.++plusFixities :: MonadFixityError m => Fixities -> Fixities -> m Fixities+plusFixities m1 m2+    -- If maps are not disjoint, report conflicts as exception.+    | not (null isect) = throwMultipleFixityDecls isect+    -- Otherwise, do the union.+    | otherwise        = return $ Map.unionWithKey mergeFixites m1 m2+  where+    --  Merge two fixities, assuming there is no conflict+    mergeFixites name (Fixity' f1 s1 r1) (Fixity' f2 s2 r2) = Fixity' f s $ fuseRange r1 r2+              where f | f1 == noFixity = f2+                      | f2 == noFixity = f1+                      | otherwise = __IMPOSSIBLE__+                    s | s1 == noNotation = s2+                      | s2 == noNotation = s1+                      | otherwise = __IMPOSSIBLE__++    -- Compute a list of conflicts in a format suitable for error reporting.+    isect = [ (x, map (Map.findWithDefault __IMPOSSIBLE__ x) [m1,m2])+            | (x, False) <- Map.assocs $ Map.intersectionWith compatible m1 m2 ]++    -- Check for no conflict.+    compatible (Fixity' f1 s1 _) (Fixity' f2 s2 _) =+      (f1 == noFixity   || f2 == noFixity  ) &&+      (s1 == noNotation || s2 == noNotation)++-- | While 'Fixities' and Polarities are not semigroups under disjoint+--   union (which might fail), we get a semigroup instance for the+--   monadic @m (Fixities, Polarities)@ which propagates the first+--   error.+newtype MonadicFixPol m = MonadicFixPol { runMonadicFixPol :: m (Fixities, Polarities) }++returnFix :: Monad m => Fixities -> MonadicFixPol m+returnFix fx = MonadicFixPol $ return (fx, Map.empty)++returnPol :: Monad m => Polarities -> MonadicFixPol m+returnPol pol = MonadicFixPol $ return (Map.empty, pol)++instance MonadFixityError m => Semigroup (MonadicFixPol m) where+  c1 <> c2 = MonadicFixPol $ do+    (f1, p1) <- runMonadicFixPol c1+    (f2, p2) <- runMonadicFixPol c2+    f <- plusFixities f1 f2+    p <- mergePolarities p1 p2+    return (f, p)+    where+    mergePolarities p1 p2+      | Set.null i = return (Map.union p1 p2)+      | otherwise  = throwMultiplePolarityPragmas (Set.toList i)+      where+      i = Set.intersection (Map.keysSet p1) (Map.keysSet p2)++instance MonadFixityError m => Monoid (MonadicFixPol m) where+  mempty  = MonadicFixPol $ return (Map.empty, Map.empty)+  mappend = (<>)++data DoWarn = NoWarn | DoWarn+  deriving (Eq, Show)++-- | Get the fixities and polarity pragmas from the current block.+--   Doesn't go inside modules and where blocks.+--   The reason for this is that these declarations have to appear at the same+--   level (or possibly outside an abstract or mutual block) as their target+--   declaration.+fixitiesAndPolarities :: MonadFixityError m => DoWarn -> [Declaration] -> m (Fixities, Polarities)+fixitiesAndPolarities doWarn ds = do+  (fixs, pols) <- runMonadicFixPol $ fixitiesAndPolarities' ds+  let DeclaredNames declared postulates privateNames = foldMap declaredNames ds+  let publicNames = declared Set.\\ privateNames++  -- If we have names in fixity declarations which are not defined in the+  -- appropriate scope, raise a warning and delete them from fixs.+  fixs <- ifNull (Map.keysSet fixs Set.\\ declared) (return fixs) $ \ unknownFixs -> do+    when (doWarn == DoWarn) $ warnUnknownNamesInFixityDecl $ Set.toList unknownFixs+    -- Note: Data.Map.restrictKeys requires containers >= 0.5.8.2+    -- return $ Map.restrictKeys fixs declared+    return $ Map.filterWithKey (\ k _ -> Set.member k declared) fixs++  -- Same for undefined names in polarity declarations.+  pols <- ifNull (Map.keysSet pols Set.\\ declared) (return pols) $+    \ unknownPols -> do+      when (doWarn == DoWarn) $ warnUnknownNamesInPolarityPragmas $ Set.toList unknownPols+      -- Note: Data.Map.restrictKeys requires containers >= 0.5.8.2+      -- return $ Map.restrictKeys polarities declared+      return $ Map.filterWithKey (\ k _ -> Set.member k declared) pols++  -- If we have public mixfix identifiers without a corresponding fixity+  -- declaration, we raise a warning+  ifNull (Set.filter isOpenMixfix publicNames Set.\\ Map.keysSet fixs) (return ()) $+    when (doWarn == DoWarn) . warnUnknownFixityInMixfixDecl . Set.toList++  -- Check that every polarity pragma is used for a postulate.+  ifNull (Map.keysSet pols Set.\\ postulates) (return ()) $+    when (doWarn == DoWarn) . warnPolarityPragmasButNotPostulates . Set.toList++  return (fixs, pols)++fixitiesAndPolarities' :: MonadFixityError m => [Declaration] -> MonadicFixPol m+fixitiesAndPolarities' = foldMap $ \ d -> case d of+  -- These declarations define polarities:+  Pragma (PolarityPragma _ x occs) -> returnPol $ Map.singleton x occs+  -- These declarations define fixities:+  Syntax x syn    -> returnFix $ Map.singleton x (Fixity' noFixity syn $ getRange x)+  Infix  f xs     -> returnFix $ Map.fromList $ for xs $ \ x -> (x, Fixity' f noNotation $ getRange x)+  -- We look into these blocks:+  Mutual    _ ds' -> fixitiesAndPolarities' ds'+  Abstract  _ ds' -> fixitiesAndPolarities' ds'+  Private _ _ ds' -> fixitiesAndPolarities' ds'+  InstanceB _ ds' -> fixitiesAndPolarities' ds'+  Macro     _ ds' -> fixitiesAndPolarities' ds'+  -- All other declarations are ignored.+  -- We expand these boring cases to trigger a revisit+  -- in case the @Declaration@ type is extended in the future.+  TypeSig     {}  -> mempty+  Generalize  {}  -> mempty+  Field       {}  -> mempty+  FunClause   {}  -> mempty+  DataSig     {}  -> mempty+  DataDef     {}  -> mempty+  Data        {}  -> mempty+  RecordSig   {}  -> mempty+  RecordDef   {}  -> mempty+  Record      {}  -> mempty+  PatternSyn  {}  -> mempty+  Postulate   {}  -> mempty+  Primitive   {}  -> mempty+  Open        {}  -> mempty+  Import      {}  -> mempty+  ModuleMacro {}  -> mempty+  Module      {}  -> mempty+  UnquoteDecl {}  -> mempty+  UnquoteDef  {}  -> mempty+  Pragma      {}  -> mempty++data DeclaredNames = DeclaredNames { allNames, postulates, privateNames :: Set Name }++instance Semigroup DeclaredNames where+  DeclaredNames xs ps as <> DeclaredNames ys qs bs =+    DeclaredNames (xs <> ys) (ps <> qs) (as <> bs)++instance Monoid DeclaredNames where+  mempty  = DeclaredNames Set.empty Set.empty Set.empty+  mappend = (<>)++allPostulates :: DeclaredNames -> DeclaredNames+allPostulates (DeclaredNames xs ps as) = DeclaredNames xs (xs <> ps) as++allPrivateNames :: DeclaredNames -> DeclaredNames+allPrivateNames (DeclaredNames xs ps as) = DeclaredNames xs ps (xs <> as)++declaresNames :: [Name] -> DeclaredNames+declaresNames xs = DeclaredNames (Set.fromList xs) Set.empty Set.empty++declaresName :: Name -> DeclaredNames+declaresName x = declaresNames [x]++-- | Compute the names defined in a declaration. We stay in the current scope,+--   i.e., do not go into modules.+declaredNames :: Declaration -> DeclaredNames+declaredNames d = case d of+  TypeSig _ x _        -> declaresName x+  Field _ x _          -> declaresName x+  FunClause (LHS p [] []) _ _ _+    | IdentP (QName x) <- removeSingletonRawAppP p+                       -> declaresName x+  FunClause{}          -> mempty+  DataSig _ _ x _ _    -> declaresName x+  DataDef _ _ _ _ cs   -> foldMap declaredNames cs+  Data _ _ x _ _ cs    -> declaresName x <> foldMap declaredNames cs+  RecordSig _ x _ _    -> declaresName x+  RecordDef _ x _ _ c _ _ -> declaresNames $     foldMap (:[]) (fst <$> c)+  Record _ x _ _ c _ _ _  -> declaresNames $ x : foldMap (:[]) (fst <$> c)+  Infix _ _            -> mempty+  Syntax _ _           -> mempty+  PatternSyn _ x _ _   -> declaresName x+  Mutual    _ ds       -> foldMap declaredNames ds+  Abstract  _ ds       -> foldMap declaredNames ds+  Private _ _ ds       -> allPrivateNames $ foldMap declaredNames ds+  InstanceB _ ds       -> foldMap declaredNames ds+  Macro     _ ds       -> foldMap declaredNames ds+  Postulate _ ds       -> allPostulates $ foldMap declaredNames ds+  Primitive _ ds       -> foldMap declaredNames ds+  Generalize _ ds      -> foldMap declaredNames ds+  Open{}               -> mempty+  Import{}             -> mempty+  ModuleMacro{}        -> mempty+  Module{}             -> mempty+  UnquoteDecl _ xs _   -> declaresNames xs+  UnquoteDef{}         -> mempty+  -- BUILTIN pragmas which do not require an accompanying definition declare+  -- the (unqualified) name they mention.+  Pragma (BuiltinPragma _ b (QName x))+    | b `elem` builtinsNoDef -> declaresName x+  Pragma{}             -> mempty+
src/full/Agda/Syntax/Concrete/Generic.hs view
@@ -125,11 +125,12 @@      Lam r bs e         -> f $ Lam r       (mapE bs)  $ mapE e      AbsurdLam{}        -> f $ e0      ExtendedLam r cs   -> f $ ExtendedLam r          $ mapE cs-     Fun r a b          -> f $ Fun r       (mapE a)   $ mapE b+     Fun r a b          -> f $ Fun r     (mapE <$> a) $ mapE b      Pi tel e           -> f $ Pi          (mapE tel) $ mapE e      Set{}              -> f $ e0      Prop{}             -> f $ e0      SetN{}             -> f $ e0+     PropN{}            -> f $ e0      Rec r es           -> f $ Rec r                  $ mapE es      RecUpdate r e es   -> f $ RecUpdate r (mapE e)   $ mapE es      Let r ds e         -> f $ Let r       (mapE ds)  $ mapE e@@ -149,6 +150,7 @@      DontCare e         -> f $ DontCare               $ mapE e      Equal{}            -> f $ e0      Ellipsis{}         -> f $ e0+     Generalized e      -> f $ Generalized            $ mapE e    where mapE e = mapExpr f e  instance ExprLike FieldAssignment where@@ -173,11 +175,6 @@      DomainFull bs -> DomainFull $ mapE bs    where mapE e = mapExpr f e -instance ExprLike TypedBindings where-  mapExpr f e0 = case e0 of-     TypedBindings r b -> TypedBindings r $ mapE b-   where mapE e = mapExpr f e- instance ExprLike LHS where   mapExpr f e0 = case e0 of      LHS ps res wes -> LHS ps (mapE res) $ mapE wes@@ -195,7 +192,7 @@ instance ExprLike ModuleApplication where   mapExpr f e0 = case e0 of      SectionApp r bs e -> SectionApp r (mapE bs) $ mapE e-     RecordModuleIFS{} -> e0+     RecordModuleInstance{} -> e0    where mapE e = mapExpr f e  instance ExprLike Declaration where@@ -204,9 +201,11 @@      Field i x e               -> Field i x                            $ mapE e      FunClause lhs rhs wh ca   -> FunClause (mapE lhs) (mapE rhs) (mapE wh) (mapE ca)      DataSig r ind x bs e      -> DataSig r ind x (mapE bs)            $ mapE e+     DataDef r ind n bs cs     -> DataDef r ind n (mapE bs)            $ mapE cs      Data r ind n bs e cs      -> Data r ind n (mapE bs) (mapE e)      $ mapE cs      RecordSig r ind bs e      -> RecordSig r ind (mapE bs)            $ mapE e-     Record r n ind eta c tel e ds -> Record r n ind eta c (mapE tel) (mapE e) $ mapE ds+     RecordDef r n ind eta c tel ds -> RecordDef r n ind eta c (mapE tel) $ mapE ds+     Record r n ind eta c tel e ds  -> Record r n ind eta c (mapE tel) (mapE e) $ mapE ds      Infix{}                   -> e0      Syntax{}                  -> e0      PatternSyn{}              -> e0@@ -217,6 +216,7 @@      Macro     r ds            -> Macro     r                          $ mapE ds      Postulate r ds            -> Postulate r                          $ mapE ds      Primitive r ds            -> Primitive r                          $ mapE ds+     Generalize r ds           -> Generalize r                         $ mapE ds      Open{}                    -> e0      Import{}                  -> e0      ModuleMacro r n es op dir -> ModuleMacro r n (mapE es) op dir
src/full/Agda/Syntax/Concrete/Name.hs view
@@ -17,8 +17,8 @@ import Data.ByteString.Char8 (ByteString) import Data.Function import qualified Data.List as List- import Data.Data (Data)+import Data.Maybe  import GHC.Generics (Generic) @@ -28,8 +28,11 @@ import Agda.Syntax.Position  import Agda.Utils.FileName+import Agda.Utils.Lens+import Agda.Utils.List import Agda.Utils.Pretty import Agda.Utils.Size+import Agda.Utils.Suffix  #include "undefined.h" import Agda.Utils.Impossible@@ -43,8 +46,15 @@     in different locations are equal. -} data Name-  = Name Range [NamePart]  -- ^ A (mixfix) identifier.-  | NoName Range NameId    -- ^ @_@.+  = Name -- ^ A (mixfix) identifier.+    { nameRange     :: Range+    , nameInScope   :: NameInScope+    , nameNameParts :: [NamePart]+    }+  | NoName -- ^ @_@.+    { nameRange     :: Range+    , nameId        :: NameId+    }   deriving Data  -- | An open mixfix identifier is either prefix, infix, or suffix.@@ -52,14 +62,14 @@  isOpenMixfix :: Name -> Bool isOpenMixfix n = case n of-  Name _ (x : xs@(_:_)) -> x == Hole || last xs == Hole-  _                     -> False+  Name _ _ (x : xs@(_:_)) -> x == Hole || last xs == Hole+  _                       -> False  instance Underscore Name where   underscore = NoName noRange __IMPOSSIBLE__-  isUnderscore NoName{}        = True-  isUnderscore (Name _ [Id x]) = isUnderscore x-  isUnderscore _               = False+  isUnderscore NoName{} = True+  isUnderscore (Name {nameNameParts = [Id x]}) = isUnderscore x+  isUnderscore _ = False  -- | Mixfix identifiers are composed of words and holes, --   e.g. @_+_@ or @if_then_else_@ or @[_/_]@.@@ -78,15 +88,15 @@ --   right to be able to do a lookup. -Ulf  instance Eq Name where-    Name _ xs  == Name _ ys  = xs == ys-    NoName _ i == NoName _ j = i == j-    _          == _          = False+    Name _ _ xs    == Name _ _ ys    = xs == ys+    NoName _ i     == NoName _ j     = i == j+    _              == _              = False  instance Ord Name where-    compare (Name _ xs)  (Name _ ys)  = compare xs ys-    compare (NoName _ i) (NoName _ j) = compare i j-    compare (NoName {})  (Name {})    = LT-    compare (Name {})    (NoName {})  = GT+    compare (Name _ _ xs)  (Name _ _ ys)      = compare xs ys+    compare (NoName _ i)   (NoName _ j)       = compare i j+    compare (NoName {})    (Name {})          = LT+    compare (Name {})      (NoName {})        = GT  instance Eq NamePart where   Hole  == Hole  = True@@ -138,8 +148,8 @@ nameToRawName = prettyShow  nameParts :: Name -> [NamePart]-nameParts (Name _ ps)  = ps-nameParts (NoName _ _) = [Id "_"] -- To not return an empty list+nameParts (Name _ _ ps)    = ps+nameParts (NoName _ _)     = [Id "_"] -- To not return an empty list  nameStringParts :: Name -> [RawName] nameStringParts n = [ s | Id s <- nameParts n ]@@ -163,8 +173,8 @@   numHoles = length . filter (== Hole)  instance NumHoles Name where-  numHoles NoName{}       = 0-  numHoles (Name _ parts) = numHoles parts+  numHoles NoName{}         = 0+  numHoles (Name { nameNameParts = parts }) = numHoles parts  instance NumHoles QName where   numHoles (QName x)  = numHoles x@@ -173,8 +183,8 @@ -- | Is the name an operator?  isOperator :: Name -> Bool-isOperator (NoName {}) = False-isOperator (Name _ ps) = length ps > 1+isOperator (NoName {})     = False+isOperator (Name _ _ ps)   = length ps > 1  isHole :: NamePart -> Bool isHole Hole = True@@ -186,7 +196,87 @@ isInfix   x =      isHole (head xs)  &&      isHole (last xs)  where xs = nameParts x isNonfix  x = not (isHole (head xs)) && not (isHole (last xs)) where xs = nameParts x + ------------------------------------------------------------------------+-- * Keeping track of which names are (not) in scope+------------------------------------------------------------------------++data NameInScope = InScope | NotInScope+  deriving (Eq, Show, Data)++class LensInScope a where+  lensInScope :: Lens' NameInScope a++  isInScope :: a -> NameInScope+  isInScope x = x ^. lensInScope++  mapInScope :: (NameInScope -> NameInScope) -> a -> a+  mapInScope = over lensInScope++  setInScope :: a -> a+  setInScope = mapInScope $ const InScope++  setNotInScope :: a -> a+  setNotInScope = mapInScope $ const NotInScope++instance LensInScope NameInScope where+  lensInScope = id++instance LensInScope Name where+  lensInScope f = \case+    n@Name{ nameInScope = nis } -> (\nis' -> n { nameInScope = nis' }) <$> f nis+    n@NoName{} -> const n <$> f InScope++instance LensInScope QName where+  lensInScope f = \case+    Qual x xs -> (`Qual` xs) <$> lensInScope f x+    QName x   -> QName <$> lensInScope f x++------------------------------------------------------------------------+-- * Generating fresh names+------------------------------------------------------------------------++nextStr :: String -> String+nextStr s = case suffixView s of+  (s0, suf) -> addSuffix s0 (nextSuffix suf)++-- | Get the next version of the concrete name. For instance,+--   @nextName "x" = "x₁"@.  The name must not be a 'NoName'.+nextName :: Name -> Name+nextName NoName{} = __IMPOSSIBLE__+nextName x@Name{ nameNameParts = ps } = x { nameInScope = NotInScope, nameNameParts = nextSuf ps }+  where+    nextSuf [Id s]       = [Id $ nextStr s]+    nextSuf [Id s, Hole] = [Id $ nextStr s, Hole]+    nextSuf (p : ps)     = p : nextSuf ps+    nextSuf []           = __IMPOSSIBLE__++-- | Get the first version of the concrete name that does not satisfy+--   the given predicate.+firstNonTakenName :: (Name -> Bool) -> Name -> Name+firstNonTakenName taken x =+  if taken x+  then firstNonTakenName taken (nextName x)+  else x++-- | Get a raw version of the name with all suffixes removed. For+--   instance, @nameRoot "x₁₂₃" = "x"@. The name must not be a+--   'NoName'.+nameRoot :: Name -> RawName+nameRoot NoName{} = __IMPOSSIBLE__+nameRoot x@Name{ nameNameParts = ps } =+    nameToRawName $ x{ nameNameParts = root ps }+  where+    root [Id s] = [Id $ strRoot s]+    root [Id s, Hole] = [Id $ strRoot s , Hole]+    root (p : ps) = p : root ps+    root [] = __IMPOSSIBLE__+    strRoot = fst . suffixView++sameRoot :: Name -> Name -> Bool+sameRoot = (==) `on` nameRoot++------------------------------------------------------------------------ -- * Operations on qualified names ------------------------------------------------------------------------ @@ -282,11 +372,11 @@   isNoName = isUnderscore  instance IsNoName Name where-  isNoName (NoName _ _)    = True-  isNoName (Name _ [Hole]) = True   -- TODO: Track down where these come from-  isNoName (Name _ [])     = True-  isNoName (Name _ [Id x]) = isNoName x-  isNoName _               = False+  isNoName (NoName _ _)      = True+  isNoName (Name _ _ [Hole]) = True   -- TODO: Track down where these come from+  isNoName (Name _ _ [])     = True+  isNoName (Name _ _ [Id x]) = isNoName x+  isNoName _                 = False  instance IsNoName QName where   isNoName (QName x) = isNoName x@@ -320,17 +410,17 @@ ------------------------------------------------------------------------  instance Pretty Name where-  pretty (Name _ xs)  = hcat $ map pretty xs-  pretty (NoName _ _) = text $ "_"+  pretty (Name _ _ xs)    = hcat $ map pretty xs+  pretty (NoName _ _)     = "_"  instance Pretty NamePart where-  pretty Hole   = text $ "_"+  pretty Hole   = "_"   pretty (Id s) = text $ rawNameToString s  instance Pretty QName where   pretty (Qual m x)     | isUnderscore m = pretty x -- don't print anonymous modules-    | otherwise      = pretty m <> pretty "." <> pretty x+    | otherwise      = pretty m <> "." <> pretty x   pretty (QName x)  = pretty x  instance Pretty TopLevelModuleName where@@ -341,8 +431,8 @@ ------------------------------------------------------------------------  instance HasRange Name where-    getRange (Name r ps)  = r-    getRange (NoName r _) = r+    getRange (Name r _ ps)    = r+    getRange (NoName r _)     = r  instance HasRange QName where     getRange (QName  x) = getRange x@@ -352,8 +442,8 @@   getRange = moduleNameRange  instance SetRange Name where-  setRange r (Name _ ps)  = Name r ps-  setRange r (NoName _ i) = NoName r i+  setRange r (Name _ nis ps) = Name r nis ps+  setRange r (NoName _ i)  = NoName r i  instance SetRange QName where   setRange r (QName x)  = QName (setRange r x)@@ -367,8 +457,8 @@   killRange (Qual n x) = killRange n `Qual` killRange x  instance KillRange Name where-  killRange (Name r ps)  = Name (killRange r) ps-  killRange (NoName r i) = NoName (killRange r) i+  killRange (Name r nis ps)  = Name (killRange r) nis ps+  killRange (NoName r i)     = NoName (killRange r) i  instance KillRange TopLevelModuleName where   killRange (TopLevelModuleName _ x) = TopLevelModuleName noRange x@@ -379,9 +469,13 @@  -- | Ranges are not forced. +instance NFData NameInScope where+  rnf InScope    = ()+  rnf NotInScope = ()+ instance NFData Name where-  rnf (Name _ ns)  = rnf ns-  rnf (NoName _ n) = rnf n+  rnf (Name _ nis ns) = rnf nis `seq` rnf ns+  rnf (NoName _ n)  = rnf n  instance NFData NamePart where   rnf Hole   = ()
src/full/Agda/Syntax/Concrete/Operators.hs view
@@ -210,8 +210,8 @@           Trie.member (addHole withHole p) partListsInExpr           where           p = case n of-            NormalHole{} : IdPart p : _ -> p-            IdPart p : _                -> p+            NormalHole{} : IdPart p : _ -> rangedThing p+            IdPart p : _                -> rangedThing p             _                           -> __IMPOSSIBLE__          -- Is the last identifier part present in n present in the@@ -221,8 +221,8 @@           Trie.member (addHole withHole p) reversedPartListsInExpr           where           p = case reverse n of-            NormalHole{} : IdPart p : _ -> p-            IdPart p : _                -> p+            NormalHole{} : IdPart p : _ -> rangedThing p+            IdPart p : _                -> rangedThing p             _                           -> __IMPOSSIBLE__          -- | Are the initial and final identifier parts present with@@ -263,7 +263,8 @@          (non, fix) = List.partition nonfix (filter (and . partsPresent) ops) -        cons       = getDefinedNames [ConName, PatternSynName] flat+        cons       = getDefinedNames+                       [ConName, FldName, PatternSynName] flat         conNames   = Set.fromList $                        filter (flip Set.member namesInExpr) $                        map (notaName . head) cons@@ -390,7 +391,7 @@               }      reportSDoc "scope.grammar" 10 $ return $-      text "Operator grammar:" $$ nest 2 (grammar (pTop g))+      "Operator grammar:" $$ nest 2 (grammar (pTop g))      return (parseSections, everything, g)     where@@ -542,6 +543,7 @@     QuoteP _         -> return p     IdentP _         -> return p     RecP r fs        -> RecP r <$> mapM (traverse (parsePat prs)) fs+    EqualP{}         -> return p -- Andrea: cargo culted from DotP     EllipsisP _      -> fail "bad ellipsis"     WithP r p        -> WithP r <$> parsePat prs p @@ -605,7 +607,7 @@                , p' <- foldr seq () result `seq` result                , res <- validPattern (PatternCheckConfig top cons flds) p' ] of         [(p,lhs)] -> do reportSDoc "scope.operators" 50 $ return $-                          text "Parsed lhs:" <+> pretty lhs+                          "Parsed lhs:" <+> pretty lhs                         return (lhs, ops)         []        -> typeError $ OperatorInformation ops                                $ NoParseForLHS lhsOrPatSyn p@@ -737,7 +739,7 @@     case foldr seq () result `seq` result of         [e] -> do           reportSDoc "scope.operators" 50 $ return $-            text "Parsed an operator application:" <+> pretty e+            "Parsed an operator application:" <+> pretty e           return e         []  -> typeError $ OperatorInformation ops                          $ NoParseForApplication es
src/full/Agda/Syntax/Concrete/Operators/Parser.hs view
@@ -22,6 +22,7 @@ import qualified Agda.Syntax.Concrete.Operators.Parser.Monad as P  import Agda.Utils.Pretty+import Agda.Utils.List ( spanEnd )  #include "undefined.h" import Agda.Utils.Impossible@@ -140,8 +141,8 @@     noSplit = [noPlaceholder e]      splitName n = case last ns of-      Name r ps@(_ : _ : _) -> splitParts r (init ns) Beginning ps-      _                     -> noSplit+      Name r nis ps@(_ : _ : _) -> splitParts r nis (init ns) Beginning ps+      _                         -> noSplit       where       ns = qnameParts n @@ -152,16 +153,16 @@       -- Note also that the module qualifier, if any, is only applied       -- to the first name part. -      splitParts _ _ _ []          = __IMPOSSIBLE__-      splitParts _ _ _ (Hole : []) = [Placeholder End]-      splitParts r m _ (Id s : []) = [part r m End s]-      splitParts r m w (Hole : ps) = Placeholder w : splitParts r m  Middle ps-      splitParts r m w (Id s : ps) = part r m w s  : splitParts r [] Middle ps+      splitParts _ _   _ _ []          = __IMPOSSIBLE__+      splitParts _ _   _ _ (Hole : []) = [Placeholder End]+      splitParts r nis m _ (Id s : []) = [part r nis m End s]+      splitParts r nis m w (Hole : ps) = Placeholder w : splitParts r nis m  Middle ps+      splitParts r nis m w (Id s : ps) = part r nis m w s : splitParts r nis [] Middle ps -      part r m w s =+      part r nis m w s =         NoPlaceholder (Strict.Just w)                       (unExprView $ LocalV $-                         foldr Qual (QName (Name r [Id s])) m)+                         foldr Qual (QName (Name r nis [Id s])) m)  --------------------------------------------------------------------------- -- * Parser combinators@@ -176,7 +177,7 @@   doc (text (show str)) $   satNoPlaceholder isLocal   where-  str = prettyShow $ foldr Qual (QName $ Name noRange [Id s]) ms+  str = prettyShow $ foldr Qual (QName $ Name noRange InScope [Id s]) ms   isLocal e = case exprView e of       LocalV y | str == prettyShow y -> Just $ getRange y       _ -> Nothing@@ -192,9 +193,9 @@ atLeastTwoParts =   (\p1 ps p2 ->       let all = p1 : ps ++ [p2] in-      case catMaybes (map fst all) of-        r : _ -> Name r (map snd all)-        []    -> __IMPOSSIBLE__)+      case mapMaybe fst all of+        (r,nis) : _ -> Name r nis (map snd all)+        []          -> __IMPOSSIBLE__)   <$> part Beginning   <*> many (part Middle)   <*> part End@@ -205,8 +206,8 @@                                                              )     NoPlaceholder (Strict.Just pos') e | pos == pos' ->       case exprView e of-        LocalV (QName (Name r [Id s])) -> Just (Just r, Id s)-        _                              -> Nothing+        LocalV (QName (Name r nis [Id s])) -> Just (Just (r,nis), Id s)+        _                                  -> Nothing     _ -> Nothing  -- | Either a wildcard (@_@), or an unqualified name (possibly@@ -258,8 +259,8 @@   let (normal, binders) = partitionEithers hs       lastHole          = maximum $ mapMaybe holeTarget syn -      app :: ([(MaybePlaceholder e, NamedArg Int)] ->-              [(MaybePlaceholder e, NamedArg Int)]) -> e+      app :: ([(MaybePlaceholder e, NamedArg (Ranged Int))] ->+              [(MaybePlaceholder e, NamedArg (Ranged Int))]) -> e       app f =         -- If we have an operator and there is exactly one         -- placeholder for every hole, then we only return@@ -283,29 +284,28 @@    where -  (leadingHoles,  syn1) = span isNormalHole syn-  (trailingHoles, syn2) = span isNormalHole (reverse syn1)-  withoutExternalHoles  = reverse syn2+  (leadingHoles, syn1)                  = span    isNormalHole syn+  (withoutExternalHoles, trailingHoles) = spanEnd isNormalHole syn1    leadingHole = case leadingHoles of-    [NormalHole h] -> h-    _              -> __IMPOSSIBLE__+    [NormalHole _ h] -> h+    _                -> __IMPOSSIBLE__    trailingHole = case trailingHoles of-    [NormalHole h] -> h-    _              -> __IMPOSSIBLE__+    [NormalHole _ h] -> h+    _                -> __IMPOSSIBLE__    worker ::     [Name] -> Notation ->-    Parser e (Range, [Either (MaybePlaceholder e, NamedArg Int)-                             (LamBinding, Int)])+    Parser e (Range, [Either (MaybePlaceholder e, NamedArg (Ranged Int))+                             (LamBinding, Ranged Int)])   worker ms []              = pure (noRange, [])   worker ms (IdPart x : xs) =     (\r1 (r2, es) -> (fuseRanges r1 r2, es))-      <$> partP ms x+      <$> partP ms (rangedThing x)       <*> worker [] xs           -- Only the first part is qualified.-  worker ms (NormalHole h : xs) =+  worker ms (NormalHole _ h : xs) =     (\e (r, es) -> (r, Left (e, h) : es))       <$> maybePlaceholder             (if isOp && parseSections == ParseSections@@ -313,31 +313,31 @@             p       <*> worker ms xs   worker ms (WildHole h : xs) =-    (\(r, es) -> (r, Right (mkBinding h $ Name noRange [Hole]) : es))+    (\(r, es) -> (r, Right (mkBinding h $ Name noRange InScope [Hole]) : es))       <$> worker ms xs-  worker ms (BindHole h : xs) = do+  worker ms (BindHole _ h : xs) = do     (\e (r, es) ->         let x = case e of                   Just name -> name-                  Nothing   -> Name noRange [Hole]+                  Nothing   -> Name noRange InScope [Hole]         in (r, Right (mkBinding h x) : es))            -- Andreas, 2011-04-07 put just 'Relevant' here, is this            -- correct?       <$> wildOrUnqualifiedName       <*> worker ms xs -  mkBinding h x = (DomainFree defaultArgInfo $ mkBoundName_ x, h)+  mkBinding h x = (DomainFree $ defaultNamedArg $ mkBoundName_ x, h)    set x arg = fmap (fmap (const x)) arg    findExprFor ::-    [(MaybePlaceholder e, NamedArg Int)] ->-    [(LamBinding, Int)] -> Int ->+    [(MaybePlaceholder e, NamedArg (Ranged Int))] ->+    [(LamBinding, Ranged Int)] -> Int ->     NamedArg (MaybePlaceholder (OpApp e))   findExprFor normalHoles binders n =-    case [ h | h@(_, m) <- normalHoles, namedArg m == n ] of+    case [ h | h@(_, m) <- normalHoles, rangedThing (namedArg m) == n ] of       [(Placeholder p,     arg)] -> set (Placeholder p) arg-      [(NoPlaceholder _ e, arg)] -> case [b | (b, m) <- binders, m == n] of+      [(NoPlaceholder _ e, arg)] -> case [b | (b, m) <- binders, rangedThing m == n] of         [] -> set (noPlaceholder (Ordinary e)) arg -- no variable to bind         bs -> set (noPlaceholder (SyntaxBindingLambda (fuseRange bs e) bs e)) arg       _ -> __IMPOSSIBLE__@@ -363,7 +363,7 @@  atomP :: IsExpr e => (QName -> Bool) -> Parser e e atomP p =-  doc (text "<atom>") $+  doc "<atom>" $   satNoPlaceholder $ \e ->   case exprView e of     LocalV x | not (p x) -> Nothing
src/full/Agda/Syntax/Concrete/Pattern.hs view
@@ -198,6 +198,7 @@       AbsurdP _       -> mempty       LitP _          -> mempty       QuoteP _        -> mempty+      EqualP _ _      -> mempty       EllipsisP _     -> mempty    traverseCPatternA f p0 = f p0 $ case p0 of@@ -218,6 +219,7 @@       AbsurdP _       -> pure p0       LitP _          -> pure p0       QuoteP _        -> pure p0+      EqualP _ _      -> pure p0       EllipsisP _     -> pure p0    traverseCPatternM pre post = pre >=> recurse >=> post@@ -240,6 +242,7 @@       AbsurdP _       -> return p0       LitP _          -> return p0       QuoteP _        -> return p0+      EqualP _ _      -> return p0       EllipsisP _     -> return p0  instance (CPatternLike a, CPatternLike b) => CPatternLike (a,b) where@@ -314,6 +317,7 @@     QuoteP _       -> mempty     InstanceP _ _  -> mempty     RecP _ _       -> mempty+    EqualP _ _     -> mempty     EllipsisP _    -> mempty  -- | Get all the identifiers in a pattern in left-to-right order.
src/full/Agda/Syntax/Concrete/Pretty.hs view
@@ -40,38 +40,38 @@  -- Andreas, 2017-10-02, TODO: restore Show to its original purpose ----- deriving instance Show Expr--- deriving instance (Show a) => Show (OpApp a)--- deriving instance Show Declaration--- deriving instance Show Pattern--- deriving instance Show TypedBinding--- deriving instance Show TypedBindings--- deriving instance Show LamBinding--- deriving instance Show ModuleAssignment--- deriving instance (Show a, Show b) => Show (ImportDirective' a b)--- deriving instance (Show a, Show b) => Show (Using' a b)--- deriving instance (Show a, Show b) => Show (Renaming' a b)--- deriving instance Show Pragma--- deriving instance Show RHS--- deriving instance Show LHS--- deriving instance Show LHSCore--- deriving instance Show WhereClause--- deriving instance Show ModuleApplication+deriving instance Show Expr+deriving instance (Show a) => Show (OpApp a)+deriving instance Show Declaration+deriving instance Show Pattern+deriving instance Show TypedBinding+deriving instance Show LamBinding+deriving instance Show ModuleAssignment+deriving instance (Show a, Show b) => Show (ImportDirective' a b)+deriving instance (Show a, Show b) => Show (Using' a b)+deriving instance (Show a, Show b) => Show (Renaming' a b)+deriving instance Show Pragma+deriving instance Show RHS+deriving instance Show LHS+deriving instance Show LHSCore+deriving instance Show LamClause+deriving instance Show WhereClause+deriving instance Show ModuleApplication+deriving instance Show DoStmt -instance Show Expr            where show = show . pretty-instance Show Declaration     where show = show . pretty-instance Show Pattern         where show = show . pretty-instance Show TypedBinding    where show = show . pretty-instance Show TypedBindings   where show = show . pretty-instance Show LamBinding      where show = show . pretty-instance (Pretty a, Pretty b) => Show (ImportDirective' a b)-                              where show = show . pretty-instance Show Pragma          where show = show . pretty-instance Show RHS             where show = show . pretty-instance Show LHS where show = show . pretty-instance Show LHSCore where show = show . pretty-instance Show WhereClause where show = show . pretty-instance Show ModuleApplication where show = show . pretty+-- instance Show Expr            where show = show . pretty+-- instance Show Declaration     where show = show . pretty+-- instance Show Pattern         where show = show . pretty+-- instance Show TypedBinding    where show = show . pretty+-- instance Show LamBinding      where show = show . pretty+-- instance (Pretty a, Pretty b) => Show (ImportDirective' a b)+--                               where show = show . pretty+-- instance Show Pragma          where show = show . pretty+-- instance Show RHS             where show = show . pretty+-- instance Show LHS where show = show . pretty+-- instance Show LHSCore where show = show . pretty+-- instance Show WhereClause where show = show . pretty+-- instance Show ModuleApplication where show = show . pretty   -- | Picking the appropriate set of special characters depending on@@ -90,22 +90,25 @@ specialCharacters =   let opt = UNSAFE.unsafePerformIO (readIORef unicodeOrAscii) in   case opt of-    UnicodeOk -> SpecialCharacters { _dbraces = ((text "\x2983 " <>) . (<> text " \x2984"))-                                   , _lambda  = text "\x03bb"-                                   , _arrow   = text "\x2192"-                                   , _forallQ = text "\x2200"+    UnicodeOk -> SpecialCharacters { _dbraces = (("\x2983 " <>) . (<> " \x2984"))+                                   , _lambda  = "\x03bb"+                                   , _arrow   = "\x2192"+                                   , _forallQ = "\x2200"                                    }     AsciiOnly -> SpecialCharacters { _dbraces = braces . braces'-                                   , _lambda  = text "\\"-                                   , _arrow   = text "->"-                                   , _forallQ = text "forall"+                                   , _lambda  = "\\"+                                   , _arrow   = "->"+                                   , _forallQ = "forall"                                    }  braces' :: Doc -> Doc-braces' d = case render d of-  -- Add space to avoid starting a comment-  '-':_ -> braces (text " " <> d)-  _     -> braces d+braces' d = ifNull (render d) (braces d) {-else-} $ \ s ->+  braces (spaceIfDash (head s) <> d <> spaceIfDash (last s))+  -- Add space to avoid starting a comment (Ulf, 2010-09-13, #269)+  -- Andreas, 2018-07-21, #3161: Also avoid ending a comment+  where+  spaceIfDash '-' = " "+  spaceIfDash _   = empty  -- double braces... dbraces :: Doc -> Doc@@ -125,9 +128,9 @@ -- If the list is empty, then the notation @{}@ is used.  bracesAndSemicolons :: [Doc] -> Doc-bracesAndSemicolons []       = text "{}"+bracesAndSemicolons []       = "{}" bracesAndSemicolons (d : ds) =-  sep ([text "{" <+> d] ++ map (text ";" <+>) ds ++ [text "}"])+  sep (["{" <+> d] ++ map (";" <+>) ds ++ ["}"])  arrow, lambda :: Doc arrow  = _arrow specialCharacters@@ -158,19 +161,15 @@  instance Pretty Relevance where   pretty Relevant   = empty-  pretty Irrelevant = text "."-  pretty NonStrict  = text ".."--instance Pretty Induction where-  pretty Inductive = text "data"-  pretty CoInductive = text "codata"+  pretty Irrelevant = "."+  pretty NonStrict  = ".."  instance Pretty (OpApp Expr) where   pretty (Ordinary e) = pretty e   pretty (SyntaxBindingLambda r bs e) = pretty (Lam r bs e)  instance Pretty a => Pretty (MaybePlaceholder a) where-  pretty Placeholder{}       = text "_"+  pretty Placeholder{}       = "_"   pretty (NoPlaceholder _ e) = pretty e  instance Pretty Expr where@@ -178,7 +177,7 @@         case e of             Ident x          -> pretty x             Lit l            -> pretty l-            QuestionMark _ n -> text "?" <> maybe empty (text . show) n+            QuestionMark _ n -> "?" <> maybe empty (text . show) n             Underscore _ n   -> maybe underscore text n --          Underscore _ n   -> underscore <> maybe empty (text . show) n             App _ _ _        ->@@ -192,7 +191,7 @@             OpApp _ q _ es -> fsep $ prettyOpApp q es              WithApp _ e es -> fsep $-              pretty e : map ((text "|" <+>) . pretty) es+              pretty e : map (("|" <+>) . pretty) es              HiddenArg _ e -> braces' $ pretty e             InstanceArg _ e -> dbraces $ pretty e@@ -211,48 +210,50 @@                 sep [ pretty (Tel $ smashTel tel) <+> arrow                     , pretty e                     ]-            Set _   -> text "Set"-            Prop _  -> text "Prop"-            SetN _ n    -> text "Set" <> text (showIndex n)+            Set _   -> "Set"+            Prop _  -> "Prop"+            SetN _ n    -> "Set" <> text (showIndex n)+            PropN _ n   -> "Prop" <> text (showIndex n)             Let _ ds me  ->-                sep [ text "let" <+> vcat (map pretty ds)-                    , maybe empty (\ e -> text "in" <+> pretty e) me+                sep [ "let" <+> vcat (map pretty ds)+                    , maybe empty (\ e -> "in" <+> pretty e) me                     ]             Paren _ e -> parens $ pretty e-            IdiomBrackets _ e -> text "(|" <+> pretty e <+> text "|)"-            DoBlock _ ss -> text "do" <+> vcat (map pretty ss)-            As _ x e  -> pretty x <> text "@" <> pretty e-            Dot _ e   -> text "." <> pretty e-            Absurd _  -> text "()"-            Rec _ xs  -> sep [text "record", bracesAndSemicolons (map pretty xs)]+            IdiomBrackets _ e -> "(|" <+> pretty e <+> "|)"+            DoBlock _ ss -> "do" <+> vcat (map pretty ss)+            As _ x e  -> pretty x <> "@" <> pretty e+            Dot _ e   -> "." <> pretty e+            Absurd _  -> "()"+            Rec _ xs  -> sep ["record", bracesAndSemicolons (map pretty xs)]             RecUpdate _ e xs ->-              sep [text "record" <+> pretty e, bracesAndSemicolons (map pretty xs)]-            ETel []  -> text "()"+              sep ["record" <+> pretty e, bracesAndSemicolons (map pretty xs)]+            ETel []  -> "()"             ETel tel -> fsep $ map pretty tel-            QuoteGoal _ x e -> sep [text "quoteGoal" <+> pretty x <+> text "in",+            QuoteGoal _ x e -> sep ["quoteGoal" <+> pretty x <+> "in",                                     nest 2 $ pretty e]-            QuoteContext _ -> text "quoteContext"-            Quote _ -> text "quote"-            QuoteTerm _ -> text "quoteTerm"-            Unquote _ -> text "unquote"+            QuoteContext _ -> "quoteContext"+            Quote _ -> "quote"+            QuoteTerm _ -> "quoteTerm"+            Unquote _ -> "unquote"             Tactic _ t es ->-              sep [ text "tactic" <+> pretty t-                  , fsep [ text "|" <+> pretty e | e <- es ]+              sep [ "tactic" <+> pretty t+                  , fsep [ "|" <+> pretty e | e <- es ]                   ]             -- Andreas, 2011-10-03 print irrelevant things as .(e)-            DontCare e -> text "." <> parens (pretty e)-            Equal _ a b -> pretty a <+> text "=" <+> pretty b-            Ellipsis _  -> text "..."+            DontCare e -> "." <> parens (pretty e)+            Equal _ a b -> pretty a <+> "=" <+> pretty b+            Ellipsis _  -> "..."+            Generalized e -> pretty e         where-          absurd NotHidden  = text "()"-          absurd Instance{} = text "{{}}"-          absurd Hidden     = text "{}"+          absurd NotHidden  = "()"+          absurd Instance{} = "{{}}"+          absurd Hidden     = "{}"  instance (Pretty a, Pretty b) => Pretty (Either a b) where   pretty = either pretty pretty  instance Pretty a => Pretty (FieldAssignment' a) where-  pretty (FieldAssignment x e) = sep [ pretty x <+> text "=" , nest 2 $ pretty e ]+  pretty (FieldAssignment x e) = sep [ pretty x <+> "=" , nest 2 $ pretty e ]  instance Pretty ModuleAssignment where   pretty (ModuleAssignment m es i) = (fsep $ pretty m : map pretty es) <+> pretty i@@ -267,24 +268,48 @@       pretty' AbsurdRHS = empty  instance Pretty BoundName where-  pretty BName{ boundName = x, boundLabel = l }-    | x == l    = pretty x-    | otherwise = pretty l <+> text "=" <+> pretty x+  pretty BName{ boundName = x } = pretty x +data NamedBinding = NamedBinding { withHiding   :: Bool+                                 , namedBinding :: NamedArg BoundName }++getLabel :: NamedArg a -> Maybe String+getLabel = fmap rangedThing . nameOf . unArg++isLabeled :: NamedArg BoundName -> Bool+isLabeled x+  | visible x            = False  -- Ignore labels on visible arguments+  | Just l <- getLabel x = l /= nameToRawName (boundName $ namedArg x)+  | otherwise            = False++instance Pretty NamedBinding where+  pretty (NamedBinding withH x) =+    prH $ if | isLabeled x -> text (fromMaybe __IMPOSSIBLE__ $ getLabel x) <+> "=" <+> pretty (namedArg x)+             | otherwise   -> pretty (namedArg x)+    where+      prH | withH     = prettyRelevance x . prettyHiding x id+          | otherwise = id+ instance Pretty LamBinding where-    -- TODO guilhem: colors are unused (colored syntax disallowed)-    pretty (DomainFree i x) = prettyRelevance i $ prettyHiding i id $ pretty x-    pretty (DomainFull b)   = pretty b+    pretty (DomainFree x) = pretty (NamedBinding True x)+    pretty (DomainFull b) = pretty b -instance Pretty TypedBindings where-  pretty (TypedBindings _ a) = prettyRelevance a $ prettyHiding a p $-    pretty $ unArg a+instance Pretty TypedBinding where+    pretty (TLet _ ds) = parens $ "let" <+> vcat (map pretty ds)+    pretty (TBind _ xs (Underscore _ Nothing)) =+      fsep (map (pretty . NamedBinding True) xs)+    pretty (TBind _ xs e) = fsep+      [ prettyRelevance y $ prettyHiding y parens $+        sep [ fsep (map (pretty . NamedBinding False) ys)+            , ":" <+> pretty e ]+      | ys@(y : _) <- groupBinds xs ]       where-        p | isUnderscore (unArg a) = id-          | otherwise        = parens--        isUnderscore (TBind _ _ (Underscore _ Nothing)) = True-        isUnderscore _ = False+        groupBinds [] = []+        groupBinds (x : xs)+          | isLabeled x = [x] : groupBinds xs+          | otherwise   = (x : ys) : groupBinds zs+          where (ys, zs) = span (same x) xs+                same x y = getArgInfo x == getArgInfo y && not (isLabeled y)  newtype Tel = Tel Telescope @@ -293,43 +318,29 @@       | any isMeta tel = forallQ <+> fsep (map pretty tel)       | otherwise      = fsep (map pretty tel)       where-        isMeta (TypedBindings _ (Arg _ (TBind _ _ (Underscore _ Nothing)))) = True+        isMeta (TBind _ _ (Underscore _ Nothing)) = True         isMeta _ = False --instance Pretty TypedBinding where-    pretty (TBind _ xs (Underscore _ Nothing)) =-      fsep (map pretty xs)-    pretty (TBind _ xs e) =-        sep [ fsep (map pretty xs)-            , text ":" <+> pretty e-            ]-    pretty (TLet _ ds) =-        text "let" <+> vcat (map pretty ds)- smashTel :: Telescope -> Telescope-smashTel (TypedBindings r (Arg i  (TBind r' xs e)) :-          TypedBindings _ (Arg i' (TBind _  ys e')) : tel)-  | show i == show i' && show e == show e' && all (isUnnamed . dget) (xs ++ ys) =-    smashTel (TypedBindings r (Arg i (TBind r' (xs ++ ys) e)) : tel)-  where-    isUnnamed x = boundLabel x == boundName x+smashTel (TBind r xs e  :+          TBind _ ys e' : tel)+  | show e == show e' = smashTel (TBind r (xs ++ ys) e : tel) smashTel (b : tel) = b : smashTel tel smashTel [] = []   instance Pretty RHS where-    pretty (RHS e)   = text "=" <+> pretty e+    pretty (RHS e)   = "=" <+> pretty e     pretty AbsurdRHS = empty  instance Pretty WhereClause where   pretty  NoWhere = empty   pretty (AnyWhere [Module _ x [] ds]) | isNoName (unqualify x)-                       = vcat [ text "where", nest 2 (vcat $ map pretty ds) ]-  pretty (AnyWhere ds) = vcat [ text "where", nest 2 (vcat $ map pretty ds) ]+                       = vcat [ "where", nest 2 (vcat $ map pretty ds) ]+  pretty (AnyWhere ds) = vcat [ "where", nest 2 (vcat $ map pretty ds) ]   pretty (SomeWhere m a ds) =-    vcat [ hsep $ applyWhen (a == PrivateAccess UserWritten) (text "private" :)-             [ text "module", pretty m, text "where" ]+    vcat [ hsep $ applyWhen (a == PrivateAccess UserWritten) ("private" :)+             [ "module", pretty m, "where" ]          , nest 2 (vcat $ map pretty ds)          ] @@ -344,7 +355,7 @@             ]       pThing thing []       = empty       pThing thing (e : es) = fsep $ (text thing <+> pretty e)-                                   : map ((text "|" <+>) . pretty) es+                                   : map (("|" <+>) . pretty) es  instance Pretty LHSCore where   pretty (LHSHead f ps) = sep $ pretty f : map (parens . pretty) ps@@ -354,110 +365,92 @@   pretty (LHSWith h wps ps) = if null ps then doc else       sep $ parens doc : map (parens . pretty) ps     where-    doc = sep $ pretty h : map ((text "|" <+>) . pretty) wps+    doc = sep $ pretty h : map (("|" <+>) . pretty) wps  instance Pretty ModuleApplication where-  pretty (SectionApp _ bs e) = fsep (map pretty bs) <+> text "=" <+> pretty e-  pretty (RecordModuleIFS _ rec) = text "=" <+> pretty rec <+> text "{{...}}"+  pretty (SectionApp _ bs e) = fsep (map pretty bs) <+> "=" <+> pretty e+  pretty (RecordModuleInstance _ rec) = "=" <+> pretty rec <+> "{{...}}"  instance Pretty DoStmt where   pretty (DoBind _ p e cs) =-    ((pretty p <+> text "←") <?> pretty e) <?> prCs cs+    ((pretty p <+> "←") <?> pretty e) <?> prCs cs     where       prCs [] = empty-      prCs cs = text "where" <?> vcat (map pretty cs)+      prCs cs = "where" <?> vcat (map pretty cs)   pretty (DoThen e) = pretty e-  pretty (DoLet _ ds) = text "let" <+> vcat (map pretty ds)+  pretty (DoLet _ ds) = "let" <+> vcat (map pretty ds)  instance Pretty Declaration where     prettyList = vcat . map pretty     pretty d =         case d of             TypeSig i x e ->-                sep [ prettyRelevance i $ pretty x <+> text ":"+                sep [ prettyRelevance i $ pretty x <+> ":"                     , nest 2 $ pretty e                     ]             Field inst x (Arg i e) ->-                sep [ text "field"+                sep [ "field"                     , nest 2 $ mkInst inst $ mkOverlap i $                       prettyRelevance i $ prettyHiding i id $                         pretty $ TypeSig (setRelevance Relevant i) x e                     ]                 where-                  mkInst InstanceDef    d = sep [ text "instance", nest 2 d ]+                  mkInst InstanceDef    d = sep [ "instance", nest 2 d ]                   mkInst NotInstanceDef d = d -                  mkOverlap i d | isOverlappable i = text "overlap" <+> d+                  mkOverlap i d | isOverlappable i = "overlap" <+> d                                 | otherwise        = d             FunClause lhs rhs wh _ ->                 sep [ pretty lhs                     , nest 2 $ pretty rhs                     ] $$ nest 2 (pretty wh)             DataSig _ ind x tel e ->-                sep [ hsep  [ pretty ind+                sep [ hsep  [ "data"                             , pretty x                             , fcat (map pretty tel)                             ]                     , nest 2 $ hsep-                            [ text ":"+                            [ ":"                             , pretty e                             ]                     ]-            Data _ ind x tel (Just e) cs ->-                sep [ hsep  [ pretty ind+            Data _ ind x tel e cs ->+                sep [ hsep  [ "data"                             , pretty x                             , fcat (map pretty tel)                             ]                     , nest 2 $ hsep-                            [ text ":"+                            [ ":"                             , pretty e-                            , text "where"+                            , "where"                             ]                     ] $$ nest 2 (vcat $ map pretty cs)-            Data _ ind x tel Nothing cs ->-                sep [ hsep  [ pretty ind+            DataDef _ ind x tel cs ->+                sep [ hsep  [ "data"                             , pretty x                             , fcat (map pretty tel)                             ]-                    , nest 2 $ text "where"+                    , nest 2 $ "where"                     ] $$ nest 2 (vcat $ map pretty cs)             RecordSig _ x tel e ->-                sep [ hsep  [ text "record"+                sep [ hsep  [ "record"                             , pretty x                             , fcat (map pretty tel)                             ]                     , nest 2 $ hsep-                            [ text ":"+                            [ ":"                             , pretty e                             ]                     ]-            Record _ x ind eta con tel me cs ->-                sep [ hsep  [ text "record"-                            , pretty x-                            , fcat (map pretty tel)-                            ]-                    , nest 2 $ pType me-                    ] $$ nest 2 (vcat $ pInd ++-                                        pEta ++-                                        pCon ++-                                        map pretty cs)-              where pType (Just e) = hsep-                            [ text ":"-                            , pretty e-                            , text "where"-                            ]-                    pType Nothing  =-                              text "where"-                    pInd = maybeToList $ text . show . rangedThing <$> ind-                    pEta = maybeToList $ eta <&> \case-                      YesEta -> text "eta-equality"-                      NoEta  -> text "no-eta-equality"-                    pCon = maybeToList $ (text "constructor" <+>) . pretty <$> fst <$> con+            Record _ x ind eta con tel e cs ->+              pRecord x ind eta con tel (Just e) cs+            RecordDef _ x ind eta con tel cs ->+              pRecord x ind eta con tel Nothing cs             Infix f xs  ->                 pretty f <+> (fsep $ punctuate comma $ map pretty xs)-            Syntax n xs -> text "syntax" <+> pretty n <+> text "..."-            PatternSyn _ n as p -> text "pattern" <+> pretty n <+> fsep (map pretty as)-                                     <+> text "=" <+> pretty p+            Syntax n xs -> "syntax" <+> pretty n <+> "..."+            PatternSyn _ n as p -> "pattern" <+> pretty n <+> fsep (map pretty as)+                                     <+> "=" <+> pretty p             Mutual _ ds     -> namedBlock "mutual" ds             Abstract _ ds   -> namedBlock "abstract" ds             Private _ _ ds  -> namedBlock "private" ds@@ -465,11 +458,12 @@             Macro _ ds      -> namedBlock "macro" ds             Postulate _ ds  -> namedBlock "postulate" ds             Primitive _ ds  -> namedBlock "primitive" ds+            Generalize _ ds -> namedBlock "variable" ds             Module _ x tel ds ->-                hsep [ text "module"+                hsep [ "module"                      , pretty x                      , fcat (map pretty tel)-                     , text "where"+                     , "where"                      ] $$ nest 2 (vcat $ map pretty ds)             ModuleMacro _ x (SectionApp _ [] e) DoOpen i | isNoName x ->                 sep [ pretty DoOpen@@ -477,92 +471,97 @@                     , nest 4 $ pretty i                     ]             ModuleMacro _ x (SectionApp _ tel e) open i ->-                sep [ pretty open <+> text "module" <+> pretty x <+> fcat (map pretty tel)-                    , nest 2 $ text "=" <+> pretty e <+> pretty i+                sep [ pretty open <+> "module" <+> pretty x <+> fcat (map pretty tel)+                    , nest 2 $ "=" <+> pretty e <+> pretty i                     ]-            ModuleMacro _ x (RecordModuleIFS _ rec) open i ->-                sep [ pretty open <+> text "module" <+> pretty x-                    , nest 2 $ text "=" <+> pretty rec <+> text "{{...}}"+            ModuleMacro _ x (RecordModuleInstance _ rec) open i ->+                sep [ pretty open <+> "module" <+> pretty x+                    , nest 2 $ "=" <+> pretty rec <+> "{{...}}"                     ]-            Open _ x i  -> hsep [ text "open", pretty x, pretty i ]+            Open _ x i  -> hsep [ "open", pretty x, pretty i ]             Import _ x rn open i   ->-                hsep [ pretty open, text "import", pretty x, as rn, pretty i ]+                hsep [ pretty open, "import", pretty x, as rn, pretty i ]                 where                     as Nothing  = empty-                    as (Just x) = text "as" <+> pretty (asName x)+                    as (Just x) = "as" <+> pretty (asName x)             UnquoteDecl _ xs t ->-              sep [ text "unquoteDecl" <+> fsep (map pretty xs) <+> text "=", nest 2 $ pretty t ]+              sep [ "unquoteDecl" <+> fsep (map pretty xs) <+> "=", nest 2 $ pretty t ]             UnquoteDef _ xs t ->-              sep [ text "unquoteDef" <+> fsep (map pretty xs) <+> text "=", nest 2 $ pretty t ]-            Pragma pr   -> sep [ text "{-#" <+> pretty pr, text "#-}" ]+              sep [ "unquoteDef" <+> fsep (map pretty xs) <+> "=", nest 2 $ pretty t ]+            Pragma pr   -> sep [ "{-#" <+> pretty pr, "#-}" ]         where             namedBlock s ds =                 sep [ text s                     , nest 2 $ vcat $ map pretty ds                     ] +pRecord :: Name -> Maybe (Ranged Induction) -> Maybe HasEta -> Maybe (Name, IsInstance) -> [LamBinding] -> Maybe Expr -> [Declaration] -> Doc+pRecord x ind eta con tel me cs =+  sep [ hsep  [ "record"+              , pretty x+              , fcat (map pretty tel)+              ]+      , nest 2 $ pType me+      ] $$ nest 2 (vcat $ pInd +++                          pEta +++                          pCon +++                          map pretty cs)+  where pType (Just e) = hsep+                [ ":"+                , pretty e+                , "where"+                ]+        pType Nothing  =+                  "where"+        pInd = maybeToList $ text . show . rangedThing <$> ind+        pEta = maybeToList $ eta <&> \case+          YesEta -> "eta-equality"+          NoEta  -> "no-eta-equality"+        pCon = maybeToList $ ("constructor" <+>) . pretty <$> fst <$> con+ instance Pretty OpenShortHand where-    pretty DoOpen = text "open"+    pretty DoOpen = "open"     pretty DontOpen = empty  instance Pretty Pragma where-    pretty (OptionsPragma _ opts) = fsep $ map text $ "OPTIONS" : opts-    pretty (BuiltinPragma _ b x)  = hsep [ text "BUILTIN", text b, pretty x ]+    pretty (OptionsPragma _ opts)  = fsep $ map text $ "OPTIONS" : opts+    pretty (BuiltinPragma _ b x)   = hsep [ "BUILTIN", text b, pretty x ]     pretty (RewritePragma _ xs)    =-      hsep [ text "REWRITE", hsep $ map pretty xs ]-    pretty (CompiledPragma _ x hs) =-      hsep [ text "COMPILED", pretty x, text hs ]-    pretty (CompiledExportPragma _ x hs) =-      hsep [ text "COMPILED_EXPORT", pretty x, text hs ]-    pretty (CompiledTypePragma _ x hs) =-      hsep [ text "COMPILED_TYPE", pretty x, text hs ]-    pretty (CompiledDataPragma _ x hs hcs) =-      hsep $ [text "COMPILED_DATA", pretty x] ++ map text (hs : hcs)-    pretty (CompiledJSPragma _ x e) =-      hsep [ text "COMPILED_JS", pretty x, text e ]-    pretty (CompiledUHCPragma _ x e) =-      hsep [ text "COMPILED_UHC", pretty x, text e ]-    pretty (CompiledDataUHCPragma _ x crd crcs) =-      hsep $ [ text "COMPILED_DATA_UHC", pretty x] ++ map text (crd : crcs)-    pretty (HaskellCodePragma _ s) =-      vcat (text "HASKELL" : map text (lines s))+      hsep [ "REWRITE", hsep $ map pretty xs ]     pretty (CompilePragma _ b x e) =-      hsep [ text "COMPILE", text b, pretty x, text e ]+      hsep [ "COMPILE", text b, pretty x, text e ]     pretty (ForeignPragma _ b s) =       vcat $ text ("FOREIGN " ++ b) : map text (lines s)     pretty (StaticPragma _ i) =-      hsep $ [text "STATIC", pretty i]+      hsep $ ["STATIC", pretty i]     pretty (InjectivePragma _ i) =-      hsep $ [text "INJECTIVE", pretty i]+      hsep $ ["INJECTIVE", pretty i]     pretty (InlinePragma _ True i) =-      hsep $ [text "INLINE", pretty i]+      hsep $ ["INLINE", pretty i]     pretty (InlinePragma _ False i) =-      hsep $ [text "NOINLINE", pretty i]-    pretty (ImportPragma _ i) =-      hsep $ [text "IMPORT", text i]-    pretty (ImportUHCPragma _ i) =-      hsep $ [text "IMPORT_UHC", text i]+      hsep $ ["NOINLINE", pretty i]     pretty (ImpossiblePragma _) =-      hsep $ [text "IMPOSSIBLE"]+      hsep $ ["IMPOSSIBLE"]     pretty (EtaPragma _ x) =-      hsep $ [text "ETA", pretty x]+      hsep $ ["ETA", pretty x]     pretty (TerminationCheckPragma _ tc) =       case tc of         TerminationCheck       -> __IMPOSSIBLE__-        NoTerminationCheck     -> text "NO_TERMINATION_CHECK"-        NonTerminating         -> text "NON_TERMINATING"-        Terminating            -> text "TERMINATING"-        TerminationMeasure _ x -> hsep $ [text "MEASURE", pretty x]-    pretty (WarningOnUsage _ nm str) = hsep [ text "WARNING_ON_USAGE", pretty nm, text str ]-    pretty (CatchallPragma _) = text "CATCHALL"-    pretty (DisplayPragma _ lhs rhs) = text "DISPLAY" <+> sep [ pretty lhs <+> text "=", nest 2 $ pretty rhs ]-    pretty (NoPositivityCheckPragma _) = text "NO_POSITIVITY_CHECK"+        NoTerminationCheck     -> "NO_TERMINATION_CHECK"+        NonTerminating         -> "NON_TERMINATING"+        Terminating            -> "TERMINATING"+        TerminationMeasure _ x -> hsep $ ["MEASURE", pretty x]+    pretty (WarningOnUsage _ nm str) = hsep [ "WARNING_ON_USAGE", pretty nm, text str ]+    pretty (CatchallPragma _) = "CATCHALL"+    pretty (DisplayPragma _ lhs rhs) = "DISPLAY" <+> sep [ pretty lhs <+> "=", nest 2 $ pretty rhs ]+    pretty (NoPositivityCheckPragma _) = "NO_POSITIVITY_CHECK"     pretty (PolarityPragma _ q occs) =-      hsep (text "POLARITY" : pretty q : map pretty occs)+      hsep ("POLARITY" : pretty q : map pretty occs)+    pretty (NoUniverseCheckPragma _) = "NO_UNIVERSE_CHECK"  instance Pretty Fixity where     pretty (Fixity _ Unrelated   _)   = __IMPOSSIBLE__-    pretty (Fixity _ (Related n) ass) = text s <+> text (show n)+    pretty (Fixity _ (Related n) ass) = s <+> text (show n)       where       s = case ass of             LeftAssoc  -> "infixl"@@ -570,7 +569,7 @@             NonAssoc   -> "infix"  instance Pretty GenPart where-    pretty (IdPart x)   = text x+    pretty (IdPart x)   = text $ rangedThing x     pretty BindHole{}   = underscore     pretty NormalHole{} = underscore     pretty WildHole{}   = underscore@@ -580,18 +579,23 @@ instance Pretty Fixity' where     pretty (Fixity' fix nota _)       | nota == noNotation = pretty fix-      | otherwise          = text "syntax" <+> pretty nota+      | otherwise          = "syntax" <+> pretty nota   -- Andreas 2010-09-21: do not print relevance in general, only in function types!  -- Andreas 2010-09-24: and in record fields instance Pretty a => Pretty (Arg a) where-  prettyPrec p (Arg ai e) = prettyHiding ai id $ prettyPrec p' e+  prettyPrec p (Arg ai e) = prettyHiding ai localParens $ prettyPrec p' e       where p' | visible ai = p                | otherwise  = 0+            localParens | getOrigin ai == Substitution = parens+                        | otherwise = id +instance Pretty a => Pretty (Dom a) where+  pretty = pretty . argFromDom+ instance Pretty e => Pretty (Named_ e) where     prettyPrec p (Named Nothing e) = prettyPrec p e-    prettyPrec p (Named (Just s) e) = mparens (p > 0) $ sep [ text (rawNameToString $ rangedThing s) <+> text "=", pretty e ]+    prettyPrec p (Named (Just s) e) = mparens (p > 0) $ sep [ text (rawNameToString $ rangedThing s) <+> "=", pretty e ]  instance Pretty Pattern where     prettyList = fsep . map pretty@@ -604,14 +608,15 @@             InstanceP _ p   -> dbraces $ pretty p             ParenP _ p      -> parens $ pretty p             WildP _         -> underscore-            AsP _ x p       -> pretty x <> text "@" <> pretty p-            DotP _ p        -> text "." <> pretty p-            AbsurdP _       -> text "()"+            AsP _ x p       -> pretty x <> "@" <> pretty p+            DotP _ p        -> "." <> pretty p+            AbsurdP _       -> "()"             LitP l          -> pretty l-            QuoteP _        -> text "quote"-            RecP _ fs       -> sep [ text "record", bracesAndSemicolons (map pretty fs) ]-            EllipsisP _     -> text "..."-            WithP _ p       -> text "|" <+> pretty p+            QuoteP _        -> "quote"+            RecP _ fs       -> sep [ "record", bracesAndSemicolons (map pretty fs) ]+            EqualP _ es     -> sep $ [ parens (sep [pretty e1, "=", pretty e2]) | (e1,e2) <- es ]+            EllipsisP _     -> "..."+            WithP _ p       -> "|" <+> pretty p  prettyOpApp :: forall a .   Pretty a => QName -> [NamedArg (MaybePlaceholder a)] -> [Doc]@@ -621,8 +626,8 @@     ms = init (qnameParts q)     -- xs: the concrete name (alternation of @Id@ and @Hole@)     xs = case unqualify q of-           Name _ xs -> xs-           NoName{}  -> __IMPOSSIBLE__+           Name _ _ xs    -> xs+           NoName{}       -> __IMPOSSIBLE__      prOp :: [Name] -> [NamePart] -> [NamedArg (MaybePlaceholder a)] -> [(Doc, Maybe PositionInName)]     prOp ms (Hole : xs) (e : es) =@@ -631,7 +636,7 @@         NoPlaceholder{} -> (pretty e, Nothing) : prOp ms xs es           -- Module qualifier needs to go on section holes (#3072)     prOp _  (Hole : _)  []       = __IMPOSSIBLE__-    prOp ms (Id x : xs) es       = ( qual ms $ pretty $ Name noRange $ [Id x]+    prOp ms (Id x : xs) es       = ( qual ms $ pretty $ Name noRange InScope $ [Id x]                                    , Nothing                                    ) : prOp [] xs es       -- Qualify the name part with the module.@@ -639,7 +644,7 @@      prOp _  []       es          = map (\e -> (pretty e, Nothing)) es -    qual ms doc = hcat $ punctuate (text ".") $ map pretty ms ++ [doc]+    qual ms doc = hcat $ punctuate "." $ map pretty ms ++ [doc]      -- Section underscores should be printed without surrounding     -- whitespace. This function takes care of that.@@ -670,24 +675,24 @@             , rename $ impRenaming i             ]         where-            public True  = text "public"+            public True  = "public"             public False = empty              prettyHiding [] = empty-            prettyHiding xs = text "hiding" <+> parens (fsep $ punctuate (text ";") $ map pretty xs)+            prettyHiding xs = "hiding" <+> parens (fsep $ punctuate ";" $ map pretty xs)              rename [] = empty-            rename xs = hsep [ text "renaming"-                             , parens $ fsep $ punctuate (text ";") $ map pr xs+            rename xs = hsep [ "renaming"+                             , parens $ fsep $ punctuate ";" $ map pr xs                              ] -            pr r = hsep [ pretty (renFrom r), text "to", pretty (renTo r) ]+            pr r = hsep [ pretty (renFrom r), "to", pretty (renTo r) ]  instance (Pretty a, Pretty b) => Pretty (Using' a b) where     pretty UseEverything = empty     pretty (Using xs)    =-        text "using" <+> parens (fsep $ punctuate (text ";") $ map pretty xs)+        "using" <+> parens (fsep $ punctuate ";" $ map pretty xs)  instance (Pretty a, Pretty b) => Pretty (ImportedName' a b) where     pretty (ImportedName x)     = pretty x-    pretty (ImportedModule x)   = text "module" <+> pretty x+    pretty (ImportedModule x)   = "module" <+> pretty x
src/full/Agda/Syntax/DoNotation.hs view
@@ -26,6 +26,7 @@ module Agda.Syntax.DoNotation (desugarDoNotation) where  import Control.Monad+import Data.Maybe  import Agda.Syntax.Common import Agda.Syntax.Position@@ -37,11 +38,12 @@ import Agda.TypeChecking.Monad  import Agda.Utils.Pretty ( prettyShow )+import Agda.Utils.List   ( initMaybe )  desugarDoNotation :: Range -> [DoStmt] -> ScopeM Expr desugarDoNotation r ss = do-  let qBind = QName $ Name noRange [Hole, Id ">>=", Hole]-      qThen = QName $ Name noRange [Hole, Id ">>", Hole]+  let qBind = QName $ Name noRange InScope [Hole, Id ">>=", Hole]+      qThen = QName $ Name noRange InScope [Hole, Id ">>", Hole]       isBind DoBind{} = True       isBind _        = False       isThen DoThen{} = True@@ -51,7 +53,7 @@   -- I think we should throw an error rather than silently switching to _>>=_.   -- / Ulf   mapM_ ensureInScope $ [qBind | any isBind ss] ++-                        [qThen | any isThen $ drop 1 $ reverse ss] -- ignore the last 'DoThen'+                        [qThen | any isThen $ fromMaybe ss $ initMaybe ss] -- ignore the last 'DoThen'   desugarDo qBind qThen ss  desugarDo :: QName -> QName -> [DoStmt] -> ScopeM Expr@@ -113,11 +115,12 @@ nonMatchingBind :: QName -> Range -> Name -> Expr -> Expr -> Expr nonMatchingBind qBind r x e body =     appOp (setRange r qBind) e $ Lam (getRange (x, body)) [bx] body-  where bx = DomainFree defaultArgInfo $ mkBoundName_ x+  where bx = DomainFree $ defaultNamedArg $ mkBoundName_ x  appOp :: QName -> Expr -> Expr -> Expr-appOp q e1 e2 = app (Ident q) [e1, e2]+appOp q e1 e2 = app (Ident q) [par e1, par e2]   where+    par e = Paren (getRange e) e  -- Add parens to get the right precedence context (#3152)     app e es = foldl (\ e1 e2 -> App (getRange (e1, e2)) e1 (defaultNamedArg e2)) e es  ensureInScope :: QName -> ScopeM ()
src/full/Agda/Syntax/Fixity.hs view
@@ -93,7 +93,7 @@ --   @M.for x ∈ xs return e@, or @x ℕ.+ y@. notationNames :: NewNotation -> [QName] notationNames (NewNotation q _ _ parts _) =-  zipWith ($) (reQualify : repeat QName) [Name noRange [Id x] | IdPart x <- parts ]+  zipWith ($) (reQualify : repeat QName) [Name noRange InScope [Id $ rangedThing x] | IdPart x <- parts ]   where     -- The qualification of @q@.     modules     = init (qnameParts q)@@ -105,17 +105,17 @@ --   'Hole's become 'NormalHole's, 'Id's become 'IdParts'. --   If 'Name' has no 'Hole's, it returns 'noNotation'. syntaxOf :: Name -> Notation-syntaxOf (NoName _ _) = noNotation-syntaxOf (Name _ [_]) = noNotation-syntaxOf (Name _ xs)  = mkSyn 0 xs+syntaxOf (NoName _ _)    = noNotation+syntaxOf (Name _ _ [_])  = noNotation+syntaxOf (Name _ _ xs)   = mkSyn 0 xs   where     -- Turn a concrete name into a Notation,     -- numbering the holes from left to right.     -- Result will have no 'BindingHole's.     mkSyn :: Int -> [NamePart] -> Notation     mkSyn n []          = []-    mkSyn n (Hole : xs) = NormalHole (defaultNamedArg n) : mkSyn (1 + n) xs-    mkSyn n (Id x : xs) = IdPart x : mkSyn n xs+    mkSyn n (Hole : xs) = NormalHole noRange (defaultNamedArg $ unranged n) : mkSyn (1 + n) xs+    mkSyn n (Id x : xs) = IdPart (unranged x) : mkSyn n xs  noFixity' :: Fixity' noFixity' = Fixity' noFixity noNotation noRange
src/full/Agda/Syntax/IdiomBrackets.hs view
@@ -15,8 +15,8 @@  parseIdiomBrackets :: Range -> Expr -> ScopeM Expr parseIdiomBrackets r e = do-  let qPure = QName $ Name noRange [Id "pure"]-      qAp   = QName $ Name noRange [Hole, Id "<*>", Hole]+  let qPure = QName $ Name noRange InScope [Id "pure"]+      qAp   = QName $ Name noRange InScope [Hole, Id "<*>", Hole]       ePure = App r (Ident qPure) . defaultNamedArg       eAp a b = App r (App r (Ident qAp) (defaultNamedArg a)) (defaultNamedArg b)   mapM_ ensureInScope [qPure, qAp]
src/full/Agda/Syntax/Info.hs view
@@ -237,13 +237,13 @@     -- ^ Does this pattern come form the eta-expansion of an implicit pattern?     ---  Or from a user written constructor or record pattern?   , patInfo     :: PatInfo-  , patLazy     :: Bool+  , patLazy     :: ConPatLazy   }   deriving (Data, Eq)  instance Show ConPatInfo where   show (ConPatInfo po i l) =-    applyWhen l ("lazy " ++) $+    applyWhen (l  == ConPatLazy) ("lazy " ++) $     applyWhen (po == ConOSystem) ("implicit " ++) $ show i  instance HasRange ConPatInfo where@@ -254,3 +254,9 @@  instance SetRange ConPatInfo where   setRange r (ConPatInfo b i l) = ConPatInfo b (PatRange r) l++-- | Has the constructor pattern a dotted (forced) constructor?+data ConPatLazy+  = ConPatLazy   -- ^ Dotted constructor.+  | ConPatEager  -- ^ Ordinary constructor.+  deriving (Data, Eq, Ord, Show, Bounded, Enum)
src/full/Agda/Syntax/Internal.hs view
@@ -62,10 +62,10 @@ data ConHead = ConHead   { conName      :: QName     -- ^ The name of the constructor.   , conInductive :: Induction -- ^ Record constructors can be coinductive.-  , conFields    :: [QName]   -- ^ The name of the record fields.-                              --   Empty list for data constructors.-                              --   'Arg' is not needed here since it-                              --   is stored in the constructor args.+  , conFields    :: [Arg QName]   -- ^ The name of the record fields.+      --   Empty list for data constructors.+      --   'Arg' is stored since the info in the constructor args+      --   might not be accurate because of subtyping (issue #2170).   } deriving (Data, Show)  instance Eq ConHead where@@ -118,6 +118,11 @@             -- ^ Irrelevant stuff in relevant position, but created             --   in an irrelevant context.  Basically, an internal             --   version of the irrelevance axiom @.irrAx : .A -> A@.+          | Dummy String+            -- ^ A (part of a) term or type which is only used for internal purposes.+            --   Replaces the @Sort Prop@ hack.+            --   The @String@ typically describes the location where we create this dummy,+            --   but can contain other information as well.   deriving (Data, Show)  type ConInfo = ConOrigin@@ -127,6 +132,7 @@ data Elim' a   = Apply (Arg a)         -- ^ Application.   | Proj ProjOrigin QName -- ^ Projection.  'QName' is name of a record projection.+  | IApply a a a -- ^ IApply x y r, x and y are the endpoints   deriving (Data, Show, Functor, Foldable, Traversable)  type Elim = Elim' Term@@ -134,11 +140,14 @@  -- | This instance cheats on 'Proj', use with care. --   'Proj's are always assumed to be 'UserWritten', since they have no 'ArgInfo'.+--   Same for IApply instance LensOrigin (Elim' a) where   getOrigin (Apply a)   = getOrigin a   getOrigin Proj{}      = UserWritten+  getOrigin IApply{}    = UserWritten   mapOrigin f (Apply a) = Apply $ mapOrigin f a   mapOrigin f e@Proj{}  = e+  mapOrigin f e@IApply{} = e  -- | Names in binders and arguments. type ArgName = String@@ -155,6 +164,9 @@ nameToArgName :: Name -> ArgName nameToArgName = stringToArgName . prettyShow +namedArgName :: NamedArg Name -> ArgName+namedArgName x = maybe (nameToArgName $ namedArg x) rangedThing $ nameOf $ unArg x+ -- | Binder. --   'Abs': The bound variable might appear in the body. --   'NoAbs' is pseudo-binder, it does not introduce a fresh variable,@@ -192,6 +204,9 @@ instance LensSort a => LensSort (Dom a) where   lensSort = traverseF . lensSort +instance LensSort a => LensSort (Arg a) where+  lensSort = traverseF . lensSort+ instance LensSort a => LensSort (Abs a) where   lensSort = traverseF . lensSort @@ -207,12 +222,18 @@ -- data Sort   = Type Level  -- ^ @Set ℓ@.-  | Prop        -- ^ Dummy sort.+  | Prop Level  -- ^ @Prop ℓ@.   | Inf         -- ^ @Setω@.   | SizeUniv    -- ^ @SizeUniv@, a sort inhabited by type @Size@.   | PiSort Sort (Abs Sort) -- ^ Sort of the pi type.   | UnivSort Sort -- ^ Sort of another sort.   | MetaS {-# UNPACK #-} !MetaId Elims+  | DefS QName Elims -- ^ A postulated sort.+  | DummyS String+    -- ^ A (part of a) term or type which is only used for internal purposes.+    --   Replaces the abuse of @Prop@ for a dummy sort.+    --   The @String@ typically describes the location where we create this dummy,+    --   but can contain other information as well.   deriving (Data, Show)  -- | A level is a maximum expression of 0..n 'PlusLevel' expressions@@ -351,6 +372,9 @@ -- * Definitions --------------------------------------------------------------------------- +-- | Named pattern arguments.+type NAPs = [NamedArg DeBruijnPattern]+ -- | A clause is a list of patterns and the clause body. -- --  The telescope contains the types of the pattern variables and the@@ -369,7 +393,7 @@     , clauseFullRange :: Range     , clauseTel       :: Telescope       -- ^ @Δ@: The types of the pattern variables in dependency order.-    , namedClausePats :: [NamedArg DeBruijnPattern]+    , namedClausePats :: NAPs       -- ^ @Δ ⊢ ps@.  The de Bruijn indices refer to @Δ@.     , clauseBody      :: Maybe Term       -- ^ @Just v@ with @Δ ⊢ v@ for a regular clause, or @Nothing@ for an@@ -435,6 +459,10 @@     -- ^ E.g. @5@, @"hello"@.   | ProjP ProjOrigin QName     -- ^ Projection copattern.  Can only appear by itself.+  | IApplyP PatOrigin Term Term x+    -- ^ Path elimination pattern, like @VarP@ but keeps track of endpoints.+  | DefP PatOrigin QName [NamedArg (Pattern' x)]+    -- ^ Used for HITs, the QName should be the one from primHComp.   deriving (Data, Show, Functor, Foldable, Traversable)  type Pattern = Pattern' PatVarName@@ -472,6 +500,9 @@   { conPRecord :: Maybe PatOrigin     -- ^ @Nothing@ if data constructor.     --   @Just@ if record constructor.+  , conPFallThrough :: Bool+    -- ^ Should the match block on non-canonical terms or can it+    --   proceed to the catch-all clause?   , conPType   :: Maybe (Arg Type)     -- ^ The type of the whole constructor pattern.     --   Should be present (@Just@) if constructor pattern is@@ -490,7 +521,7 @@   deriving (Data, Show)  noConPatternInfo :: ConPatternInfo-noConPatternInfo = ConPatternInfo Nothing Nothing False+noConPatternInfo = ConPatternInfo Nothing False Nothing False  -- | Build partial 'ConPatternInfo' from 'ConInfo' toConPatternInfo :: ConInfo -> ConPatternInfo@@ -523,9 +554,12 @@   patternVars (Arg i (VarP _ x)   ) = [Arg i $ Left x]   patternVars (Arg i (DotP _ t)   ) = [Arg i $ Right t]   patternVars (Arg _ (ConP _ _ ps)) = patternVars ps+  patternVars (Arg _ (DefP _ _ ps)) = patternVars ps   patternVars (Arg _ (LitP _)     ) = []   patternVars (Arg _ ProjP{}      ) = []+  patternVars (Arg i (IApplyP _ _ _ x)) = [Arg i $ Left x] + instance PatternVars a (NamedArg (Pattern' a)) where   patternVars = patternVars . fmap namedThing @@ -540,6 +574,8 @@ patternOrigin LitP{}     = Nothing patternOrigin (ConP _ ci _) = conPRecord ci patternOrigin ProjP{}    = Nothing+patternOrigin (IApplyP o _ _ _) = Just o+patternOrigin (DefP o _ _) = Just o  -- | Does the pattern perform a match that could fail? properlyMatching :: DeBruijnPattern -> Bool@@ -551,6 +587,8 @@ properlyMatching (ConP _ ci ps) = isNothing (conPRecord ci) || -- not a record cons   List.any (properlyMatching . namedArg) ps  -- or one of subpatterns is a proper m properlyMatching ProjP{} = True+properlyMatching IApplyP{} = False+properlyMatching DefP{}  = True  instance IsProjP (Pattern' a) where   isProjP (ProjP o d) = Just (o, unambiguous d)@@ -648,6 +686,32 @@ isEqualityType EqualityType{} = True isEqualityType OtherType{}    = False +-- | View type as path type.++data PathView+  = PathType+    { pathSort  :: Sort     -- ^ Sort of this type.+    , pathName  :: QName    -- ^ Builtin PATH.+    , pathLevel :: Arg Term -- ^ Hidden+    , pathType  :: Arg Term -- ^ Hidden+    , pathLhs   :: Arg Term -- ^ NotHidden+    , pathRhs   :: Arg Term -- ^ NotHidden+    }+  | OType Type -- ^ reduced++isPathType :: PathView -> Bool+isPathType PathType{} = True+isPathType OType{}    = False++data IntervalView+      = IZero+      | IOne+      | IMin (Arg Term) (Arg Term)+      | IMax (Arg Term) (Arg Term)+      | INeg (Arg Term)+      | OTerm Term+      deriving Show+ --------------------------------------------------------------------------- -- * Absurd Lambda ---------------------------------------------------------------------------@@ -683,10 +747,42 @@     DontCare{} -> v     _          -> DontCare v --- | A dummy type.-typeDontCare :: Type-typeDontCare = sort Prop+-- | Aux: A dummy term to constitute a dummy term/level/sort/type.+dummyTerm' :: String -> Int -> Term+dummyTerm' file line = Dummy $ file ++ ":" ++ show line +-- | Aux: A dummy level to constitute a level/sort.+dummyLevel' :: String -> Int -> Level+dummyLevel' file line = unreducedLevel $ dummyTerm' file line++-- | A dummy term created at location.+--   Note: use macro __DUMMY_TERM__ !+dummyTerm :: String -> Int -> Term+dummyTerm file line = dummyTerm' ("dummyTerm: " ++ file) line++-- | A dummy level created at location.+--   Note: use macro __DUMMY_LEVEL__ !+dummyLevel :: String -> Int -> Level+dummyLevel file line = dummyLevel' ("dummyLevel: " ++ file) line++-- | A dummy sort created at location.+--   Note: use macro __DUMMY_SORT__ !+dummySort :: String -> Int -> Sort+dummySort file line = DummyS $ file ++ ":" ++ show line++-- | A dummy type created at location.+--   Note: use macro __DUMMY_TYPE__ !+dummyType :: String -> Int -> Type+dummyType file line = El (DummyS "") $ dummyTerm' ("dummyType: " ++ file) line++-- | Context entries without a type have this dummy type.+--   Note: use macro __DUMMY_DOM__ !+dummyDom :: String -> Int -> Dom Type+dummyDom file line = defaultDom $ dummyType file line++unreducedLevel :: Term -> Level+unreducedLevel v = Max [ Plus 0 $ UnreducedLevel v ]+ -- | Top sort (Set\omega). topSort :: Type topSort = sort Inf@@ -697,6 +793,9 @@ varSort :: Int -> Sort varSort n = Type $ Max [Plus 0 $ NeutralLevel mempty $ var n] +tmSort :: Term -> Sort+tmSort t = Type $ Max [Plus 0 $ UnreducedLevel t]+ levelSuc :: Level -> Level levelSuc (Max []) = Max [ClosedLevel 1] levelSuc (Max as) = Max $ map inc as@@ -706,24 +805,20 @@ mkType :: Integer -> Sort mkType n = Type $ Max [ClosedLevel n | n > 0] +mkProp :: Integer -> Sort+mkProp n = Prop $ Max [ClosedLevel n | n > 0]+ isSort :: Term -> Maybe Sort isSort v = case v of   Sort s -> Just s   _      -> Nothing  impossibleTerm :: String -> Int -> Term-impossibleTerm file line = Lit $ LitString noRange $ unlines+impossibleTerm file line = Dummy $ unlines   [ "An internal error has occurred. Please report this as a bug."   , "Location of the error: " ++ file ++ ":" ++ show line   ] -hackReifyToMeta :: Term-hackReifyToMeta = DontCare $ Lit $ LitNat noRange (-42)--isHackReifyToMeta :: Term -> Bool-isHackReifyToMeta (DontCare (Lit (LitNat r (-42)))) = r == noRange-isHackReifyToMeta _ = False- --------------------------------------------------------------------------- -- * Telescopes. ---------------------------------------------------------------------------@@ -757,7 +852,7 @@ telFromList' :: (a -> ArgName) -> ListTel' a -> Telescope telFromList' f = List.foldr extTel EmptyTel   where-    extTel (Dom info (x, a)) = ExtendTel (Dom info a) . Abs (f x)+    extTel dom@(Dom{unDom = (x, a)}) = ExtendTel (dom{unDom = a}) . Abs (f x)  -- | Convert a list telescope to a telescope. telFromList :: ListTel -> Telescope@@ -769,6 +864,10 @@ telToList (ExtendTel arg (Abs x tel)) = fmap (x,) arg : telToList tel telToList (ExtendTel _    NoAbs{}   ) = __IMPOSSIBLE__ +-- | Lens to edit a 'Telescope' as a list.+listTel :: Lens' ListTel Telescope+listTel f = fmap telFromList . f . telToList+ -- | Drop the types from a telescope. class TelToArgs a where   telToArgs :: a -> [Arg ArgName]@@ -784,10 +883,10 @@   sgTel :: a -> Telescope  instance SgTel (ArgName, Dom Type) where-  sgTel (x, dom) = ExtendTel dom $ Abs x EmptyTel+  sgTel (x, !dom) = ExtendTel dom $ Abs x EmptyTel  instance SgTel (Dom (ArgName, Type)) where-  sgTel (Dom ai (x, t)) = ExtendTel (Dom ai t) $ Abs x EmptyTel+  sgTel dom = ExtendTel (snd <$> dom) $ Abs (fst $ unDom dom) EmptyTel  instance SgTel (Dom Type) where   sgTel dom = sgTel (stringToArgName "_", dom)@@ -822,17 +921,6 @@   Pi  _ b -> 1 + arity (unAbs b)   _       -> 0 --- | Make a name that is not in scope.-notInScopeName :: ArgName -> ArgName-notInScopeName = stringToArgName . ("." ++) . argNameToString---- | Remove the dot from a notInScopeName. This is used when printing function---   types that have abstracted over not-in-scope names.-unNotInScopeName :: ArgName -> ArgName-unNotInScopeName = stringToArgName . undot . argNameToString-  where undot ('.':s) = s-        undot s       = s- -- | Pick the better name suggestion, i.e., the one that is not just underscore. class Suggest a b where   suggest :: a -> b -> String@@ -894,16 +982,13 @@     Sort{}     -> Nothing     Level{}    -> Nothing     DontCare{} -> Nothing---- | Drop 'Apply' constructor. (Unsafe!)-argFromElim :: Elim' a -> Arg a-argFromElim (Apply u) = u-argFromElim Proj{}    = __IMPOSSIBLE__+    Dummy{}    -> Nothing  -- | Drop 'Apply' constructor. (Safe) isApplyElim :: Elim' a -> Maybe (Arg a) isApplyElim (Apply u) = Just u isApplyElim Proj{}    = Nothing+isApplyElim (IApply _ _ r) = Just (defaultArg r)  isApplyElim' :: Empty -> Elim' a -> Arg a isApplyElim' e = fromMaybe (absurd e) . isApplyElim@@ -923,14 +1008,11 @@ instance IsProjElim Elim where   isProjElim (Proj o d) = Just (o, d)   isProjElim Apply{}    = Nothing---- | Discard @Proj f@ entries.-dropProjElims :: IsProjElim e => [e] -> [e]-dropProjElims = filter (isNothing . isProjElim)+  isProjElim IApply{} = Nothing  -- | Discards @Proj f@ entries. argsFromElims :: Elims -> Args-argsFromElims = map argFromElim . dropProjElims+argsFromElims = mapMaybe isApplyElim  -- | Drop 'Proj' constructors. (Safe) allProjElims :: Elims -> Maybe [(ProjOrigin, QName)]@@ -1013,16 +1095,19 @@     Pi a b      -> 1 + tsize a + tsize b     Sort s      -> tsize s     DontCare mv -> tsize mv+    Dummy{}     -> 1  instance TermSize Sort where   tsize s = case s of     Type l    -> 1 + tsize l-    Prop      -> 1+    Prop l    -> 1 + tsize l     Inf       -> 1     SizeUniv  -> 1     PiSort s s' -> 1 + tsize s + tsize s'     UnivSort s -> 1 + tsize s     MetaS _ es -> 1 + tsize es+    DefS _ es  -> 1 + tsize es+    DummyS{}   -> 1  instance TermSize Level where   tsize (Max as) = 1 + tsize as@@ -1064,6 +1149,7 @@     Pi a b      -> killRange2 Pi a b     Sort s      -> killRange1 Sort s     DontCare mv -> killRange1 DontCare mv+    Dummy{}     -> v  instance KillRange Level where   killRange (Max as) = killRange1 Max as@@ -1083,13 +1169,15 @@  instance KillRange Sort where   killRange s = case s of-    Prop       -> Prop     Inf        -> Inf     SizeUniv   -> SizeUniv     Type a     -> killRange1 Type a+    Prop a     -> killRange1 Prop a     PiSort s1 s2 -> killRange2 PiSort s1 s2     UnivSort s -> killRange1 UnivSort s     MetaS x es -> killRange1 (MetaS x) es+    DefS d es  -> killRange2 DefS d es+    DummyS{}   -> s  instance KillRange Substitution where   killRange IdS                  = IdS@@ -1103,7 +1191,7 @@   killRange = id  instance KillRange ConPatternInfo where-  killRange (ConPatternInfo mr mt lz) = killRange1 (ConPatternInfo mr) mt lz+  killRange (ConPatternInfo mr b mt lz) = killRange1 (ConPatternInfo mr b) mt lz  instance KillRange DBPatVar where   killRange (DBPatVar x i) = killRange2 DBPatVar x i@@ -1116,6 +1204,8 @@       ConP con info ps -> killRange3 ConP con info ps       LitP l           -> killRange1 LitP l       ProjP o q        -> killRange1 (ProjP o) q+      IApplyP o u t x  -> killRange3 (IApplyP o) u t x+      DefP o q ps      -> killRange2 (DefP o) q ps  instance KillRange Clause where   killRange (Clause rl rf tel ps body t catchall unreachable) =@@ -1153,10 +1243,10 @@   prettyPrec p rho = pr p rho     where     pr p rho = case rho of-      IdS              -> text "idS"-      EmptyS err       -> text "emptyS"-      t :# rho         -> mparens (p > 2) $ sep [ pr 2 rho P.<> text ",", prettyPrec 3 t ]-      Strengthen _ rho -> mparens (p > 9) $ text "strS" <+> pr 10 rho+      IdS              -> "idS"+      EmptyS err       -> "emptyS"+      t :# rho         -> mparens (p > 2) $ sep [ pr 2 rho P.<> ",", prettyPrec 3 t ]+      Strengthen _ rho -> mparens (p > 9) $ "strS" <+> pr 10 rho       Wk n rho         -> mparens (p > 9) $ text ("wkS " ++ show n) <+> pr 10 rho       Lift n rho       -> mparens (p > 9) $ text ("liftS " ++ show n) <+> pr 10 rho @@ -1166,21 +1256,22 @@       Var x els -> text ("@" ++ show x) `pApp` els       Lam ai b   ->         mparens (p > 0) $-        sep [ text "λ" <+> prettyHiding ai id (text . absName $ b) <+> text "->"+        sep [ "λ" <+> prettyHiding ai id (text . absName $ b) <+> "->"             , nest 2 $ pretty (unAbs b) ]       Lit l                -> pretty l       Def q els            -> pretty q `pApp` els       Con c ci vs          -> pretty (conName c) `pApp` vs       Pi a (NoAbs _ b)     -> mparens (p > 0) $-        sep [ prettyPrec 1 (unDom a) <+> text "->"+        sep [ prettyPrec 1 (unDom a) <+> "->"             , nest 2 $ pretty b ]       Pi a b               -> mparens (p > 0) $-        sep [ pDom (domInfo a) (text (absName b) <+> text ":" <+> pretty (unDom a)) <+> text "->"+        sep [ pDom (domInfo a) (text (absName b) <+> ":" <+> pretty (unDom a)) <+> "->"             , nest 2 $ pretty (unAbs b) ]       Sort s      -> prettyPrec p s       Level l     -> prettyPrec p l       MetaV x els -> pretty x `pApp` els       DontCare v  -> prettyPrec p v+      Dummy s     -> parens $ text s     where       pApp d els = mparens (not (null els) && p > 9) $                    sep [d, nest 2 $ fsep (map (prettyPrec 10) els)]@@ -1194,16 +1285,16 @@  instance Pretty Clause where   pretty Clause{clauseTel = tel, namedClausePats = ps, clauseBody = b, clauseType = t} =-    sep [ pretty tel <+> text "|-"-        , nest 2 $ sep [ fsep (map (prettyPrec 10) ps) <+> text "="+    sep [ pretty tel <+> "|-"+        , nest 2 $ sep [ fsep (map (prettyPrec 10) ps) <+> "="                        , nest 2 $ pBody b t ] ]     where-      pBody Nothing _ = text "(absurd)"+      pBody Nothing _ = "(absurd)"       pBody (Just b) Nothing  = pretty b-      pBody (Just b) (Just t) = sep [ pretty b <+> text ":", nest 2 $ pretty t ]+      pBody (Just b) (Just t) = sep [ pretty b <+> ":", nest 2 $ pretty t ]  instance Pretty a => Pretty (Tele (Dom a)) where-  pretty tel = fsep [ pDom a (text x <+> text ":" <+> pretty (unDom a)) | (x, a) <- telToList tel ]+  pretty tel = fsep [ pDom a (text x <+> ":" <+> pretty (unDom a)) | (x, a) <- telToList tel ]     where       telToList EmptyTel = []       telToList (ExtendTel a tel) = (absName tel, a) : telToList (unAbs tel)@@ -1213,16 +1304,16 @@     case as of       []  -> prettyPrec p (ClosedLevel 0)       [a] -> prettyPrec p a-      _   -> mparens (p > 9) $ List.foldr1 (\a b -> text "lub" <+> a <+> b) $ map (prettyPrec 10) as+      _   -> mparens (p > 9) $ List.foldr1 (\a b -> "lub" <+> a <+> b) $ map (prettyPrec 10) as  instance Pretty PlusLevel where   prettyPrec p l =     case l of-      ClosedLevel n -> sucs p n $ \_ -> text "lzero"+      ClosedLevel n -> sucs p n $ \_ -> "lzero"       Plus n a      -> sucs p n $ \p -> prettyPrec p a     where       sucs p 0 d = d p-      sucs p n d = mparens (p > 9) $ text "lsuc" <+> sucs 10 (n - 1) d+      sucs p n d = mparens (p > 9) $ "lsuc" <+> sucs 10 (n - 1) d  instance Pretty LevelAtom where   prettyPrec p a =@@ -1235,18 +1326,22 @@ instance Pretty Sort where   prettyPrec p s =     case s of-      Type (Max []) -> text "Set"+      Type (Max []) -> "Set"       Type (Max [ClosedLevel n]) -> text $ "Set" ++ show n-      Type l -> mparens (p > 9) $ text "Set" <+> prettyPrec 10 l-      Prop -> text "Prop"-      Inf -> text "Setω"-      SizeUniv -> text "SizeUniv"+      Type l -> mparens (p > 9) $ "Set" <+> prettyPrec 10 l+      Prop (Max []) -> "Prop"+      Prop (Max [ClosedLevel n]) -> text $ "Prop" ++ show n+      Prop l -> mparens (p > 9) $ "Prop" <+> prettyPrec 10 l+      Inf -> "Setω"+      SizeUniv -> "SizeUniv"       PiSort s b -> mparens (p > 9) $-        text "piSort" <+> prettyPrec 10 s+        "piSort" <+> prettyPrec 10 s                       <+> parens (sep [ text ("λ " ++ absName b ++ " ->")                                       , nest 2 $ pretty (unAbs b) ])-      UnivSort s -> mparens (p > 9) $ text "univSort" <+> prettyPrec 10 s+      UnivSort s -> mparens (p > 9) $ "univSort" <+> prettyPrec 10 s       MetaS x es -> prettyPrec p $ MetaV x es+      DefS d es  -> prettyPrec p $ Def d es+      DummyS s   -> parens $ text s  instance Pretty Type where   prettyPrec p (El _ a) = prettyPrec p a@@ -1254,25 +1349,29 @@ instance Pretty tm => Pretty (Elim' tm) where   prettyPrec p (Apply v)    = prettyPrec p v   prettyPrec _ (Proj _o x)  = text ("." ++ prettyShow x)+  prettyPrec p (IApply x y r) = prettyPrec p r  instance Pretty DBPatVar where   prettyPrec _ x = text $ patVarNameToString (dbPatVarName x) ++ "@" ++ show (dbPatVarIndex x)  instance Pretty a => Pretty (Pattern' a) where   prettyPrec n (VarP _o x)   = prettyPrec n x-  prettyPrec _ (DotP _o t)   = text "." P.<> prettyPrec 10 t+  prettyPrec _ (DotP _o t)   = "." P.<> prettyPrec 10 t   prettyPrec n (ConP c i nps)= mparens (n > 0 && not (null nps)) $     pretty (conName c) <+> fsep (map (prettyPrec 10) ps)     where ps = map (fmap namedThing) nps+  prettyPrec n (DefP o q nps)= mparens (n > 0 && not (null nps)) $+    pretty q <+> fsep (map (prettyPrec 10) ps)+    where ps = map (fmap namedThing) nps   -- -- Version with printing record type:   -- prettyPrec _ (ConP c i ps) = (if b then braces else parens) $ prTy $   --   text (show $ conName c) <+> fsep (map (pretty . namedArg) ps)   --   where   --     b = maybe False (== ConOSystem) $ conPRecord i-  --     prTy d = caseMaybe (conPType i) d $ \ t -> d  <+> text ":" <+> pretty t+  --     prTy d = caseMaybe (conPType i) d $ \ t -> d  <+> ":" <+> pretty t   prettyPrec _ (LitP l)      = pretty l   prettyPrec _ (ProjP _o q)  = text ("." ++ prettyShow q)-+  prettyPrec n (IApplyP _o _ _ x) = prettyPrec n x ----------------------------------------------------------------------------- -- * NFData instances -----------------------------------------------------------------------------@@ -1291,6 +1390,7 @@     Level l    -> rnf l     MetaV _ es -> rnf es     DontCare v -> rnf v+    Dummy _    -> ()  instance NFData Type where   rnf (El s v) = rnf (s, v)@@ -1298,12 +1398,14 @@ instance NFData Sort where   rnf s = case s of     Type l   -> rnf l-    Prop     -> ()+    Prop l   -> rnf l     Inf      -> ()     SizeUniv -> ()     PiSort a b -> rnf (a, unAbs b)     UnivSort a -> rnf a     MetaS _ es -> rnf es+    DefS _ es  -> rnf es+    DummyS _   -> ()  instance NFData Level where   rnf (Max as) = rnf as@@ -1321,3 +1423,4 @@ instance NFData a => NFData (Elim' a) where   rnf (Apply x) = rnf x   rnf Proj{}    = ()+  rnf (IApply x y r) = rnf x `seq` rnf y `seq` rnf r
src/full/Agda/Syntax/Internal/Defs.hs view
@@ -67,6 +67,7 @@     Level l    -> getDefs l     MetaV x vs -> getDefs x >> getDefs vs     DontCare v -> getDefs v+    Dummy{}    -> return ()  instance GetDefs MetaId where   getDefs x = doMeta x@@ -77,12 +78,14 @@ instance GetDefs Sort where   getDefs s = case s of     Type l    -> getDefs l-    Prop      -> return ()+    Prop l    -> getDefs l     Inf       -> return ()     SizeUniv  -> return ()     PiSort s s' -> getDefs s >> getDefs s'     UnivSort s  -> getDefs s     MetaS x es  -> getDefs x >> getDefs es+    DefS d es   -> doDef d >> getDefs es+    DummyS{}    -> return ()  instance GetDefs Level where   getDefs (Max ls) = getDefs ls
src/full/Agda/Syntax/Internal/Generic.hs view
@@ -65,6 +65,7 @@ instance TermLike a => TermLike (Maybe a)   where instance TermLike a => TermLike (Abs a)     where instance TermLike a => TermLike (Blocked a) where+instance TermLike a => TermLike (Tele a)    where  -- Tuples @@ -93,8 +94,9 @@     MetaV m xs  -> f =<< MetaV m <$> traverseTermM f xs     Level l     -> f =<< Level <$> traverseTermM f l     Lit _       -> f t-    Sort _      -> f t+    Sort s      -> f =<< Sort <$> traverseTermM f s     DontCare mv -> f =<< DontCare <$> traverseTermM f mv+    Dummy{}     -> f t    foldTerm f t = f t `mappend` case t of     Var i xs    -> foldTerm f xs@@ -105,8 +107,9 @@     MetaV m xs  -> foldTerm f xs     Level l     -> foldTerm f l     Lit _       -> mempty-    Sort _      -> mempty+    Sort s      -> foldTerm f s     DontCare mv -> foldTerm f mv+    Dummy{}     -> mempty  instance TermLike Level where   traverseTermM f (Max as) = Max <$> traverseTermM f as@@ -134,6 +137,29 @@ instance TermLike Type where   traverseTermM f (El s t) = El s <$> traverseTermM f t   foldTerm f (El s t) = foldTerm f t++instance TermLike Sort where+  traverseTermM f s = case s of+    Type l     -> Type <$> traverseTermM f l+    Prop l     -> Prop <$> traverseTermM f l+    Inf        -> pure s+    SizeUniv   -> pure s+    PiSort a b -> PiSort   <$> traverseTermM f a <*> traverseTermM f b+    UnivSort a -> UnivSort <$> traverseTermM f a+    MetaS x es -> MetaS x  <$> traverseTermM f es+    DefS q es  -> DefS q   <$> traverseTermM f es+    DummyS{}   -> pure s++  foldTerm f s = case s of+    Type l     -> foldTerm f l+    Prop l     -> foldTerm f l+    Inf        -> mempty+    SizeUniv   -> mempty+    PiSort a b -> foldTerm f a <> foldTerm f b+    UnivSort a -> foldTerm f a+    MetaS _ es -> foldTerm f es+    DefS _ es  -> foldTerm f es+    DummyS{}   -> mempty  instance TermLike EqualityView where 
src/full/Agda/Syntax/Internal/Names.hs view
@@ -49,6 +49,9 @@ instance (NamesIn a, NamesIn b, NamesIn c) => NamesIn (a, b, c) where   namesIn (x, y, z) = namesIn (x, (y, z)) +instance NamesIn CompKit where+  namesIn (CompKit a b) = namesIn (a,b)+ -- Andreas, 2017-07-27 -- In the following clauses, the choice of fields is not obvious -- to the reader.  Please comment on the choices.@@ -63,12 +66,14 @@ instance NamesIn Defn where   namesIn def = case def of     Axiom -> Set.empty+    DataOrRecSig{} -> Set.empty+    GeneralizableVar{} -> Set.empty     -- Andreas 2017-07-27, Q: which names can be in @cc@ which are not already in @cl@?     Function    { funClauses = cl, funCompiled = cc }              -> namesIn (cl, cc)     Datatype    { dataClause = cl, dataCons = cs, dataSort = s }   -> namesIn (cl, cs, s)-    Record      { recClause = cl, recConHead = c, recFields = fs } -> namesIn (cl, c, fs)+    Record      { recClause = cl, recConHead = c, recFields = fs, recComp = comp } -> namesIn (cl, c, (fs, comp))       -- Don't need recTel since those will be reachable from the constructor-    Constructor { conSrcCon = c, conData = d }                     -> namesIn (c, d)+    Constructor { conSrcCon = c, conData = d, conComp = cn }       -> namesIn (c, d, cn)     Primitive   { primClauses = cl, primCompiled = cc }            -> namesIn (cl, cc)     AbstractDefn{} -> __IMPOSSIBLE__ @@ -93,7 +98,9 @@     LitP l        -> namesIn l     DotP _ v      -> namesIn v     ConP c _ args -> namesIn (c, args)+    DefP o q args -> namesIn (q, args)     ProjP _ f     -> namesIn f+    IApplyP _ t u _ -> namesIn (t, u)  instance NamesIn a => NamesIn (Type' a) where   namesIn (El s t) = namesIn (s, t)@@ -101,12 +108,14 @@ instance NamesIn Sort where   namesIn s = case s of     Type l   -> namesIn l-    Prop     -> Set.empty+    Prop l   -> namesIn l     Inf      -> Set.empty     SizeUniv -> Set.empty     PiSort a b -> namesIn (a, b)     UnivSort a -> namesIn a     MetaS _ es -> namesIn es+    DefS d es  -> namesIn (d, es)+    DummyS{}   -> Set.empty  instance NamesIn Term where   namesIn v = case v of@@ -120,6 +129,7 @@     Level l      -> namesIn l     MetaV _ args -> namesIn args     DontCare v   -> namesIn v+    Dummy{}      -> Set.empty  instance NamesIn Level where   namesIn (Max ls) = namesIn ls@@ -149,6 +159,7 @@ instance NamesIn a => NamesIn (Elim' a) where   namesIn (Apply arg) = namesIn arg   namesIn (Proj _ f)  = namesIn f+  namesIn (IApply x y arg) = namesIn (x, y, arg)  instance NamesIn QName   where namesIn x = Set.singleton x  -- interesting case instance NamesIn ConHead where namesIn h = namesIn (conName h)@@ -185,6 +196,7 @@     A.PatternSynP _ c args -> namesIn (c, args)     A.RecP _ fs            -> namesIn fs     A.DotP{}               -> __IMPOSSIBLE__    -- Dot patterns are not allowed in pattern synonyms+    A.EqualP{}             -> __IMPOSSIBLE__    -- Andrea: should we allow these in pattern synonyms?     A.WithP _ p            -> namesIn p  instance NamesIn AmbiguousQName where
src/full/Agda/Syntax/Internal/Pattern.hs view
@@ -91,9 +91,12 @@                          return $ VarP o (DBPatVar x i)       DotP o t     -> DotP o t <$ next       ConP c mt ps -> ConP c mt <$> labelPatVars ps+      DefP o q ps -> DefP o q <$> labelPatVars ps       LitP l       -> return $ LitP l       ProjP o q    -> return $ ProjP o q-    where next = do (x:xs) <- get; put xs; return x+      IApplyP o u t x -> do i <- next+                            return $ IApplyP o u t (DBPatVar x i)+    where next = caseListM get __IMPOSSIBLE__ $ \ x xs -> do put xs; return x   unlabelPatVars = fmap dbPatVarName  -- | Augment pattern variables with their de Bruijn index.@@ -140,10 +143,11 @@     getIndices :: DeBruijnPattern -> [Maybe Int]     getIndices (VarP _ x)    = [Just $ dbPatVarIndex x]     getIndices (ConP c _ ps) = concatMap (getIndices . namedThing . unArg) ps+    getIndices (DefP _ _ ps) = concatMap (getIndices . namedThing . unArg) ps     getIndices (DotP _ _)    = [Nothing | countDots]     getIndices (LitP _)      = []     getIndices ProjP{}       = []-+    getIndices (IApplyP _ _ _ x) = [Just $ dbPatVarIndex x]  -- | Computes the permutation from the clause telescope --   to the pattern variables.@@ -161,9 +165,12 @@ patternToElim (Arg ai (ConP c cpi ps)) = Apply $ Arg ai $ Con c ci $       map (patternToElim . fmap namedThing) ps   where ci = fromConPatternInfo cpi+patternToElim (Arg ai (DefP o q ps)) = Apply $ Arg ai $ Def q $+      map (patternToElim . fmap namedThing) ps patternToElim (Arg ai (DotP o t)   ) = Apply $ Arg ai t patternToElim (Arg ai (LitP l)     ) = Apply $ Arg ai $ Lit l patternToElim (Arg ai (ProjP o dest)) = Proj o dest+patternToElim (Arg ai (IApplyP o t u x)) = IApply t u $ var $ dbPatVarIndex x  patternsToElims :: [NamedArg DeBruijnPattern] -> [Elim] patternsToElims ps = map build ps@@ -175,6 +182,7 @@ patternToTerm p = case patternToElim (defaultArg p) of   Apply x -> unArg x   Proj{}  -> __IMPOSSIBLE__+  IApply _ _ x -> x   class MapNamedArgPattern a p where@@ -199,6 +207,8 @@       LitP  l     -> f np       ProjP o q   -> f np       ConP c i ps -> f $ setNamedArg np $ ConP c i $ mapNamedArgPattern f ps+      DefP o q ps -> f $ setNamedArg np $ DefP o q $ mapNamedArgPattern f ps+      IApplyP o u t x -> f np  instance MapNamedArgPattern a p => MapNamedArgPattern a [p] where @@ -262,19 +272,23 @@    foldrPattern f p = f p $ case p of     ConP _ _ ps -> foldrPattern f ps+    DefP _ _ ps -> foldrPattern f ps     VarP _ _    -> mempty     LitP _      -> mempty     DotP _ _    -> mempty     ProjP _ _   -> mempty+    IApplyP{}   -> mempty    traversePatternM pre post = pre >=> recurse >=> post     where     recurse p = case p of       ConP c ci ps -> ConP c ci <$> traversePatternM pre post ps+      DefP o q ps  -> DefP o q <$> traversePatternM pre post ps       VarP  _ _    -> return p       LitP  _      -> return p       DotP  _ _    -> return p       ProjP _ _    -> return p+      IApplyP{}    -> return p  -- Boilerplate instances: @@ -321,6 +335,7 @@  instance PatternVarModalities a x => PatternVarModalities (Elim' a) x where   patternVarModalities (Apply x) = patternVarModalities x -- Note: x :: Arg a+  patternVarModalities (IApply x y p) = patternVarModalities [x, y, p]   patternVarModalities Proj{}    = []  instance PatternVarModalities (Pattern' x) x where@@ -328,6 +343,8 @@     case p of       VarP _ x    -> [(x, defaultModality)]       ConP _ _ ps -> patternVarModalities ps+      DefP _ _ ps -> patternVarModalities ps       DotP{}      -> []       LitP{}      -> []       ProjP{}     -> []+      IApplyP _ _ _ x -> [(x, defaultModality)]
src/full/Agda/Syntax/Internal/SanityCheck.hs view
@@ -16,6 +16,7 @@ import Agda.TypeChecking.Monad import Agda.TypeChecking.Substitute +import Agda.Utils.List ( dropEnd ) import Agda.Utils.Pretty import Agda.Utils.Size import Agda.Utils.Impossible@@ -28,8 +29,8 @@     [] -> return ()     xs -> do       reportSDoc "impossible" 1 . return $-        sep [ hang (text "Sanity check failed for") 2-                   (hang (pretty tel <+> text "|-") 2 (pretty v))+        sep [ hang "Sanity check failed for" 2+                   (hang (pretty tel <+> "|-") 2 (pretty v))             , text $ "out of scope: " ++ show xs ]       __IMPOSSIBLE__   where@@ -42,35 +43,34 @@   where     go gamma rho delta =       case rho of-        IdS      -> unless (size gamma == size delta) $ err $ text "idS:" <+> hang (pretty gamma <+> text "/=") 2 (pretty delta)-        EmptyS _ -> unless (size delta == 0) $ err $ text "emptyS:" <+> pretty delta <+> text "is not empty"+        IdS      -> unless (size gamma == size delta) $ err $ "idS:" <+> hang (pretty gamma <+> "/=") 2 (pretty delta)+        EmptyS _ -> unless (size delta == 0) $ err $ "emptyS:" <+> pretty delta <+> "is not empty"         v :# rho -> do-          unless (size delta > 0) $ err $ text "consS: empty target"+          unless (size delta > 0) $ err $ "consS: empty target"           sanityCheckVars gamma v           sanityCheckSubst gamma rho (dropLast delta)         Strengthen _ rho -> do-          unless (size delta > 0) $ err $ text "strS: empty target"+          unless (size delta > 0) $ err $ "strS: empty target"           sanityCheckSubst gamma rho (dropLast delta)         Wk n rho -> do-          unless (size gamma >= n) $ err $ text "wkS:" <+> sep [ text "|" <> pretty gamma <> text "|"+          unless (size gamma >= n) $ err $ "wkS:" <+> sep [ "|" <> pretty gamma <> "|"                                                                , text $ "< " ++ show n ]           sanityCheckSubst (dropLastN n gamma) rho delta         Lift n rho -> do-          unless (size gamma >= n) $ err $ text "liftS: source" <+> sep [ text "|" <> pretty gamma <> text "|"+          unless (size gamma >= n) $ err $ "liftS: source" <+> sep [ "|" <> pretty gamma <> "|"                                                                         , text $ "< " ++ show n ]-          unless (size delta >= n) $ err $ text "liftS: target" <+> sep [ text "|" <> pretty delta <> text "|"+          unless (size delta >= n) $ err $ "liftS: target" <+> sep [ "|" <> pretty delta <> "|"                                                                         , text $ "< " ++ show n ]           sanityCheckSubst (dropLastN n gamma) rho (dropLastN n delta)      dropLast = telFromList . init . telToList-    dropLastN n = telFromList . reverse . drop n . reverse . telToList+    dropLastN n = telFromList . dropEnd n . telToList      err reason = do       reportSDoc "impossible" 1 . return $-        sep [ hang (text "Sanity check failed for") 2 $-              hang (pretty gamma <+> text "|-") 2 $-              hang (pretty rho <+> text ":") 2 $+        sep [ hang "Sanity check failed for" 2 $+              hang (pretty gamma <+> "|-") 2 $+              hang (pretty rho <+> ":") 2 $                     pretty delta             , reason ]       __IMPOSSIBLE__-
src/full/Agda/Syntax/Notation.hs view
@@ -34,10 +34,10 @@ -- | Data type constructed in the Happy parser; converted to 'GenPart' --   before it leaves the Happy code. data HoleName-  = LambdaHole { _bindHoleName :: RawName-               , holeName      :: RawName }+  = LambdaHole { _bindHoleName :: RString+               , holeName      :: RString }     -- ^ @\ x -> y@; 1st argument is the bound name (unused for now).-  | ExprHole   { holeName      :: RawName }+  | ExprHole   { holeName      :: RString }     -- ^ Simple named hole with hiding.  -- | Is the hole a binder?@@ -50,38 +50,72 @@  -- | Part of a Notation data GenPart-  = BindHole !Int+  = BindHole Range (Ranged Int)     -- ^ Argument is the position of the hole (with binding) where the binding should occur.-  | NormalHole (NamedArg Int)+    --   First range is the rhs range and second is the binder.+  | NormalHole Range (NamedArg (Ranged Int))     -- ^ Argument is where the expression should go.-  | WildHole !Int+  | WildHole (Ranged Int)     -- ^ An underscore in binding position.-  | IdPart RawName-  deriving (Data, Show, Eq, Ord)+  | IdPart RString+  deriving (Data, Show) +instance Eq GenPart where+  BindHole _ i   == BindHole _ j   = i == j+  NormalHole _ x == NormalHole _ y = x == y+  WildHole i     == WildHole j     = i == j+  IdPart x       == IdPart y       = x == y+  _              == _              = False++instance Ord GenPart where+  BindHole _ i   `compare` BindHole _ j   = i `compare` j+  NormalHole _ x `compare` NormalHole _ y = x `compare` y+  WildHole i     `compare` WildHole j     = i `compare` j+  IdPart x       `compare` IdPart y       = x `compare` y+  BindHole{}     `compare` _              = LT+  _              `compare` BindHole{}     = GT+  NormalHole{}   `compare` _              = LT+  _              `compare` NormalHole{}   = GT+  WildHole{}     `compare` _              = LT+  _              `compare` WildHole{}     = GT++instance HasRange GenPart where+  getRange p = case p of+    IdPart x       -> getRange x+    BindHole r _   -> r+    WildHole i     -> getRange i+    NormalHole r _ -> r++instance SetRange GenPart where+  setRange r p = case p of+    IdPart x       -> IdPart x+    BindHole _ i   -> BindHole r i+    WildHole i     -> WildHole i+    NormalHole _ i -> NormalHole r i+ instance KillRange GenPart where   killRange p = case p of-    IdPart x     -> IdPart x-    BindHole i   -> BindHole i-    WildHole i   -> WildHole i-    NormalHole x -> NormalHole $ killRange x+    IdPart x       -> IdPart $ killRange x+    BindHole _ i   -> BindHole noRange $ killRange i+    WildHole i     -> WildHole $ killRange i+    NormalHole _ x -> NormalHole noRange $ killRange x  instance NFData GenPart where-  rnf (BindHole _)   = ()-  rnf (NormalHole a) = rnf a-  rnf (WildHole _)   = ()-  rnf (IdPart a)     = rnf a+  rnf (BindHole _ a)   = rnf a+  rnf (NormalHole _ a) = rnf a+  rnf (WildHole a)     = rnf a+  rnf (IdPart a)       = rnf a  -- | Get a flat list of identifier parts of a notation.-stringParts :: Notation -> [RawName]-stringParts gs = [ x | IdPart x <- gs ]+stringParts :: Notation -> [String]+stringParts gs = [ rangedThing x | IdPart x <- gs ]  -- | Target argument position of a part (Nothing if it is not a hole). holeTarget :: GenPart -> Maybe Int-holeTarget (BindHole   n) = Just n-holeTarget (WildHole   n) = Just n-holeTarget (NormalHole n) = Just $ namedArg n-holeTarget IdPart{}       = Nothing+holeTarget (BindHole _   n) = Just $ rangedThing n+holeTarget (WildHole     n) = Just $ rangedThing n+holeTarget (NormalHole _ n) = Just $ rangedThing $ namedArg n+holeTarget IdPart{}         = Nothing  -- | Is the part a hole? WildHoles don't count since they don't correspond to --   anything the user writes.@@ -100,9 +134,9 @@  -- | Is the part a binder? isBindingHole :: GenPart -> Bool-isBindingHole (BindHole _) = True-isBindingHole (WildHole _) = True-isBindingHole _ = False+isBindingHole BindHole{} = True+isBindingHole WildHole{} = True+isBindingHole _          = False  -- | Classification of notations. @@ -139,34 +173,64 @@ --      , IdPart "return" , NormalHole 0 --      ] --   @-mkNotation :: [NamedArg HoleName] -> [RawName] -> Either String Notation+mkNotation :: [NamedArg HoleName] -> [RString] -> Either String Notation mkNotation _ [] = throwError "empty notation is disallowed" mkNotation holes ids = do   unless uniqueHoleNames     $ throwError "syntax must use unique argument names"   let xs :: Notation = map mkPart ids-  unless (isAlternating xs)  $ throwError "syntax must alternate holes and non-holes"+  unless (isAlternating xs)  $ throwError $ concat+     [ "syntax must alternate holes ("+     , prettyHoles+     , ") and non-holes ("+     , prettyNonHoles xs+     , ")"+     ]   unless (isExprLinear xs)   $ throwError "syntax must use holes exactly once"   unless (isLambdaLinear xs) $ throwError "syntax must use binding holes exactly once"+  -- Andreas, 2018-10-18, issue #3285:+  -- syntax that is just a single hole is ill-formed and crashes the operator parser+  when   (isSingleHole xs)   $ throwError "syntax cannot be a single hole"   return $ insertWildHoles xs     where-      mkPart ident = fromMaybe (IdPart ident) $ lookup ident holeMap+      holeNames :: [RString]+      holeNames = map namedArg holes >>= \case+        LambdaHole x y -> [x, y]+        ExprHole y     -> [y] +      prettyHoles :: String+      prettyHoles = List.unwords $ map (rawNameToString . rangedThing) holeNames++      nonHoleNames :: Notation -> [RString]+      nonHoleNames xs = flip mapMaybe xs $ \case+        WildHole{}   -> Just $ unranged "_"+        IdPart x     -> Just x+        BindHole{}   -> Nothing+        NormalHole{} -> Nothing++      prettyNonHoles :: Notation -> String+      prettyNonHoles = List.unwords . map (rawNameToString . rangedThing) . nonHoleNames++      mkPart ident = maybe (IdPart ident) (`withRangeOf` ident) $ lookup ident holeMap+       holeNumbers   = [0 .. length holes - 1]++      numberedHoles :: [(Int, NamedArg HoleName)]       numberedHoles = zip holeNumbers holes        -- The WildHoles don't correspond to anything in the right-hand side so       -- we add them next to their corresponding body. Slightly subtle: due to       -- the way the operator parsing works they can't be added first or last.+      insertWildHoles :: [GenPart] -> [GenPart]       insertWildHoles xs = foldr ins xs wilds         where           wilds = [ i | (_, WildHole i) <- holeMap ]-          ins w (NormalHole h : hs)-            | namedArg h == w = NormalHole h : WildHole w : hs+          ins w (NormalHole r h : hs)+            | namedArg h == w = NormalHole r h : WildHole w : hs           ins w (h : hs) = h : insBefore w hs           ins _ [] = __IMPOSSIBLE__ -          insBefore w (NormalHole h : hs)-            | namedArg h == w = WildHole w : NormalHole h : hs+          insBefore w (NormalHole r h : hs)+            | namedArg h == w = WildHole w : NormalHole r h : hs           insBefore w (h : hs) = h : insBefore w hs           insBefore _ [] = __IMPOSSIBLE__ @@ -174,27 +238,37 @@       -- A @LambdaHole@ contributes two entries:       -- both names are mapped to the same number,       -- but distinguished by BindHole vs. NormalHole.+      holeMap :: [(RString, GenPart)]       holeMap = do-        (i, h) <- numberedHoles-        let normalHole = NormalHole $ fmap (i <$) h+        (i, h) <- numberedHoles    -- v This range is filled in by mkPart+        let ri x = Ranged (getRange x) i+            normalHole y = NormalHole noRange $ fmap (ri y <$) h         case namedArg h of-          ExprHole y       -> [(y, normalHole)]-          LambdaHole "_" y -> [("_", WildHole i), (y, normalHole)]-          LambdaHole x y   -> [(x, BindHole i), (y, normalHole)]+          ExprHole y       -> [(y, normalHole y)]+          LambdaHole x y+            | "_" <- rangedThing x -> [(x, WildHole (ri x)),         (y, normalHole y)]+            | otherwise            -> [(x, BindHole noRange (ri x)), (y, normalHole y)]+                                                 -- Filled in by mkPart        -- Check whether all hole names are distinct.       -- The hole names are the keys of the @holeMap@.-      uniqueHoleNames = distinct [ x | (x, _) <- holeMap, x /= "_" ]+      uniqueHoleNames = distinct [ x | (x, _) <- holeMap, rangedThing x /= "_" ]        isExprLinear   xs = List.sort [ i | x <- xs, isNormalHole x, let Just i = holeTarget x ] == holeNumbers-      isLambdaLinear xs = List.sort [ x | BindHole x <- xs ] ==+      isLambdaLinear xs = List.sort [ rangedThing x | BindHole _ x <- xs ] ==                           [ i | (i, h) <- numberedHoles,-                                LambdaHole x _ <- [namedArg h], x /= "_" ]+                                LambdaHole x _ <- [namedArg h], rangedThing x /= "_" ]        isAlternating :: [GenPart] -> Bool       isAlternating []       = __IMPOSSIBLE__       isAlternating [x]      = True       isAlternating (x:y:xs) = isAHole x /= isAHole y && isAlternating (y:xs)++      isSingleHole :: [GenPart] -> Bool+      isSingleHole = \case+        [ IdPart{} ] -> False+        [ _hole ]    -> True+        _            -> False  noNotation :: Notation noNotation = []
src/full/Agda/Syntax/Parser.hs view
@@ -8,14 +8,17 @@       -- * Parse functions     , Agda.Syntax.Parser.parse     , Agda.Syntax.Parser.parsePosString-    , parseFile'+    , parseFile       -- * Parsers     , moduleParser     , moduleNameParser+    , acceptableFileExts     , exprParser     , exprWhereParser     , holeContentParser     , tokensParser+      -- * Reading files.+    , readFilePM       -- * Parse errors     , ParseError(..)     , ParseWarning(..)@@ -31,7 +34,10 @@ import Control.Monad.Writer hiding ((<>))  import qualified Data.List as List+import Data.Text.Lazy (Text)+import qualified Data.Text.Lazy as T +import Agda.Syntax.Common import Agda.Syntax.Position import Agda.Syntax.Parser.Monad as M hiding (Parser, parseFlags) import qualified Agda.Syntax.Parser.Monad as M@@ -99,12 +105,6 @@ parse :: Parser a -> String -> PM a parse p = wrapM . return . M.parse (parseFlags p) [normal] (parser p) -parseFile :: Parser a -> AbsolutePath -> PM a-parseFile p = wrapM . M.parseFile (parseFlags p) [layout, normal] (parser p)--parseString :: Parser a -> String -> PM a-parseString = parseStringFromFile Strict.Nothing- parseStringFromFile :: SrcFile -> Parser a -> String -> PM a parseStringFromFile src p = wrapM . return . M.parseFromSrc (parseFlags p) [layout, normal] (parser p) src @@ -122,36 +122,58 @@   return$ concat [ case m of                        Left t -> [t]                        Right (Layer Comment interval s) -> [TokTeX (interval, s)]-                       Right (Layer Markup _ _) -> []+                       Right (Layer Markup interval s) -> [TokMarkup (interval, s)]                        Right (Layer Code _ _) -> []                    | m <- terms ] -readFilePM :: AbsolutePath -> PM String-readFilePM path = wrapIOM (ReadFileError path) (readTextFile (filePath path))+-- | Returns the contents of the given file. -parseLiterateFile :: Processor -> Parser a -> AbsolutePath -> PM a-parseLiterateFile po p path = readFilePM path >>= parseLiterate p p . po (startPos (Just path))+readFilePM :: AbsolutePath -> PM Text+readFilePM path = wrapIOM (ReadFileError path) (readTextFile $ filePath path) +parseLiterateFile+  :: Processor+  -> Parser a+  -> AbsolutePath+     -- ^ The path to the file.+  -> String+     -- ^ The file contents. Note that the file is /not/ read from+     -- disk.+  -> PM a+parseLiterateFile po p path = parseLiterate p p . po (startPos (Just path))+ parsePosString :: Parser a -> Position -> String -> PM a parsePosString p pos = wrapM . return . M.parsePosString pos (parseFlags p) [normal] (parser p) --- | Extensions supported by `parseFile'`-parseFileExts :: [String]-parseFileExts = ".agda":literateExts+-- | Extensions supported by `parseFile`. -parseFile' :: (Show a) => Parser a -> AbsolutePath -> PM a-parseFile' p file =+acceptableFileExts :: [String]+acceptableFileExts = ".agda" : (fst <$> literateProcessors)++parseFile+  :: Show a+  => Parser a+  -> AbsolutePath+     -- ^ The path to the file.+  -> String+     -- ^ The file contents. Note that the file is /not/ read from+     -- disk.+  -> PM (a, FileType)+parseFile p file input =   if ".agda" `List.isSuffixOf` filePath file then-    Agda.Syntax.Parser.parseFile p file+    (, AgdaFileType) <$> Agda.Syntax.Parser.parseStringFromFile+                         (Strict.Just file) p input   else     go literateProcessors   where-    go [] = throwError InvalidExtensionError {-                     errPath = file-                   , errValidExts = parseFileExts+    go [] = throwError InvalidExtensionError+                   { errPath = file+                   , errValidExts = acceptableFileExts                    }-    go ((ext, po):pos) | ext `List.isSuffixOf` filePath file = parseLiterateFile po p file-    go (_:pos) = go pos+    go ((ext, (po, ft)) : pos)+      | ext `List.isSuffixOf` filePath file =+          (, ft) <$> parseLiterateFile po p file input+      | otherwise = go pos  ------------------------------------------------------------------------ -- Specific parsers
src/full/Agda/Syntax/Parser/Alex.hs view
@@ -17,6 +17,7 @@     where  import Control.Monad.State+import Data.Char import Data.Word  import Agda.Syntax.Position@@ -43,9 +44,10 @@ alexInputPrevChar :: AlexInput -> Char alexInputPrevChar = lexPrevChar --- | Lex a character. No surprises.+-- | Returns the next character, and updates the 'AlexInput' value. ----- This function is used by Alex 2.+-- This function is not suitable for use by Alex 2, because it can+-- return non-ASCII characters. alexGetChar :: AlexInput -> Maybe (Char, AlexInput) alexGetChar     (AlexInput { lexInput = []              }) = Nothing alexGetChar inp@(AlexInput { lexInput = c:s, lexPos = p }) =@@ -57,14 +59,33 @@                  }          ) --- | A variant of 'alexGetChar'.+-- | Returns the next byte, and updates the 'AlexInput' value. ----- This function is used by Alex 3.+-- A trick is used to handle the fact that there are more than 256+-- Unicode code points. The function translates characters to bytes in+-- the following way:+--+-- * Whitespace characters other than \'\\t\' and \'\\n\' are+--   translated to \' \'.+-- * Non-ASCII alphabetical characters are translated to \'z\'.+-- * Other non-ASCII printable characters are translated to \'+\'.+-- * Everything else is translated to \'\\1\'.+--+-- Note that it is important that there are no keywords containing+-- \'z\', \'+\', \' \' or \'\\1\'.+--+-- This function is used by Alex (version 3).+ alexGetByte :: AlexInput -> Maybe (Word8, AlexInput) alexGetByte ai =-  -- Note that we ensure that every character presented to Alex fits-  -- in seven bits.-  mapFst (fromIntegral . fromEnum) <$> alexGetChar ai+  mapFst (fromIntegral . fromEnum . toASCII) <$> alexGetChar ai+  where+  toASCII c+    | isSpace c && c /= '\t' && c /= '\n' = ' '+    | isAscii c                           = c+    | isPrint c                           = if isAlpha c then 'z'+                                                         else '+'+    | otherwise                           = '\1'  {--------------------------------------------------------------------------     Monad operations
src/full/Agda/Syntax/Parser/LexActions.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-}  {-| This module contains the building blocks used to construct the lexer. -}@@ -31,20 +32,32 @@ import Agda.Utils.List import Agda.Utils.Tuple +#include "undefined.h"+import Agda.Utils.Impossible+ {--------------------------------------------------------------------------     Scan functions  --------------------------------------------------------------------------}  -- | Called at the end of a file. Returns 'TokEOF'. returnEOF :: AlexInput -> Parser Token-returnEOF inp =-    do  setLastPos $ lexPos inp-        setPrevToken "<EOF>"-        return TokEOF+returnEOF AlexInput{ lexSrcFile, lexPos } = do+  -- Andreas, 2018-12-30, issue #3480+  -- The following setLastPos leads to parse error reporting+  -- far away from the interesting position, in particular+  -- if there is a long comment before the EOF.+  -- (Such a long comment is frequent in interactive programming, as+  -- commenting out until the end of the file is a common habit.)+  -- -- setLastPos lexPos+  -- Without it, we get much more useful error locations.+  setPrevToken "<EOF>"+  return $ TokEOF $ posToInterval lexSrcFile lexPos lexPos  -- | Set the current input and lex a new token (calls 'lexToken'). skipTo :: AlexInput -> Parser Token-skipTo inp = setLexInput inp >> lexToken+skipTo inp = do+  setLexInput inp+  lexToken  {-| Scan the input to find the next token. Calls 'Agda.Syntax.Parser.Lexer.alexScanUser'. This is the main lexing function@@ -54,12 +67,12 @@ lexToken :: Parser Token lexToken =     do  inp <- getLexInput-        lss@(ls:_) <- getLexState+        lss <- getLexState         flags <- getParseFlags-        case alexScanUser (lss, flags) (foolAlex inp) ls of+        case alexScanUser (lss, flags) inp (headWithDefault __IMPOSSIBLE__ lss) of             AlexEOF                     -> returnEOF inp-            AlexSkip inp' len           -> skipTo (newInput inp inp' len)-            AlexToken inp' len action   -> fmap postToken $ action inp (newInput inp inp' len) len+            AlexSkip inp' len           -> skipTo inp'+            AlexToken inp' len action   -> fmap postToken $ action inp inp' len             AlexError i                 -> parseError $ concat               [ "Lexical error"               , case headMaybe $ lexInput i of@@ -69,6 +82,12 @@               , ":"               ] +isSub :: Char -> Bool+isSub c = '\x2080' <= c && c <= '\x2089'++readSubscript :: [Char] -> Integer+readSubscript = read . map (\c -> toEnum (fromEnum c - 0x2080 + fromEnum '0'))+ postToken :: Token -> Token postToken (TokId (r, "\x03bb")) = TokSymbol SymLambda r postToken (TokId (r, "\x2026")) = TokSymbol SymEllipsis r@@ -82,37 +101,11 @@   | set == "Set" && all isSub n = TokSetN (r, readSubscript n)   where     (set, n)      = splitAt 3 s-    isSub c       = '\x2080' <= c && c <= '\x2089'-    readSubscript = read . map (\c -> toEnum (fromEnum c - 0x2080 + fromEnum '0'))+postToken (TokId (r, s))+  | prop == "Prop" && all isSub n = TokPropN (r, readSubscript n)+  where+    (prop, n)     = splitAt 4 s postToken t = t---- | Use the input string from the previous input (with the appropriate---   number of characters dropped) instead of the fake input string that---   was given to Alex (with unicode characters removed).-newInput :: PreviousInput -> CurrentInput -> TokenLength -> CurrentInput-newInput inp inp' len =-    case drop (len - 1) (lexInput inp) of-        c:s'    -> inp' { lexInput    = s'-                        , lexPrevChar = c-                        }-        []      -> inp' { lexInput = [] }   -- we do get empty tokens moving between states---- | Alex 2 can't handle unicode characters. To solve this we---   translate all Unicode (non-ASCII) identifiers to @z@, all Unicode---   operator characters to @+@, and all whitespace characters (except---   for @\t@ and @\n@) to ' '.---   Further, non-printable Unicode characters are translated to an---   arbitrary, harmless ASCII non-printable character, @'\1'@.------   It is important that there aren't any keywords containing @z@, @+@ or @ @.--foolAlex :: AlexInput -> AlexInput-foolAlex = over lensLexInput $ map $ \ c ->-  case c of-    _ | isSpace c && not (c `elem` "\t\n") -> ' '-    _ | isAscii c                          -> c-    _ | isPrint c                          -> if isAlpha c then 'z' else '+'-    _ | otherwise                          -> '\1'  {--------------------------------------------------------------------------     Lex actions
src/full/Agda/Syntax/Parser/Lexer.x view
@@ -44,7 +44,6 @@ $idstart     = [ $digit $alpha $op ] $idchar      = [ $idstart ' \\ ] $nonalpha    = $idchar # $alpha-$nonalphanum = $nonalpha # $digit $white_notab = $white # \t $white_nonl  = $white_notab # \n @@ -75,20 +74,10 @@ <pragma_,fpragma_> "#-}"               { endWith $ symbol SymClosePragma } <pragma_>   "BUILTIN"                  { keyword KwBUILTIN } <pragma_>   "CATCHALL"                 { keyword KwCATCHALL }-<pragma_>   "COMPILED"                 { keyword KwCOMPILED }-<pragma_>   "COMPILED_DATA"            { keyword KwCOMPILED_DATA }-<pragma_>   "COMPILED_DATA_UHC"        { keyword KwCOMPILED_DATA_UHC }-<pragma_>   "COMPILED_EXPORT"          { keyword KwCOMPILED_EXPORT }-<pragma_>   "COMPILED_JS"              { keyword KwCOMPILED_JS }-<pragma_>   "COMPILED_TYPE"            { keyword KwCOMPILED_TYPE }-<pragma_>   "COMPILED_UHC"             { keyword KwCOMPILED_UHC } <pragma_>   "COMPILE"                  { endWith $ beginWith fpragma $ keyword KwCOMPILE } <pragma_>   "FOREIGN"                  { endWith $ beginWith fpragma $ keyword KwFOREIGN } <pragma_>   "DISPLAY"                  { keyword KwDISPLAY } <pragma_>   "ETA"                      { keyword KwETA }-<pragma_>   "HASKELL"                  { endWith $ beginWith fpragma $ keyword KwHASKELL }-<pragma_>   "IMPORT"                   { keyword KwIMPORT }-<pragma_>   "IMPORT_UHC"               { keyword KwIMPORT_UHC } <pragma_>   "IMPOSSIBLE"               { keyword KwIMPOSSIBLE } <pragma_>   "INJECTIVE"                { keyword KwINJECTIVE } <pragma_>   "INLINE"                   { keyword KwINLINE }@@ -97,6 +86,7 @@ <pragma_>   "MEASURE"                  { keyword KwMEASURE } <pragma_>   "NO_POSITIVITY_CHECK"      { keyword KwNO_POSITIVITY_CHECK } <pragma_>   "NO_TERMINATION_CHECK"     { keyword KwNO_TERMINATION_CHECK }+<pragma_>   "NO_UNIVERSE_CHECK"        { keyword KwNO_UNIVERSE_CHECK } <pragma_>   "NON_TERMINATING"          { keyword KwNON_TERMINATING } <pragma_>   "OPTIONS"                  { keyword KwOPTIONS } <pragma_>   "POLARITY"                 { keyword KwPOLARITY }@@ -176,8 +166,10 @@ <0,code> overlap        { keyword KwOverlap } <0,code> macro          { keyword KwMacro } <0,code> Set            { keyword KwSet }+<0,code> Prop           { keyword KwProp } <0,code> forall         { keyword KwForall } <0,code> Set @number    { withInterval' (read . drop 3) TokSetN }+<0,code> Prop @number   { withInterval' (read . drop 4) TokPropN } <0,code> quoteGoal      { keyword KwQuoteGoal } <0,code> quoteContext   { keyword KwQuoteContext } <0,code> quote          { keyword KwQuote }@@ -188,6 +180,7 @@ <0,code> tactic         { keyword KwTactic } <0,code> syntax         { keyword KwSyntax } <0,code> pattern        { keyword KwPatternSyn }+<0,code> variable       { keyword KwVariable }  -- The parser is responsible to put the lexer in the imp_dir_ state when it -- expects an import directive keyword. This means that if you run the
src/full/Agda/Syntax/Parser/Literate.hs view
@@ -1,58 +1,67 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE ViewPatterns #-}--- | Preprocessors for literate code formats-module Agda.Syntax.Parser.Literate (-   literateProcessors-  ,literateExts-  ,literateExtsShortList-  ,literateSrcFile-  ,literateTeX-  ,literateRsT-  ,literateMd-  ,illiterate-  ,atomizeLayers-  ,Processor-  ,Layers-  ,Layer(..)-  ,LayerRole(..)-  ,isCode-  ,isCodeLayer++-- | Preprocessors for literate code formats.++module Agda.Syntax.Parser.Literate+  ( literateProcessors+  , literateExtsShortList+  , literateSrcFile+  , literateTeX+  , literateRsT+  , literateMd+  , literateOrg+  , illiterate+  , atomizeLayers+  , Processor+  , Layers+  , Layer(..)+  , LayerRole(..)+  , isCode+  , isCodeLayer   )   where  import Prelude hiding (getLine) import Data.Char (isSpace, isControl) import Data.List (isPrefixOf)+import Agda.Syntax.Common import Agda.Syntax.Position import Text.Regex.TDFA  #include "undefined.h" import Agda.Utils.Impossible --- | Role of a character in the file+-- | Role of a character in the file.+ data LayerRole = Markup | Comment | Code-                deriving (Show, Eq)+  deriving (Show, Eq) --- | A sequence of characters in a file playing the same role-data Layer = Layer {-  layerRole    :: LayerRole- ,interval     :: Interval- ,layerContent :: String-} deriving (Show)+-- | A sequence of characters in a file playing the same role. --- | A list of contiguous layers+data Layer = Layer+  { layerRole    :: LayerRole+  , interval     :: Interval+  , layerContent :: String+  } deriving Show++-- | A list of contiguous layers.+ type Layers = [Layer]  instance HasRange Layer where   getRange = getRange . interval  -- | Annotates a tokenized string with position information.+ mkLayers :: Position -> [(LayerRole, String)] -> Layers-mkLayers pos [] = emptyLiterate pos--- Ignore empty layers-mkLayers pos ((_,""):xs) = mkLayers pos xs-mkLayers pos ((ty,s):xs) = let next = movePosByString pos s in-                           (Layer ty (Interval pos next) s):(mkLayers next xs)+mkLayers pos []            = emptyLiterate pos+mkLayers pos ((_,"") : xs) = mkLayers pos xs+                             -- Empty layers are ignored.+mkLayers pos ((ty,s) : xs) =+  Layer ty (Interval pos next) s : mkLayers next xs+  where+  next = movePosByString pos s  unMkLayers :: Layers -> [(LayerRole, String)] unMkLayers = map ((,) <$> layerRole <*> layerContent)@@ -68,32 +77,38 @@ --   prop> f pos s /= [] -- --   prop> f pos s >>= layerContent == s+ type Processor = Position -> String -> [Layer]  literateSrcFile :: [Layer] -> SrcFile-literateSrcFile [] = __IMPOSSIBLE__-literateSrcFile (Layer{interval}:_) = getIntervalFile interval+literateSrcFile []                    = __IMPOSSIBLE__+literateSrcFile (Layer{interval} : _) = getIntervalFile interval --- | List of valid extensions for literate Agda files, and their corresponding---   preprocessors.+-- | List of valid extensions for literate Agda files, and their+--   corresponding preprocessors. -----   If you add new extensions, remember to update test/Utils.hs so that test---   cases ending in the new extensions are found.-literateProcessors :: [(String, Processor)]-literateProcessors = map ((,) <$> (".lagda" ++) . fst <*> snd)-                 [(""    , literateTeX)-                 ,(".rst", literateRsT)-                 ,(".tex", literateTeX)-                 ,(".md", literateMd)-                 ]+--   If you add new extensions, remember to update test/Utils.hs so+--   that test cases ending in the new extensions are found. --- | Returns `True` if a role corresponds to Agda code+literateProcessors :: [(String, (Processor, FileType))]+literateProcessors =+  ((,) <$> (".lagda" ++) . fst <*> snd) <$>+    [ (""    , (literateTeX, TexFileType))+    , (".rst", (literateRsT, RstFileType))+    , (".tex", (literateTeX, TexFileType))+    , (".md",  (literateMd,  MdFileType ))+    , (".org", (literateOrg, OrgFileType))+    ]++-- | Returns @True@ if the role corresponds to Agda code.+ isCode :: LayerRole -> Bool isCode Code    = True isCode Markup  = False isCode Comment = False --- | Returns `True` a layer contains Agda code+-- | Returns @True@ if the layer contains Agda code.+ isCodeLayer :: Layer -> Bool isCodeLayer = isCode . layerRole @@ -101,36 +116,38 @@ --   characters corresponding to code. This way, there is a direct --   correspondence between source positions and positions in the --   processed result.+ illiterate :: [Layer] -> String-illiterate xs = concat [-  (if isCode layerRole then id else bleach) layerContent-  | Layer{layerRole,layerContent} <- xs]+illiterate xs = concat+  [ (if isCode layerRole then id else bleach) layerContent+  | Layer{layerRole, layerContent} <- xs+  ]  -- | Replaces non-space characters in a string with spaces.+ bleach :: String -> String bleach s = map go s   where-    go c | isSpace c = c-    go _             = ' '+  go c | isSpace c = c+  go _             = ' '  -- | Check if a character is a blank character.+ isBlank :: Char -> Bool isBlank = (&&) <$> isSpace <*> not . (== '\n') --- | Possible extensions for a literate Agda file-literateExts :: [String]-literateExts = map fst literateProcessors---- | Short list of extensions for literate Agda files+-- | Short list of extensions for literate Agda files. --   For display purposes.+ literateExtsShortList :: [String] literateExtsShortList = [".lagda"] --- | break a list just *after* an element satisfying the predicate is found+-- | Breaks a list just /after/ an element satisfying the predicate is+--   found. -- --   >>> break1 even [1,3,5,2,4,7,8] --   ([1,3,5,2],[4,7,8])---+ break1 :: (a -> Bool) -> [a] -> ([a],[a]) break1 _ []           =  ([], []) break1 p (x:xs) | p x = (x:[],xs)@@ -138,87 +155,100 @@  -- | Returns a tuple consisting of the first line of the input, and the rest --   of the input.+ getLine :: String -> (String, String) getLine = break1 (== '\n') --- | Canonical decomposition of an empty literate file+-- | Canonical decomposition of an empty literate file.+ emptyLiterate :: Position -> [Layer]-emptyLiterate pos = [Layer (Markup) (Interval pos pos) ""]+emptyLiterate pos = [Layer Markup (Interval pos pos) ""]  -- | Create a regular expression that: --   - Must match the whole string --   - Works across line boundaries+ rex :: String -> Regex-rex s = makeRegexOpts blankCompOpt{newSyntax = True} blankExecOpt$ "\\`" ++ s ++ "\\'"+rex s =+  makeRegexOpts blankCompOpt{newSyntax = True} blankExecOpt $+    "\\`" ++ s ++ "\\'" --- | Preprocessor for literate TeX+-- | Preprocessor for literate TeX.+ literateTeX :: Position -> String -> [Layer]-literateTeX pos s = mkLayers pos$ tex s+literateTeX pos s = mkLayers pos (tex s)   where   tex :: String -> [(LayerRole, String)]   tex [] = []-  tex s  = let (line, rest) = getLine s in+  tex s  =+    let (line, rest) = getLine s in     case r_begin `matchM` line of       Just (getAllTextSubmatches -> [_, pre, _, markup, whitespace]) ->-        (Comment, pre):(Markup, markup):(Code, whitespace):code rest-      Just _                 -> __IMPOSSIBLE__-      Nothing                -> (Comment, line):tex rest+        (Comment, pre) : (Markup, markup) :+        (Code, whitespace) : code rest+      Just _  -> __IMPOSSIBLE__+      Nothing -> (Comment, line):tex rest    r_begin = rex "(([^\\%]|\\\\.)*)(\\\\begin\\{code\\}[^\n]*)(\n)?" -   code :: String -> [(LayerRole, String)]   code [] = []-  code s = let (line, rest) = getLine s in+  code s  =+    let (line, rest) = getLine s in     case r_end `matchM` line of       Just (getAllTextSubmatches -> [_, code, markup, post]) ->-        (Code,code):(Markup, markup):(Comment, post):tex rest-      Just _ -> __IMPOSSIBLE__-      Nothing             -> (Code, line):code rest+        (Code, code) : (Markup, markup) : (Comment, post) : tex rest+      Just _  -> __IMPOSSIBLE__+      Nothing -> (Code, line) : code rest -  r_end   = rex "([[:blank:]]*)(\\\\end\\{code\\})(.*)"+  r_end = rex "([[:blank:]]*)(\\\\end\\{code\\})(.*)" --- | Preprocessor for Markdown+-- | Preprocessor for Markdown.+ literateMd :: Position -> String -> [Layer] literateMd pos s = mkLayers pos$ md s   where   md :: String -> [(LayerRole, String)]   md [] = []-  md s  = let (line, rest) = getLine s in+  md s  =+    let (line, rest) = getLine s in     case md_begin `matchM` line of       Just (getAllTextSubmatches -> [_, pre, markup, _]) ->-        (Comment, pre):(Markup, markup):code rest-      Just _                 -> __IMPOSSIBLE__-      Nothing                ->-        (Comment, line):-          if md_begin_other `match` line-            then code_other rest-            else md rest+        (Comment, pre) : (Markup, markup) : code rest+      Just _  -> __IMPOSSIBLE__+      Nothing ->+        (Comment, line) :+        if md_begin_other `match` line+        then code_other rest+        else md rest -  md_begin = rex "(.*)([[:space:]]*```(agda)?[[:space:]]*)"+  md_begin       = rex "(.*)([[:space:]]*```(agda)?[[:space:]]*)"   md_begin_other = rex "[[:space:]]*```[a-zA-Z0-9-]*[[:space:]]*"    code :: String -> [(LayerRole, String)]   code [] = []-  code s = let (line, rest) = getLine s in+  code s  =+    let (line, rest) = getLine s in     case md_end `matchM` line of       Just (getAllTextSubmatches -> [_, markup]) ->-        (Markup, markup):md rest-      Just _ -> __IMPOSSIBLE__-      Nothing             -> (Code, line):code rest+        (Markup, markup) : md rest+      Just _  -> __IMPOSSIBLE__+      Nothing -> (Code, line) : code rest    -- A non-Agda code block.   code_other :: String -> [(LayerRole, String)]   code_other [] = []-  code_other s = let (line, rest) = getLine s in-    (Comment, line):-      if md_end `match` line-        then md rest-        else code_other rest+  code_other s  =+    let (line, rest) = getLine s in+    (Comment, line) :+    if md_end `match` line+    then md rest+    else code_other rest -  md_end   = rex "([[:space:]]*```[[:space:]]*)"+  md_end = rex "([[:space:]]*```[[:space:]]*)" --- | Preprocessor for reStructuredText+-- | Preprocessor for reStructuredText.+ literateRsT :: Position -> String -> [Layer] literateRsT pos s = mkLayers pos$ rst s   where@@ -230,46 +260,80 @@     if r_comment `match` line then       not_code     else case r_code `match` line of-      []      -> not_code+      []                         -> not_code       [[_, before, "::", after]] ->         -- Code starts-          if null before || isBlank (last before) then-             (Markup,  line):code rest-          else-             (Comment, before ++ ":"):(Markup, ':':after):code rest-+        if null before || isBlank (last before) then+          (Markup, line) : code rest+        else+          (Comment, before ++ ":") : (Markup, ":" ++ after) : code rest       _ -> __IMPOSSIBLE__     where-      (line, rest) = getLine s-      not_code = (Comment, line):rst rest-+    (line, rest) = getLine s+    not_code     = (Comment, line) : rst rest -  -- | Finds the next indented block in the input+  -- Finds the next indented block in the input.   code :: String -> [(LayerRole, String)]   code [] = []-  code s = let (line, rest) = getLine s in+  code s  =+    let (line, rest) = getLine s in     if all isSpace line then-      (Markup, line):(code rest)+      (Markup, line) : code rest     else-      let (xs,ys) = span isBlank line in-      case xs of-        [] -> maybe_code s-        _  -> (Code, line):-              (indented xs rest)+      let xs = takeWhile isBlank line in+      if null xs+      then maybe_code s+      else (Code, line) : indented xs rest -  -- | Process an indented block+  -- Process an indented block.   indented :: String -> String -> [(LayerRole, String)]   indented _   [] = []-  indented ind s  = let (line, rest) = getLine s in-      if all isSpace line then-        (Code, line):(indented ind rest)-      else if ind `isPrefixOf` line then-        (Code, line):(indented ind rest)-      else-        maybe_code s+  indented ind s  =+    let (line, rest) = getLine s in+    if all isSpace line then+      (Code, line) : indented ind rest+    else if ind `isPrefixOf` line then+      (Code, line) : indented ind rest+    else+      maybe_code s -  -- | Beginning of a code block+  -- Beginning of a code block.   r_code = rex "(.*)(::)([[:space:]]*)" -  -- | Beginning of a comment block+  -- Beginning of a comment block.   r_comment = rex "[[:space:]]*\\.\\.([[:space:]].*)?"++-- | Preprocessor for Org mode documents.++literateOrg :: Position -> String -> [Layer]+literateOrg pos s = mkLayers pos$ org s+  where+  org :: String -> [(LayerRole, String)]+  org [] = []+  org s  =+    let (line, rest) = getLine s in+    if org_begin `match` line then+      (Markup, line) : code rest+    else+      (Comment, line) : org rest++  -- Valid: #+begin_src agda2 :tangle yes+  -- Valid: #+begin_src agda2+  -- Invalid: #+begin_src adga2-foo+  org_begin = rex' "\\`(.*)([[:space:]]*\\#\\+begin_src agda2[[:space:]]+)"++  code :: String -> [(LayerRole, String)]+  code [] = []+  code s  =+    let (line, rest) = getLine s in+    if org_end `match` line then+      (Markup, line) : org rest+    else+      (Code, line) : code rest++  org_end = rex' "\\`([[:space:]]*\\#\\+end_src[[:space:]]*)(.*)"++  -- Explicit type annotation required to disambiguate source.+  rex' :: String -> Regex+  -- Source blocks start with `#+begin_src` but the casing does not matter.+  rex' = makeRegexOpts blankCompOpt{newSyntax = True, caseSensitive = False} blankExecOpt
src/full/Agda/Syntax/Parser/LookAhead.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-| When lexing by hands (for instance string literals) we need to do some+{-| When lexing by hand (for instance string literals) we need to do some     looking ahead. The 'LookAhead' monad keeps track of the position we are     currently looking at, and provides facilities to synchronise the look-ahead     position with the actual position of the 'Parser' monad (see 'sync' and@@ -11,6 +11,7 @@       LookAhead     , runLookAhead       -- * Operations+    , lookAheadError     , getInput, setInput, liftP     , nextChar, eatNextChar     , sync, rollback@@ -35,21 +36,14 @@     LookAhead { unLookAhead :: ReaderT ErrorFunction                                        (StateT AlexInput Parser) a               }-    deriving (Functor, Applicative)+    deriving (Functor, Applicative, Monad)  newtype ErrorFunction =     ErrorFun { throwError :: forall a. String -> LookAhead a } -{---------------------------------------------------------------------------    Monad instances- --------------------------------------------------------------------------}--instance Monad LookAhead where-    return  = pure-    m >>= k = LookAhead $ unLookAhead m >>= unLookAhead . k-    fail s  =-        do  err <- LookAhead ask-            throwError err s+-- | Throw an error message according to the supplied method.+lookAheadError :: String -> LookAhead a+lookAheadError s = ($ s) =<< do LookAhead $ asks throwError  {--------------------------------------------------------------------------     Operations@@ -75,7 +69,7 @@ nextChar =     do  inp <- getInput         case alexGetChar inp of-            Nothing         -> fail "unexpected end of file"+            Nothing         -> lookAheadError "unexpected end of file"             Just (c,inp')   ->                 do  setInput inp'                     return c
src/full/Agda/Syntax/Parser/Monad.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE DeriveDataTypeable    #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}  module Agda.Syntax.Parser.Monad     ( -- * The parser monad@@ -14,7 +15,6 @@     , initState     , defaultParseFlags     , parse-    , parseFile     , parsePosString     , parseFromSrc       -- * Manipulating the state@@ -27,7 +27,7 @@     , pushCurrentContext       -- ** Errors     , parseWarningName-    , parseError, parseErrorAt, parseError'+    , parseError, parseErrorAt, parseError', parseErrorRange     , lexError     )     where@@ -36,12 +36,14 @@ import Prelude hiding ((<>)) #endif -import Control.Exception (catch)+import Control.Exception (catch, displayException) import Data.Int  import Data.Data (Data)+import qualified Data.Text.Lazy as T  import Control.Monad.State+import Control.Monad.Except  import Agda.Interaction.Options.Warnings @@ -49,6 +51,7 @@  import Agda.Utils.Except ( MonadError(catchError, throwError) ) import Agda.Utils.FileName+import Agda.Utils.List ( tailWithDefault ) import qualified Agda.Utils.IO.UTF8 as UTF8 import qualified Agda.Utils.Maybe.Strict as Strict @@ -61,10 +64,9 @@     The parse monad  --------------------------------------------------------------------------} --- | The parse monad. Equivalent to @StateT 'ParseState' (Either 'ParseError')@---   except for the definition of @fail@, which builds a suitable 'ParseError'---   object.-newtype Parser a = P { unP :: ParseState -> ParseResult a }+-- | The parse monad.+newtype Parser a = P { runP :: StateT ParseState (Either ParseError) a }+  deriving (Functor, Applicative, Monad, MonadState ParseState, MonadError ParseError)  -- | The parser state. Contains everything the parser and the lexer could ever --   need.@@ -78,12 +80,12 @@     , parseLayout   :: [LayoutContext]       -- ^ the stack of layout contexts     , parseLexState :: [LexState]            -- ^ the state of the lexer                                              --   (states can be nested so we need a stack)-    , parseFlags    :: ParseFlags            -- ^ currently there are no flags+    , parseFlags    :: ParseFlags            -- ^ parametrization of the parser     }     deriving Show -{-| To do context sensitive lexing alex provides what is called /start codes/-    in the Alex documentation. It is really an integer representing the state+{-| For context sensitive lexing alex provides what is called /start codes/+    in the Alex documentation.  It is really an integer representing the state     of the lexer, so we call it @LexState@ instead. -} type LexState = Int@@ -95,54 +97,58 @@                     | Layout Int32    -- ^ layout at specified column     deriving Show --- | There aren't any parser flags at the moment.+-- | Parser flags. data ParseFlags = ParseFlags   { parseKeepComments :: Bool     -- ^ Should comment tokens be returned by the lexer?   }   deriving Show --- | What you get if parsing fails.-data ParseError =+-- | Parse errors: what you get if parsing fails.+data ParseError+   -- | Errors that arise at a specific position in the file-  ParseError-  { errSrcFile   :: !SrcFile-                    -- ^ The file in which the error occurred.-  , errPos       :: !PositionWithoutFile-                    -- ^ Where the error occurred.-  , errInput     :: String-                    -- ^ The remaining input.-  , errPrevToken :: String-                    -- ^ The previous token.-  , errMsg       :: String-                    -- ^ Hopefully an explanation of what happened.-  } |+  = ParseError+    { errSrcFile   :: !SrcFile+                      -- ^ The file in which the error occurred.+    , errPos       :: !PositionWithoutFile+                      -- ^ Where the error occurred.+    , errInput     :: String+                      -- ^ The remaining input.+    , errPrevToken :: String+                      -- ^ The previous token.+    , errMsg       :: String+                      -- ^ Hopefully an explanation of what happened.+    }+   -- | Parse errors that concern a range in a file.-  OverlappingTokensError-  { errRange     :: !(Range' SrcFile)-                    -- ^ The range of the bigger overlapping token-  } |+  | OverlappingTokensError+    { errRange     :: !(Range' SrcFile)+                      -- ^ The range of the bigger overlapping token+    }+   -- | Parse errors that concern a whole file.-  InvalidExtensionError-  { errPath      :: !AbsolutePath-                    -- ^ The file which the error concerns.-  , errValidExts :: [String]-  } |-  ReadFileError-  { errPath      :: !AbsolutePath-  , errIOError   :: IOError-  }+  | InvalidExtensionError+    { errPath      :: !AbsolutePath+                      -- ^ The file which the error concerns.+    , errValidExts :: [String]+    }+  | ReadFileError+    { errPath      :: !AbsolutePath+    , errIOError   :: IOError+    } --- | Warnings for parsing-data ParseWarning =+-- | Warnings for parsing.+data ParseWarning   -- | Parse errors that concern a range in a file.-  OverlappingTokensWarning-  { warnRange    :: !(Range' SrcFile)-                    -- ^ The range of the bigger overlapping token-  } deriving Data+  = OverlappingTokensWarning+    { warnRange    :: !(Range' SrcFile)+                      -- ^ The range of the bigger overlapping token+    }+  deriving Data  parseWarningName :: ParseWarning -> WarningName-parseWarningName pw = case pw of+parseWarningName = \case   OverlappingTokensWarning{} -> OverlappingTokensWarning_  -- | The result of parsing something.@@ -151,43 +157,28 @@   | ParseFailed ParseError   deriving Show +-- | Old interface to parser.+unP :: Parser a -> ParseState -> ParseResult a+unP (P m) s = case runStateT m s of+  Left err     -> ParseFailed err+  Right (a, s) -> ParseOk s a++-- | Throw a parse error at the current position.+parseError :: String -> Parser a+parseError msg = do+  s <- get+  throwError $ ParseError+    { errSrcFile   = parseSrcFile s+    , errPos       = parseLastPos s+    , errInput     = parseInp s+    , errPrevToken = parsePrevToken s+    , errMsg       = msg+    }+ {--------------------------------------------------------------------------     Instances  --------------------------------------------------------------------------} -instance Monad Parser where-  return = pure--  P m >>= f = P $ \s -> case m s of-                          ParseFailed e -> ParseFailed e-                          ParseOk s' x  -> unP (f x) s'--  fail msg = P $ \s -> ParseFailed $-                         ParseError  { errSrcFile   = parseSrcFile s-                                     , errPos       = parseLastPos s-                                     , errInput     = parseInp s-                                     , errPrevToken = parsePrevToken s-                                     , errMsg       = msg-                                     }--instance Functor Parser where-  fmap = liftM--instance Applicative Parser where-  pure x = P $ \s -> ParseOk s x-  (<*>)  = ap--instance MonadError ParseError Parser where-  throwError e = P $ \_ -> ParseFailed e--  P m `catchError` h = P $ \s -> case m s of-                                   ParseFailed err -> unP (h err) s-                                   m'              -> m'--instance MonadState ParseState Parser where-  get   = P $ \s -> ParseOk s s-  put s = P $ \_ -> ParseOk s ()- instance Show ParseError where   show = prettyShow @@ -200,27 +191,27 @@       ]   pretty OverlappingTokensError{errRange} = vcat       [ pretty errRange <> colon <+>-        text "Multi-line comment spans one or more literate text blocks."+        "Multi-line comment spans one or more literate text blocks."       ]   pretty InvalidExtensionError{errPath,errValidExts} = vcat       [ pretty errPath <> colon <+>-        text "Unsupported extension."-      , text "Supported extensions are:" <+> prettyList_ errValidExts+        "Unsupported extension."+      , "Supported extensions are:" <+> prettyList_ errValidExts       ]   pretty ReadFileError{errPath,errIOError} = vcat-      [ text "Cannot read file" <+> pretty errPath-        -- TODO: `show` should be replaced by `displayException` once we-        -- cease to support versions of GHC under 7.10.-      , text "Error:" <+> text (show errIOError)+      [ "Cannot read file" <+> pretty errPath+      , "Error:" <+> text (displayException errIOError)       ]  instance HasRange ParseError where-  getRange ParseError{errSrcFile,errPos=p} = posToRange' errSrcFile p p-  getRange OverlappingTokensError{errRange} = errRange-  getRange InvalidExtensionError{errPath} = posToRange p p-    where p = startPos (Just errPath)-  getRange ReadFileError{errPath} = posToRange p p-    where p = startPos (Just errPath)+  getRange err = case err of+      ParseError{ errSrcFile, errPos = p } -> posToRange' errSrcFile p p+      OverlappingTokensError{ errRange }   -> errRange+      InvalidExtensionError{}              -> errPathRange+      ReadFileError{}                      -> errPathRange+    where+    errPathRange = posToRange p p+      where p = startPos $ Just $ errPath err  instance Show ParseWarning where   show = prettyShow@@ -228,7 +219,7 @@ instance Pretty ParseWarning where   pretty OverlappingTokensWarning{warnRange} = vcat       [ pretty warnRange <> colon <+>-        text "Multi-line comment spans one or more literate text blocks."+        "Multi-line comment spans one or more literate text blocks."       ] instance HasRange ParseWarning where   getRange OverlappingTokensWarning{warnRange} = warnRange@@ -274,21 +265,6 @@                   ParseResult a parsePosString pos flags st p input = unP p (initStatePos pos flags input st) --- | The most general way of parsing a file. The "Agda.Syntax.Parser" will define---   more specialised functions that supply the 'ParseFlags' and the---   'LexState'.------   Note that Agda source files always use the UTF-8 character---   encoding.-parseFile :: ParseFlags -> [LexState] -> Parser a -> AbsolutePath-          -> IO (ParseResult a)-parseFile flags st p file =-    do  res <- (Right <$> (UTF8.readTextFile (filePath file))) `catch`-          (return . Left . ReadFileError file)-        case res of-          Left  error -> return$ ParseFailed error-          Right input -> return$ parseFromSrc flags st p (Strict.Just file) input- -- | Parses a string as if it were the contents of the given file --   Useful for integrating preprocessors. parseFromSrc :: ParseFlags -> [LexState] -> Parser a -> SrcFile -> String@@ -310,7 +286,7 @@ setPrevToken t = modify $ \s -> s { parsePrevToken = t }  getLastPos :: Parser PositionWithoutFile-getLastPos = get >>= return . parseLastPos+getLastPos = gets parseLastPos  -- | The parse interval is between the last position and the current position. getParseInterval :: Parser Interval@@ -322,25 +298,19 @@ getLexState = parseLexState <$> get  setLexState :: [LexState] -> Parser ()-setLexState ls =-    do  s <- get-        put $ s { parseLexState = ls }+setLexState ls = modify $ \ s -> s { parseLexState = ls } +modifyLexState :: ([LexState] -> [LexState]) -> Parser ()+modifyLexState f = modify $ \ s -> s { parseLexState = f (parseLexState s) }+ pushLexState :: LexState -> Parser ()-pushLexState l = do s <- getLexState-                    setLexState (l:s)+pushLexState l = modifyLexState (l:)  popLexState :: Parser ()-popLexState = do _:ls <- getLexState-                 setLexState ls+popLexState = modifyLexState $ tailWithDefault __IMPOSSIBLE__  getParseFlags :: Parser ParseFlags-getParseFlags = parseFlags <$> get----- | @parseError = fail@-parseError :: String -> Parser a-parseError = fail+getParseFlags = gets parseFlags   -- | Fake a parse error at the specified position. Used, for instance, when@@ -356,14 +326,18 @@ parseError' :: Maybe PositionWithoutFile -> String -> Parser a parseError' = maybe parseError parseErrorAt +-- | Report a parse error at the beginning of the given 'Range'.+parseErrorRange :: HasRange r => r -> String -> Parser a+parseErrorRange = parseError' . rStart' . getRange + -- | For lexical errors we want to report the current position as the site of --   the error, whereas for parse errors the previous position is the one --   we're interested in (since this will be the position of the token we just --   lexed). This function does 'parseErrorAt' the current position. lexError :: String -> Parser a lexError msg =-    do  p <- parsePos <$> get+    do  p <- gets parsePos         parseErrorAt p msg  {--------------------------------------------------------------------------@@ -371,12 +345,10 @@  --------------------------------------------------------------------------}  getContext :: Parser [LayoutContext]-getContext = parseLayout <$> get+getContext = gets parseLayout  setContext :: [LayoutContext] -> Parser ()-setContext ctx =-    do  s <- get-        put $ s { parseLayout = ctx }+setContext ctx = modify $ \ s -> s { parseLayout = ctx }  -- | Return the current layout context. topContext :: Parser LayoutContext
src/full/Agda/Syntax/Parser/Parser.y view
@@ -1,5 +1,6 @@ {-{-# LANGUAGE TupleSections #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE PatternGuards #-}  {-| The parser is generated by Happy (<http://www.haskell.org/happy>).  -@@ -40,6 +41,7 @@ import Agda.Syntax.Parser.Lexer import Agda.Syntax.Parser.Tokens import Agda.Syntax.Concrete as C+import Agda.Syntax.Concrete.Attribute import Agda.Syntax.Concrete.Pattern import Agda.Syntax.Concrete.Pretty () import Agda.Syntax.Common@@ -57,6 +59,7 @@ import Agda.Utils.Pretty import Agda.Utils.Singleton import Agda.Utils.Tuple+import qualified Agda.Utils.Maybe.Strict as Strict  import Agda.Utils.Impossible #include "undefined.h"@@ -73,20 +76,23 @@  %tokentype { Token } %monad { Parser }-%lexer { lexer } { TokEOF }+%lexer { lexer } { TokEOF{} } -%expect 6+%expect 9 -- * shift/reduce for \ x y z -> foo = bar --   shifting means it'll parse as \ x y z -> (foo = bar) rather than --   (\ x y z -> foo) = bar -- -- * Telescope let and do-notation let. --      Expr2 -> 'let' Declarations . LetBody---      TypedBindings -> '(' 'let' Declarations . ')'+--      TypedBinding -> '(' 'let' Declarations . ')' --        ')'   shift, and enter state 486 --              (reduce using rule 189)---   A do-block cannot end in a 'let' so committing to TypedBindings with a+--   A do-block cannot end in a 'let' so committing to TypedBinding with a --   shift is the right thing to do here.+--+-- * Named implicits in TypedBinding {x = y}. When encountering the '=' shift+--   treats this as a named implicit and reducing would fail later.  -- This is a trick to get rid of shift/reduce conflicts arising because we want -- to parse things like "m >>= \x -> k x". See the Expr rule for more@@ -103,6 +109,7 @@     'eta-equality'            { TokKeyword KwEta $$ }     'field'                   { TokKeyword KwField $$ }     'forall'                  { TokKeyword KwForall $$ }+    'variable'                { TokKeyword KwVariable $$ }     'hiding'                  { TokKeyword KwHiding $$ }     'import'                  { TokKeyword KwImport $$ }     'in'                      { TokKeyword KwIn $$ }@@ -145,18 +152,8 @@      'BUILTIN'                 { TokKeyword KwBUILTIN $$ }     'CATCHALL'                { TokKeyword KwCATCHALL $$ }-    'COMPILED'                { TokKeyword KwCOMPILED $$ }-    'COMPILED_DATA'           { TokKeyword KwCOMPILED_DATA $$ }-    'COMPILED_DATA_UHC'       { TokKeyword KwCOMPILED_DATA_UHC $$ }-    'COMPILED_EXPORT'         { TokKeyword KwCOMPILED_EXPORT $$ }-    'COMPILED_JS'             { TokKeyword KwCOMPILED_JS $$ }-    'COMPILED_TYPE'           { TokKeyword KwCOMPILED_TYPE $$ }-    'COMPILED_UHC'            { TokKeyword KwCOMPILED_UHC $$ }     'DISPLAY'                 { TokKeyword KwDISPLAY $$ }     'ETA'                     { TokKeyword KwETA $$ }-    'HASKELL'                 { TokKeyword KwHASKELL $$ }-    'IMPORT'                  { TokKeyword KwIMPORT $$ }-    'IMPORT_UHC'              { TokKeyword KwIMPORT_UHC $$ }     'FOREIGN'                 { TokKeyword KwFOREIGN $$ }     'COMPILE'                 { TokKeyword KwCOMPILE $$ }     'IMPOSSIBLE'              { TokKeyword KwIMPOSSIBLE $$ }@@ -166,6 +163,7 @@     'MEASURE'                 { TokKeyword KwMEASURE $$ }     'NO_TERMINATION_CHECK'    { TokKeyword KwNO_TERMINATION_CHECK $$ }     'NO_POSITIVITY_CHECK'     { TokKeyword KwNO_POSITIVITY_CHECK $$ }+    'NO_UNIVERSE_CHECK'       { TokKeyword KwNO_UNIVERSE_CHECK $$ }     'NON_TERMINATING'         { TokKeyword KwNON_TERMINATING $$ }     'OPTIONS'                 { TokKeyword KwOPTIONS $$ }     'POLARITY'                { TokKeyword KwPOLARITY $$ }@@ -175,6 +173,7 @@     'TERMINATING'             { TokKeyword KwTERMINATING $$ }      setN                      { TokSetN $$ }+    propN                     { TokPropN $$ }     tex                       { TokTeX $$ }     comment                   { TokComment $$ } @@ -238,6 +237,7 @@     | 'eta-equality'            { TokKeyword KwEta $1 }     | 'field'                   { TokKeyword KwField $1 }     | 'forall'                  { TokKeyword KwForall $1 }+    | 'variable'                { TokKeyword KwVariable $1 }     | 'hiding'                  { TokKeyword KwHiding $1 }     | 'import'                  { TokKeyword KwImport $1 }     | 'in'                      { TokKeyword KwIn $1 }@@ -280,18 +280,8 @@      | 'BUILTIN'                 { TokKeyword KwBUILTIN $1 }     | 'CATCHALL'                { TokKeyword KwCATCHALL $1 }-    | 'COMPILED'                { TokKeyword KwCOMPILED $1 }-    | 'COMPILED_DATA'           { TokKeyword KwCOMPILED_DATA $1 }-    | 'COMPILED_DATA_UHC'       { TokKeyword KwCOMPILED_DATA_UHC $1 }-    | 'COMPILED_EXPORT'         { TokKeyword KwCOMPILED_EXPORT $1 }-    | 'COMPILED_JS'             { TokKeyword KwCOMPILED_JS $1 }-    | 'COMPILED_TYPE'           { TokKeyword KwCOMPILED_TYPE $1 }-    | 'COMPILED_UHC'            { TokKeyword KwCOMPILED_UHC $1 }     | 'DISPLAY'                 { TokKeyword KwDISPLAY $1 }     | 'ETA'                     { TokKeyword KwETA $1 }-    | 'HASKELL'                 { TokKeyword KwHASKELL $1 }-    | 'IMPORT'                  { TokKeyword KwIMPORT $1 }-    | 'IMPORT_UHC'              { TokKeyword KwIMPORT_UHC $1 }     | 'FOREIGN'                 { TokKeyword KwFOREIGN $1 }     | 'COMPILE'                 { TokKeyword KwCOMPILE $1 }     | 'IMPOSSIBLE'              { TokKeyword KwIMPOSSIBLE $1 }@@ -301,6 +291,7 @@     | 'MEASURE'                 { TokKeyword KwMEASURE $1 }     | 'NO_TERMINATION_CHECK'    { TokKeyword KwNO_TERMINATION_CHECK $1 }     | 'NO_POSITIVITY_CHECK'     { TokKeyword KwNO_POSITIVITY_CHECK $1 }+    | 'NO_UNIVERSE_CHECK'       { TokKeyword KwNO_UNIVERSE_CHECK $1 }     | 'NON_TERMINATING'         { TokKeyword KwNON_TERMINATING $1 }     | 'OPTIONS'                 { TokKeyword KwOPTIONS $1 }     | 'POLARITY'                { TokKeyword KwPOLARITY $1 }@@ -310,6 +301,7 @@     | 'WARNING_ON_USAGE'        { TokKeyword KwWARNING_ON_USAGE $1 }      | setN                      { TokSetN $1 }+    | propN                     { TokPropN $1 }     | tex                       { TokTeX $1 }     | comment                   { TokComment $1 } @@ -398,7 +390,7 @@ Int :: { Integer } Int : literal   {% case $1 of {                      LitNat _ i -> return i;-                     _          -> fail $ "Expected integer"+                     _          -> parseError $ "Expected integer"                    }                 } @@ -430,8 +422,7 @@   | '}' '}' {%       if posPos (fromJust (rEnd' (getRange $2))) -          posPos (fromJust (rStart' (getRange $1))) > 2-      then parseErrorAt (fromJust (rStart' (getRange $2)))-         "Expecting '}}', found separated '}'s."+      then parseErrorRange $2 "Expecting '}}', found separated '}'s."       else return $ getRange ($1, $2)     } @@ -467,6 +458,26 @@     | '..' '{{' SpaceIds DoubleCloseBrace ArgIds  { map (makeInstance . setRelevance NonStrict . defaultArg) $3 ++ $5 }     | '..' '{{' SpaceIds DoubleCloseBrace         { map (makeInstance . setRelevance NonStrict . defaultArg) $3 } +-- Modalities preceeding identifiers++ModalArgIds :: { [Arg Name] }+ModalArgIds : Attributes ArgIds  {% mapM (applyAttrs $1) $2 }++-- Attributes are parsed as '@' followed by an atomic expression.++Attribute :: { Attr }+Attribute : '@' ExprOrAttr  {% setRange (getRange ($1,$2)) `fmap` toAttribute $2 }++-- Parse a reverse list of modalities++Attributes :: { [Attr] }+Attributes : {- empty -}  { [] }+  | Attributes Attribute { $2 : $1 }++Attributes1 :: { [Attr] }+Attributes1 : Attribute  { [$1] }+  | Attributes1 Attribute { $2 : $1 }+ QId :: { QName } QId : q_id  {% mkQName $1 }     | Id    { QName $1 }@@ -480,7 +491,7 @@ -- A binding variable. Can be '_' BId :: { Name } BId : Id    { $1 }-    | '_'   { Name (getRange $1) [Hole] }+    | '_'   { Name (getRange $1) InScope [Hole] }  {- UNUSED -- A binding variable. Can be '_'@@ -520,44 +531,31 @@ -- at point (x y  it is not clear whether x y is an application or -- a variable list. We could be parsing (x y z) -> B -- with ((x y) z) being a type.-CommaBIds :: { [Name] }-CommaBIds : CommaBIdAndAbsurds {+CommaBIds :: { [NamedArg BoundName] }+CommaBIds : CommaBIdAndAbsurds {%     case $1 of-      Left ns -> ns-      Right _ -> fail $ "expected sequence of bound identifiers, not absurd pattern"+      Left ns -> return ns+      Right _ -> parseError $ "expected sequence of bound identifiers, not absurd pattern"     } -CommaBIdAndAbsurds :: { Either [Name] [Expr] }-CommaBIdAndAbsurds : Application {%-    let getName :: Expr -> Maybe Name-        getName (Ident (QName x)) = Just x-        getName (Underscore r _)  = Just (Name r [Hole])-        getName _                 = Nothing--        isAbsurd :: Expr -> Bool-        isAbsurd (Absurd _)                  = True-        isAbsurd (HiddenArg _ (Named _ e))   = isAbsurd e-        isAbsurd (InstanceArg _ (Named _ e)) = isAbsurd e-        isAbsurd (Paren _ expr)              = isAbsurd expr-        isAbsurd (RawApp _ exprs)            = any isAbsurd exprs-        isAbsurd _                           = False-    in-    if any isAbsurd $1 then return $ Right $1 else-    case mapM getName $1 of-        Just good -> return $ Left good-        Nothing   -> fail $ "expected sequence of bound identifiers"-    }+CommaBIdAndAbsurds :: { Either [NamedArg BoundName] [Expr] }+CommaBIdAndAbsurds+  : Application {% boundNamesOrAbsurd $1 }+  | QId '=' QId {% fmap (Left . (:[])) $ mkNamedArg (Just $1) (Left $3) }+  | '_' '=' QId {% fmap (Left . (:[])) $ mkNamedArg Nothing   (Left $3) }+  | QId '=' '_' {% fmap (Left . (:[])) $ mkNamedArg (Just $1) (Right $ getRange $3) }+  | '_' '=' '_' {% fmap (Left . (:[])) $ mkNamedArg Nothing   (Right $ getRange $3) }  -- Parse a sequence of identifiers, including hiding info. -- Does not include instance arguments. -- E.g. x {y z} _ {v} -- To be used in typed bindings, like (x {y z} _ {v} : Nat).-BIdsWithHiding :: { [WithHiding Name] }+BIdsWithHiding :: { [NamedArg BoundName] } BIdsWithHiding : Application {%     let -- interpret an expression as name         getName :: Expr -> Maybe Name         getName (Ident (QName x)) = Just x-        getName (Underscore r _)  = Just (Name r [Hole])+        getName (Underscore r _)  = Just (Name r InScope [Hole])         getName _                 = Nothing          getNames :: Expr -> Maybe [Name]@@ -565,17 +563,17 @@         getNames e             = singleton `fmap` getName e          -- interpret an expression as name or list of hidden names-        getName1 :: Expr -> Maybe [WithHiding Name]-        getName1 (Ident (QName x)) = Just [WithHiding NotHidden x]-        getName1 (Underscore r _)  = Just [WithHiding NotHidden $ Name r [Hole]]+        getName1 :: Expr -> Maybe [Arg Name]+        getName1 (Ident (QName x)) = Just [defaultArg x]+        getName1 (Underscore r _)  = Just [defaultArg $ Name r InScope [Hole]]         getName1 (HiddenArg _ (Named Nothing e))-                                   = map (WithHiding Hidden) `fmap` getNames e+                                   = map (setHiding Hidden . defaultArg) `fmap` getNames e         getName1 _                 = Nothing      in     case mapM getName1 $1 of-        Just good -> return $ concat good-        Nothing   -> fail $ "expected sequence of possibly hidden bound identifiers"+        Just good -> return $ (map . fmap) (unnamed . mkBoundName_) $ concat good+        Nothing   -> parseError $ "expected sequence of possibly hidden bound identifiers"     }  @@ -634,8 +632,10 @@ Expr   : TeleArrow Expr                      { Pi $1 $2 }   | Application3 '->' Expr              { Fun (getRange ($1,$2,$3))-                                              (RawApp (getRange $1) $1)+                                              (defaultArg $ RawApp (getRange $1) $1)                                               $3 }+  | Attributes1 Application3 '->' Expr  {% applyAttrs $1 (defaultArg $ RawApp (getRange ($1,$2)) $2) <&> \ dom ->+                                             Fun (getRange ($1,$2,$3,$4)) dom $4 }   | Expr1 '=' Expr                      { Equal (getRange ($1, $2, $3)) $1 $3 }   | Expr1 %prec LOWEST                  { $1 } @@ -644,7 +644,7 @@ Expr1  : WithExprs {% case $1 of                       { [e]    -> return e                       ; e : es -> return $ WithApp (fuseRange e es) e es-                      ; []     -> fail "impossible: empty with expressions"+                      ; []     -> parseError "impossible: empty with expressions"                       }                    } @@ -711,9 +711,7 @@  Expr3NoCurly :: { Expr } Expr3NoCurly-    : QId                               { Ident $1 }-    | literal                           { Lit $1 }-    | '?'                               { QuestionMark (getRange $1) Nothing }+    : '?'                               { QuestionMark (getRange $1) Nothing }     | '_'                               { Underscore (getRange $1) Nothing }     | 'Prop'                            { Prop (getRange $1) }     | 'Set'                             { Set (getRange $1) }@@ -722,9 +720,8 @@     | 'quoteContext'                    { QuoteContext (getRange $1) }     | 'unquote'                         { Unquote (getRange $1) }     | setN                              { SetN (getRange (fst $1)) (snd $1) }-    | '{{' Expr DoubleCloseBrace                        { InstanceArg (getRange ($1,$2,$3))-                                                          (maybeNamed $2) }-    | '(' Expr ')'                      { Paren (getRange ($1,$2,$3)) $2 }+    | propN                             { PropN (getRange (fst $1)) (snd $1) }+    | '{{' Expr DoubleCloseBrace        { InstanceArg (getRange ($1,$2,$3)) (maybeNamed $2) }     | '(|' Expr '|)'                    { IdiomBrackets (getRange ($1,$2,$3)) $2 }     | '(' ')'                           { Absurd (fuseRange $1 $2) }     | '{{' DoubleCloseBrace             { let r = fuseRange $1 $2 in InstanceArg r $ unnamed $ Absurd r }@@ -733,7 +730,14 @@     | 'record' '{' RecordAssignments '}' { Rec (getRange ($1,$2,$3,$4)) $3 }     | 'record' Expr3NoCurly '{' FieldAssignments '}' { RecUpdate (getRange ($1,$2,$3,$4,$5)) $2 $4 }     | '...'                             { Ellipsis (getRange $1) }+    | ExprOrAttr                       { $1 } +ExprOrAttr :: { Expr }+ExprOrAttr+    : QId                               { Ident $1 }+    | literal                           { Lit $1 }+    | '(' Expr ')'                      { Paren (getRange ($1,$2,$3)) $2 }+ Expr3 :: { Expr } Expr3     : Expr3Curly                        { $1 }@@ -781,20 +785,19 @@ TeleArrow : Telescope1 '->' { $1 }  Telescope1 :: { Telescope }-Telescope1-    : TypedBindingss    { {-TeleBind-} $1 }+Telescope1 : TypedBindings { $1 } -TypedBindingss :: { [TypedBindings] }-TypedBindingss-    : TypedBindings TypedBindingss { $1 : $2 }-    | TypedBindings                { [$1] }+TypedBindings :: { [TypedBinding] }+TypedBindings+    : TypedBinding TypedBindings { $1 : $2 }+    | TypedBinding               { [$1] }   -- A typed binding is either (x1 .. xn : A) or   {y1 .. ym : B} -- Andreas, 2011-04-07: or  .(x1 .. xn : A) or  .{y1 .. ym : B} -- Andreas, 2011-04-27: or ..(x1 .. xn : A) or ..{y1 .. ym : B}-TypedBindings :: { TypedBindings }-TypedBindings+TypedBinding :: { TypedBinding }+TypedBinding     : '.' '(' TBindWithHiding ')'    { setRange (getRange ($2,$3,$4)) $                              setRelevance Irrelevant $3 }     | '.' '{' TBind '}'    { setRange (getRange ($2,$3,$4)) $@@ -814,37 +817,50 @@                              makeInstance $                              setRelevance NonStrict $3 }     | '(' TBindWithHiding ')'        { setRange (getRange ($1,$2,$3)) $2 }+    | '(' ModalTBindWithHiding ')'        { setRange (getRange ($1,$2,$3)) $2 }     | '{{' TBind DoubleCloseBrace                            { setRange (getRange ($1,$2,$3)) $                              makeInstance $2 }+    | '{{' ModalTBind DoubleCloseBrace+                           { setRange (getRange ($1,$2,$3)) $+                             makeInstance $2 }     | '{' TBind '}'        { setRange (getRange ($1,$2,$3)) $                              setHiding Hidden $2 }-    | '(' Open ')'               { tLet (getRange ($1,$3)) $2 }-    | '(' 'let' Declarations ')' { tLet (getRange ($1,$4)) $3 }+    | '{' ModalTBind '}'   { setRange (getRange ($1,$2,$3)) $+                             setHiding Hidden $2 }+    | '(' Open ')'               { TLet (getRange ($1,$3)) $2 }+    | '(' 'let' Declarations ')' { TLet (getRange ($1,$4)) $3 }   -- x1 .. xn : A -- x1 .. xn :{i1 i2 ..} A-TBind :: { TypedBindings }+TBind :: { TypedBinding } TBind : CommaBIds ':' Expr  {     let r = getRange ($1,$2,$3) -- the range is approximate only for TypedBindings-    in TypedBindings r $ defaultArg $ TBind r (map (pure . mkBoundName_) $1) $3+    in TBind r $1 $3   }--- | Colors are not yet allowed in the syntax.---      | CommaBIds ':{' Colors '}' Expr  { ( $3, TBind (getRange ($1,$2,$3,$4,$5)) (map mkBoundName_ $1) $5 ) }-{--Colors :: { [Color] }-Colors : QId Colors { Ident $1 : $2 }-       | QId        { [Ident $1] }--} +ModalTBind :: { TypedBinding }+ModalTBind : Attributes1 CommaBIds ':' Expr  {% do+    let r = getRange ($1,$2,$3,$4) -- the range is approximate only for TypedBindings+    xs <- mapM (applyAttrs $1) $2+    return $ TBind r xs $4+  }+ -- x {y z} _ {v} : A-TBindWithHiding :: { TypedBindings }+TBindWithHiding :: { TypedBinding } TBindWithHiding : BIdsWithHiding ':' Expr  {     let r = getRange ($1,$2,$3) -- the range is approximate only for TypedBindings-    in TypedBindings r $ defaultArg $ TBind r (map (fmap mkBoundName_) $1) $3+    in TBind r $1 $3   } +ModalTBindWithHiding :: { TypedBinding }+ModalTBindWithHiding : Attributes1 BIdsWithHiding ':' Expr  {% do+    let r = getRange ($1,$2,$3,$4) -- the range is approximate only for TypedBindings+    xs <- mapM (applyAttrs $1) $2+    return $ TBind r xs $4+  }+ -- A non-empty sequence of lambda bindings. LamBindings :: { [LamBinding] } LamBindings@@ -870,9 +886,9 @@ LamBinds :: { [Either Hiding LamBinding] } LamBinds   : DomainFreeBinding LamBinds  { map Right $1 ++ $2 }-  | TypedBindings LamBinds      { Right (DomainFull $1) : $2 }+  | TypedBinding LamBinds       { Right (DomainFull $1) : $2 }   | DomainFreeBinding           { map Right $1 }-  | TypedBindings               { [Right $ DomainFull $1] }+  | TypedBinding                { [Right $ DomainFull $1] }   | '(' ')'                     { [Left NotHidden] }   | '{' '}'                     { [Left Hidden] }   | '{{' DoubleCloseBrace       { [Left (Instance NoOverlap)] }@@ -881,11 +897,11 @@ LamBindsAbsurd :: { Either [Either Hiding LamBinding] [Expr] } LamBindsAbsurd   : DomainFreeBinding LamBinds  { Left $ map Right $1 ++ $2 }-  | TypedBindings LamBinds      { Left $ Right (DomainFull $1) : $2 }+  | TypedBinding LamBinds       { Left $ Right (DomainFull $1) : $2 }   | DomainFreeBindingAbsurd     { case $1 of                                     Left lb -> Left $ map Right lb                                     Right es -> Right es }-  | TypedBindings               { Left [Right $ DomainFull $1] }+  | TypedBinding                { Left [Right $ DomainFull $1] }   | '(' ')'                     { Left [Left NotHidden] }   | '{' '}'                     { Left [Left Hidden] }   | '{{' DoubleCloseBrace       { Left [Left (Instance NoOverlap)] }@@ -956,39 +972,50 @@ TypedUntypedBindings1 :: { [LamBinding] } TypedUntypedBindings1   : DomainFreeBinding TypedUntypedBindings1 { $1 ++ $2 }-  | TypedBindings TypedUntypedBindings1     { DomainFull $1 : $2 }+  | TypedBinding TypedUntypedBindings1      { DomainFull $1 : $2 }   | DomainFreeBinding                       { $1 }-  | TypedBindings                           { [DomainFull $1] }+  | TypedBinding                            { [DomainFull $1] }  -- A possibly empty sequence of possibly untyped bindings. -- This is used as telescope in data and record decls. TypedUntypedBindings :: { [LamBinding] } TypedUntypedBindings   : DomainFreeBinding TypedUntypedBindings { $1 ++ $2 }-  | TypedBindings TypedUntypedBindings     { DomainFull $1 : $2 }+  | TypedBinding TypedUntypedBindings      { DomainFull $1 : $2 }   |                                        { [] }  -- A domain free binding is either x or {x1 .. xn} DomainFreeBinding :: { [LamBinding] } DomainFreeBinding-  : DomainFreeBindingAbsurd { case $1 of-                             Left lbs -> lbs-                             Right _ -> fail "expected sequence of bound identifiers, not absurd pattern"+  : DomainFreeBindingAbsurd {% case $1 of+                             Left lbs -> return lbs+                             Right _ -> parseError "expected sequence of bound identifiers, not absurd pattern"                           }  -- A domain free binding is either x or {x1 .. xn} DomainFreeBindingAbsurd :: { Either [LamBinding] [Expr]} DomainFreeBindingAbsurd-    : BId               { Left [DomainFree defaultArgInfo $ mkBoundName_ $1]  }-    | '.' BId           { Left [DomainFree (setRelevance Irrelevant $ defaultArgInfo) $ mkBoundName_ $2]  }-    | '..' BId          { Left [DomainFree (setRelevance NonStrict $ defaultArgInfo) $ mkBoundName_ $2]  }+    : BId               { Left [DomainFree $ defaultNamedArg $ mkBoundName_ $1]  }+    | '.' BId           { Left [DomainFree $ setRelevance Irrelevant $ defaultNamedArg $ mkBoundName_ $2]  }+    | '..' BId          { Left [DomainFree $ setRelevance NonStrict $ defaultNamedArg $ mkBoundName_ $2]  }+    | '(' CommaBIdAndAbsurds ')'+         { mapLeft (map DomainFree) $2 }+    | '(' Attributes1 CommaBIdAndAbsurds ')'+         {% applyAttrs $2 defaultArgInfo <&> \ ai ->+              mapLeft (map (DomainFree . setArgInfo ai)) $3 }     | '{' CommaBIdAndAbsurds '}'-         { mapLeft (map (DomainFree (setHiding Hidden $ defaultArgInfo) . mkBoundName_)) $2 }-    | '{{' CommaBIds DoubleCloseBrace { Left $ map (DomainFree (makeInstance $ defaultArgInfo) . mkBoundName_) $2 }-    | '.' '{' CommaBIds '}' { Left $ map (DomainFree (setHiding Hidden $ setRelevance Irrelevant $ defaultArgInfo) . mkBoundName_) $3 }-    | '.' '{{' CommaBIds DoubleCloseBrace { Left $ map (DomainFree (makeInstance $ setRelevance Irrelevant $ defaultArgInfo) . mkBoundName_) $3 }-    | '..' '{' CommaBIds '}' { Left $ map (DomainFree (setHiding Hidden $ setRelevance NonStrict $ defaultArgInfo) . mkBoundName_) $3 }-    | '..' '{{' CommaBIds DoubleCloseBrace { Left $ map (DomainFree  (makeInstance $ setRelevance NonStrict $ defaultArgInfo) . mkBoundName_) $3 }+         { mapLeft (map (DomainFree . setHiding Hidden)) $2 }+    | '{' Attributes1 CommaBIdAndAbsurds '}'+         {% applyAttrs $2 defaultArgInfo <&> \ ai ->+              mapLeft (map (DomainFree . setHiding Hidden . setArgInfo ai)) $3 }+    | '{{' CommaBIds DoubleCloseBrace { Left $ map (DomainFree . makeInstance) $2 }+    | '{{' Attributes1 CommaBIds DoubleCloseBrace+         {% applyAttrs $2 defaultArgInfo <&> \ ai ->+              Left $ map (DomainFree . makeInstance . setArgInfo ai) $3 }+    | '.' '{' CommaBIds '}' { Left $ map (DomainFree . setHiding Hidden . setRelevance Irrelevant) $3 }+    | '.' '{{' CommaBIds DoubleCloseBrace { Left $ map (DomainFree . makeInstance . setRelevance Irrelevant) $3 }+    | '..' '{' CommaBIds '}' { Left $ map (DomainFree . setHiding Hidden . setRelevance NonStrict) $3 }+    | '..' '{{' CommaBIds DoubleCloseBrace { Left $ map (DomainFree . makeInstance . setRelevance NonStrict) $3 }   {--------------------------------------------------------------------------@@ -1121,12 +1148,13 @@ Declaration :: { [Declaration] } Declaration     : Fields        {  $1  }-    | FunClause     {  $1  }+    | FunClause     {  $1  }  -- includes type signatures     | Data          { [$1] }     | DataSig       { [$1] }  -- lone data type signature in mutual block     | Record        { [$1] }     | RecordSig     { [$1] }  -- lone record signature in mutual block     | Infix         { [$1] }+    | Generalize    {  $1  }     | Mutual        { [$1] }     | Abstract      { [$1] }     | Private       { [$1] }@@ -1151,22 +1179,21 @@ -- Type signatures of the form "n1 n2 n3 ... : Type", with at least -- one bound name. TypeSigs :: { [Declaration] }-TypeSigs : SpaceIds ':' Expr { map (\ x -> TypeSig defaultArgInfo x $3) $1 }+TypeSigs : SpaceIds ':' Expr { map (\ x -> typeSig defaultArgInfo x $3) $1 }  -- A variant of TypeSigs where any sub-sequence of names can be marked -- as hidden or irrelevant using braces and dots: -- {n1 .n2} n3 .n4 {n5} .{n6 n7} ... : Type. ArgTypeSigs :: { [Arg Declaration] } ArgTypeSigs-  : ArgIds ':' Expr { map (fmap (\ x -> TypeSig defaultArgInfo x $3)) $1 }-  | 'overlap' ArgIds ':' Expr {%+  : ModalArgIds ':' Expr { map (fmap (\ x -> typeSig defaultArgInfo x $3)) $1 }+  | 'overlap' ModalArgIds ':' Expr {%       let setOverlap x =             case getHiding x of               Instance _ -> return $ makeInstance' YesOverlap x-              _          ->-                parseErrorAt (fromJust $ rStart' $ getRange $1)+              _          -> parseErrorRange $1                              "The 'overlap' keyword only applies to instance fields (fields marked with {{ }})"-      in T.traverse (setOverlap . fmap (\ x -> TypeSig defaultArgInfo x $4)) $2 }+      in T.traverse (setOverlap . fmap (\ x -> typeSig defaultArgInfo x $4)) $2 }   | 'instance' ArgTypeSignatures {     let       setInstance (TypeSig info x t) = TypeSig (makeInstance info) x t@@ -1177,7 +1204,8 @@ -- declarations like 'x::xs ++ ys = e', when '::' has higher precedence than '++'. -- FunClause also handle possibly dotted type signatures. FunClause :: { [Declaration] }-FunClause : LHS RHS WhereClause {% funClauseOrTypeSigs $1 $2 $3 }+FunClause : LHS RHS WhereClause {% funClauseOrTypeSigs [] $1 $2 $3 }+  | Attributes1 LHS RHS WhereClause {% funClauseOrTypeSigs $1 $2 $3 $4 }  RHS :: { RHSOrTypeSigs } RHS : '=' Expr      { JustRHS (RHS $2) }@@ -1187,15 +1215,15 @@ -- Data declaration. Can be local. Data :: { Declaration } Data : 'data' Id TypedUntypedBindings ':' Expr 'where'-            Declarations0       { Data (getRange ($1,$2,$3,$4,$5,$6,$7)) Inductive $2 $3 (Just $5) $7 }+            Declarations0       { Data (getRange ($1,$2,$3,$4,$5,$6,$7)) Inductive $2 $3 $5 $7 }      | 'codata' Id TypedUntypedBindings ':' Expr 'where'-            Declarations0       { Data (getRange ($1,$2,$3,$4,$5,$6,$7)) CoInductive $2 $3 (Just $5) $7 }+            Declarations0       { Data (getRange ($1,$2,$3,$4,$5,$6,$7)) CoInductive $2 $3 $5 $7 }    -- New cases when we already had a DataSig.  Then one can omit the sort.      | 'data' Id TypedUntypedBindings 'where'-            Declarations0       { Data (getRange ($1,$2,$3,$4,$5)) Inductive $2 $3 Nothing $5 }+            Declarations0       { DataDef (getRange ($1,$2,$3,$4,$5)) Inductive $2 $3 $5 }      | 'codata' Id TypedUntypedBindings 'where'-            Declarations0       { Data (getRange ($1,$2,$3,$4,$5)) CoInductive $2 $3 Nothing $5 }+            Declarations0       { DataDef (getRange ($1,$2,$3,$4,$5)) CoInductive $2 $3 $5 }  -- Data type signature. Found in mutual blocks. DataSig :: { Declaration }@@ -1210,10 +1238,10 @@ Record :: { Declaration } Record : 'record' Expr3NoCurly TypedUntypedBindings ':' Expr 'where'             RecordDeclarations-         {% exprToName $2 >>= \ n -> let ((x,y,z),ds) = $7 in return $ Record (getRange ($1,$2,$3,$4,$5,$6,$7)) n x y z $3 (Just $5) ds }+         {% exprToName $2 >>= \ n -> let ((x,y,z),ds) = $7 in return $ Record (getRange ($1,$2,$3,$4,$5,$6,$7)) n x y z $3 $5 ds }        | 'record' Expr3NoCurly TypedUntypedBindings 'where'             RecordDeclarations-         {% exprToName $2 >>= \ n -> let ((x,y,z),ds) = $5 in return $ Record (getRange ($1,$2,$3,$4,$5)) n x y z $3 Nothing ds }+         {% exprToName $2 >>= \ n -> let ((x,y,z),ds) = $5 in return $ RecordDef (getRange ($1,$2,$3,$4,$5)) n x y z $3 ds }  -- Record type signature. In mutual blocks. RecordSig :: { Declaration }@@ -1240,7 +1268,21 @@                            _          -> NotInstanceDef                 toField (Arg info (TypeSig info' x t)) = Field (inst info') x (Arg info t)               in map toField $2 }+  -- | 'field' ModalArgTypeSignatures+  --           { let+  --               inst i = case getHiding i of+  --                          Instance _ -> InstanceDef+  --                          _          -> NotInstanceDef+  --               toField (Arg info (TypeSig info' x t)) = Field (inst info') x (Arg info t)+  --             in map toField $2 } +-- Variable declarations for automatic generalization+Generalize :: { [Declaration] }+Generalize : 'variable' ArgTypeSignaturesOrEmpty+            { let+                toGeneralize (Arg info (TypeSig _ x t)) = TypeSig info x t+              in [ Generalize (fuseRange $1 $2) (map toGeneralize $2) ] }+ -- Mutually recursive declarations. Mutual :: { Declaration } Mutual : 'mutual' Declarations0  { Mutual (fuseRange $1 $2) $2 }@@ -1272,7 +1314,7 @@  -- Primitives. Can only contain type signatures. Primitive :: { Declaration }-Primitive : 'primitive' TypeSignatures  { Primitive (fuseRange $1 $2) $2 }+Primitive : 'primitive' TypeSignatures0  { Primitive (fuseRange $1 $2) $2 }  -- Unquoting declarations. UnquoteDecl :: { Declaration }@@ -1285,7 +1327,7 @@ Syntax :: { Declaration } Syntax : 'syntax' Id HoleNames '=' SimpleIds  {%   case $2 of-    Name _ [_] -> case mkNotation $3 (map rangedThing $5) of+    Name _ _ [_] -> case mkNotation $3 $5 of       Left err -> parseError $ "Malformed syntax declaration: " ++ err       Right n -> return $ Syntax $2 n     _ -> parseError "Syntax declarations are allowed only for simple names (without holes)"@@ -1321,15 +1363,15 @@  SimpleTopHole :: { HoleName } SimpleTopHole-  : SimpleId { ExprHole (rangedThing $1) }-  | '(' '\\' SimpleId '->' SimpleId ')' { LambdaHole (rangedThing $3) (rangedThing $5) }-  | '(' '\\' '_'      '->' SimpleId ')' { LambdaHole "_" (rangedThing $5) }+  : SimpleId { ExprHole $1 }+  | '(' '\\' SimpleId '->' SimpleId ')' { LambdaHole $3 $5 }+  | '(' '\\' '_'      '->' SimpleId ')' { LambdaHole (Ranged (getRange $3) "_") $5 }  SimpleHole :: { HoleName } SimpleHole-  : SimpleId { ExprHole (rangedThing $1) }-  | '\\' SimpleId '->' SimpleId { LambdaHole (rangedThing $2) (rangedThing $4) }-  | '\\' '_'      '->' SimpleId { LambdaHole "_" (rangedThing $4) }+  : SimpleId { ExprHole $1 }+  | '\\' SimpleId '->' SimpleId { LambdaHole $2 $4 }+  | '\\' '_'      '->' SimpleId { LambdaHole (Ranged (getRange $3) "_") $4 } -- Variable name hole to be implemented later.  -- Discard the interval.@@ -1348,17 +1390,17 @@     ; m   = $3     ; es  = $4     ; dir = $5-    ; r   = getRange (m, es, dir)+    ; r   = getRange ($1, $2, m, es, dir)     ; mr  = getRange m-    ; unique = hashString $ show $ (Nothing :: Maybe ()) <$ r+    ; unique = hashString $ prettyShow $ (Strict.Nothing :: Strict.Maybe ()) <$ r          -- turn range into unique id, but delete file path          -- which is absolute and messes up suite of failing tests          -- (different hashs on different installations)          -- TODO: Don't use (insecure) hashes in this way.-    ; fresh = Name mr [ Id $ stringToRawName $ ".#" ++ show m ++ "-" ++ show unique ]-    ; impStm asR = Import mr m (Just (AsName fresh asR)) DontOpen defaultImportDir+    ; fresh  = Name mr NotInScope [ Id $ stringToRawName $ ".#" ++ prettyShow m ++ "-" ++ show unique ]+    ; fresh' = Name mr NotInScope [ Id $ stringToRawName $ ".#" ++ prettyShow m ++ "-" ++ show (unique + 1) ]+    ; impStm asR = Import r m (Just (AsName (Right fresh) asR)) DontOpen defaultImportDir     ; appStm m' es =-        let r = getRange (m, es) in         Private r Inserted           [ ModuleMacro r m'              (SectionApp (getRange es) []@@ -1367,24 +1409,30 @@           ]     ; (initArgs, last2Args) = splitAt (length es - 2) es     ; parseAsClause = case last2Args of-      { [ Ident (QName (Name asR [Id x]))-        , Ident (QName m')-        ] | rawNameToString x == "as" -> Just (asR, m')+      { [ Ident (QName (Name asR InScope [Id x]))+        , e+          -- Andreas, 2018-11-03, issue #3364, accept anything after 'as'+          -- but require it to be a 'Name' in the scope checker.+        ] | rawNameToString x == "as" -> Just . (asR,) $+          if | Ident (QName m') <- e -> Right m'+             | otherwise             -> Left e       ; _ -> Nothing       }     } in     case es of-      { [] -> return [Import mr m Nothing doOpen dir]+      { [] -> return [Import r m Nothing doOpen dir]       ; _ | Just (asR, m') <- parseAsClause ->               if null initArgs then return                  [ Import (getRange (m, asR, m', dir)) m                      (Just (AsName m' asR)) doOpen dir                  ]-              else return [ impStm asR, appStm m' initArgs ]+              else return [ impStm asR, appStm (fromRight (const fresh') m') initArgs ]           -- Andreas, 2017-05-13, issue #2579           -- Nisse reports that importing with instantation but without open           -- could be usefule for bringing instances into scope.-          -- -- | DontOpen <- doOpen -> parseErrorAt (fromJust $ rStart' $ getRange $2) "An import statement with module instantiation does not actually import the module.  This statement achieves nothing.  Either add the `open' keyword or bind the instantiated module with an `as' clause."+          -- Ulf, 2018-12-6: Not since fixes of #1913 and #2489 which require+          -- instances to be in scope.+          | DontOpen <- doOpen -> parseErrorRange $2 "An import statement with module instantiation is useless without either an `open' keyword or an `as` binding giving a name to the instantiated module."           | otherwise -> return               [ impStm noRange               , appStm (noName $ beginningOf $ getRange m) es@@ -1396,7 +1444,7 @@     { m   = $2     ; es  = $3     ; dir = $4-    ; r   = getRange (m, es, dir)+    ; r   = getRange ($1, m, es, dir)     } in     [ case es of       { []  -> Open r m dir@@ -1411,7 +1459,7 @@   | 'open' ModuleName '{{' '...' DoubleCloseBrace ImportDirective {     let r = getRange $2 in     [ Private r Inserted-      [ ModuleMacro r (noName $ beginningOf $ getRange $2) (RecordModuleIFS r $2) DoOpen $6+      [ ModuleMacro r (noName $ beginningOf $ getRange $2) (RecordModuleInstance r $2) DoOpen $6       ]     ]   }@@ -1420,9 +1468,9 @@ OpenArgs : {- empty -}    { [] }          | Expr3 OpenArgs { $1 : $2 } -ModuleApplication :: { [TypedBindings] -> Parser ModuleApplication }+ModuleApplication :: { Telescope -> Parser ModuleApplication } ModuleApplication : ModuleName '{{' '...' DoubleCloseBrace { (\ts ->-                    if null ts then return $ RecordModuleIFS (getRange ($1,$2,$3,$4)) $1+                    if null ts then return $ RecordModuleInstance (getRange ($1,$2,$3,$4)) $1                     else parseError "No bindings allowed for record module with non-canonical implicits" )                     }                   | ModuleName OpenArgs {@@ -1458,22 +1506,12 @@ DeclarationPragma   : BuiltinPragma            { $1 }   | RewritePragma            { $1 }-  | CompiledPragma           { $1 }-  | CompiledExportPragma     { $1 }-  | CompiledDataPragma       { $1 }-  | CompiledTypePragma       { $1 }-  | CompiledJSPragma         { $1 }-  | CompiledUHCPragma        { $1 }-  | CompiledDataUHCPragma    { $1 }-  | HaskellPragma            { $1 }   | CompilePragma            { $1 }   | ForeignPragma            { $1 }   | StaticPragma             { $1 }   | InjectivePragma          { $1 }   | InlinePragma             { $1 }   | NoInlinePragma           { $1 }-  | ImportPragma             { $1 }-  | ImportUHCPragma          { $1 }   | ImpossiblePragma         { $1 }   | TerminatingPragma        { $1 }   | NonTerminatingPragma     { $1 }@@ -1484,6 +1522,7 @@   | DisplayPragma            { $1 }   | EtaPragma                { $1 }   | NoPositivityCheckPragma  { $1 }+  | NoUniverseCheckPragma    { $1 }   | PolarityPragma           { $1 }   | OptionsPragma            { $1 }     -- Andreas, 2014-03-06@@ -1497,7 +1536,7 @@ BuiltinPragma     : '{-#' 'BUILTIN' string PragmaQName '#-}'       { BuiltinPragma (getRange ($1,$2,fst $3,$4,$5)) (snd $3) $4 }-    -- Extra rule to accept keword REWRITE also as built-in:+    -- Extra rule to accept keyword REWRITE also as built-in:     | '{-#' 'BUILTIN' 'REWRITE' PragmaQName '#-}'       { BuiltinPragma (getRange ($1,$2,$3,$4,$5)) "REWRITE" $4 } @@ -1506,45 +1545,6 @@     : '{-#' 'REWRITE' PragmaQNames '#-}'       { RewritePragma (getRange ($1,$2,$3,$4)) $3 } -CompiledPragma :: { Pragma }-CompiledPragma-  : '{-#' 'COMPILED' PragmaQName PragmaStrings '#-}'-    { CompiledPragma (getRange ($1,$2,$3,$5)) $3 (unwords $4) }--CompiledExportPragma :: { Pragma }-CompiledExportPragma-  : '{-#' 'COMPILED_EXPORT' PragmaQName PragmaString '#-}'-    { CompiledExportPragma (getRange ($1,$2,$3,$5)) $3 $4 }--CompiledTypePragma :: { Pragma }-CompiledTypePragma-  : '{-#' 'COMPILED_TYPE' PragmaQName PragmaStrings '#-}'-    { CompiledTypePragma (getRange ($1,$2,$3,$5)) $3 (unwords $4) }--CompiledDataPragma :: { Pragma }-CompiledDataPragma-  : '{-#' 'COMPILED_DATA' PragmaQName string PragmaStrings '#-}'-    { CompiledDataPragma (getRange ($1,$2,$3,fst $4,$6)) $3 (snd $4) $5 }--CompiledJSPragma :: { Pragma }-CompiledJSPragma-  : '{-#' 'COMPILED_JS' PragmaQName PragmaStrings '#-}'-    { CompiledJSPragma (getRange ($1,$2,$3,$5)) $3 (unwords $4) }--CompiledUHCPragma :: { Pragma }-CompiledUHCPragma-  : '{-#' 'COMPILED_UHC' PragmaQName PragmaStrings '#-}'-    { CompiledUHCPragma (getRange ($1,$2,$3,$5)) $3 (unwords $4) }--CompiledDataUHCPragma :: { Pragma }-CompiledDataUHCPragma-  : '{-#' 'COMPILED_DATA_UHC' PragmaQName string PragmaStrings '#-}'-    { CompiledDataUHCPragma (getRange ($1,$2,$3,fst $4,$6)) $3 (snd $4) $5 }--HaskellPragma :: { Pragma }-HaskellPragma-  : '{-#' 'HASKELL' ForeignCode '#-}' { HaskellCodePragma (getRange ($1, $2, $4)) (recoverLayout $3) }- ForeignPragma :: { Pragma } ForeignPragma   : '{-#' 'FOREIGN' string ForeignCode '#-}' { ForeignPragma (getRange ($1, $2, fst $3, $5)) (snd $3) (recoverLayout $4) }@@ -1612,25 +1612,6 @@     { CatchallPragma (getRange ($1,$2,$3)) }  -ImportPragma :: { Pragma }-ImportPragma-  : '{-#' 'IMPORT' string '#-}'-    {% let s = snd $3 in-       if validHaskellModuleName s-       then return $ ImportPragma (getRange ($1,$2,fst $3,$4)) s-       else parseError $ "Malformed module name: " ++ s ++ "."-    }--ImportUHCPragma :: { Pragma }-ImportUHCPragma-  : '{-#' 'IMPORT_UHC' string '#-}'-    {% let s = snd $3 in-       if validHaskellModuleName s-       then return $ ImportUHCPragma (getRange ($1,$2,fst $3,$4)) s-       else parseError $ "Malformed module name: " ++ s ++ "."-    }-- ImpossiblePragma :: { Pragma }   : '{-#' 'IMPOSSIBLE' '#-}'  { ImpossiblePragma (getRange ($1,$2,$3)) } @@ -1639,6 +1620,11 @@   : '{-#' 'NO_POSITIVITY_CHECK' '#-}'     { NoPositivityCheckPragma (getRange ($1,$2,$3)) } +NoUniverseCheckPragma :: { Pragma }+NoUniverseCheckPragma+  : '{-#' 'NO_UNIVERSE_CHECK' '#-}'+    { NoUniverseCheckPragma (getRange ($1,$2,$3)) }+ PolarityPragma :: { Pragma } PolarityPragma   : '{-#' 'POLARITY' PragmaName Polarities '#-}'@@ -1666,6 +1652,13 @@     Sequences of declarations  --------------------------------------------------------------------------} +-- Possibly empty list of type signatures, with several identifiers allowed+-- for every signature.+TypeSignatures0 :: { [TypeSignature] }+TypeSignatures+    : vopen close    { [] }+    | TypeSignatures { $1 }+ -- Non-empty list of type signatures, with several identifiers allowed -- for every signature. TypeSignatures :: { [TypeSignature] }@@ -1690,6 +1683,31 @@     : ArgTypeSignatures1 semi ArgTypeSigs { reverse $3 ++ $1 }     | ArgTypeSigs                         { reverse $1 } +-- A variant of TypeSignatures which uses ArgTypeSigs instead of+-- TypeSigs.+ArgTypeSignaturesOrEmpty :: { [Arg TypeSignature] }+ArgTypeSignaturesOrEmpty+    : vopen ArgTypeSignatures0 close   { reverse $2 }++-- Inside the layout block.+ArgTypeSignatures0 :: { [Arg TypeSignature] }+ArgTypeSignatures0+    : ArgTypeSignatures0 semi ArgTypeSigs { reverse $3 ++ $1 }+    | ArgTypeSigs                         { reverse $1 }+    | {- empty -}                         { [] }++-- -- A variant of TypeSignatures which uses ModalArgTypeSigs instead of+-- -- TypeSigs.+-- ModalArgTypeSignatures :: { [Arg TypeSignature] }+-- ModalArgTypeSignatures+--     : vopen ModalArgTypeSignatures1 close   { reverse $2 }++-- -- Inside the layout block.+-- ModalArgTypeSignatures1 :: { [Arg TypeSignature] }+-- ModalArgTypeSignatures1+--     : ModalArgTypeSignatures1 semi ModalArgTypeSigs { reverse $3 ++ $1 }+--     | ModalArgTypeSigs                              { reverse $1 }+ -- Record declarations, including an optional record constructor name. RecordDeclarations :: { ((Maybe (Ranged Induction), Maybe HasEta, Maybe (Name, IsInstance)), [Declaration]) } RecordDeclarations@@ -1824,8 +1842,8 @@ mkName (i, s) = do     let xs = C.stringNameParts s     mapM_ isValidId xs-    unless (alternating xs) $ fail $ "a name cannot contain two consecutive underscores"-    return $ Name (getRange i) xs+    unless (alternating xs) $ parseError $ "a name cannot contain two consecutive underscores"+    return $ Name (getRange i) InScope xs     where         isValidId Hole   = return ()         isValidId (Id y) = do@@ -1833,9 +1851,9 @@               err = "in the name " ++ s ++ ", the part " ++ x ++ " is not valid"           case parse defaultParseFlags [0] (lexer return) x of             ParseOk _ TokId{}  -> return ()-            ParseFailed{}      -> fail err-            ParseOk _ TokEOF{} -> fail err-            ParseOk _ t   -> fail . ((err ++ " because it is ") ++) $ case t of+            ParseFailed{}      -> parseError err+            ParseOk _ TokEOF{} -> parseError err+            ParseOk _ t   -> parseError . ((err ++ " because it is ") ++) $ case t of               TokId{}       -> __IMPOSSIBLE__               TokQId{}      -> __IMPOSSIBLE__ -- "qualified"               TokKeyword{}  -> "a keyword"@@ -1864,12 +1882,14 @@                 SymCloseVirtualBrace -> __IMPOSSIBLE__                 SymOpenPragma        -> __IMPOSSIBLE__ -- "used for pragmas"                 SymClosePragma       -> __IMPOSSIBLE__ -- "used for pragmas"-                SymEllipsis          -> __IMPOSSIBLE__ -- "used for function clauses"+                SymEllipsis          -> "used for function clauses"                 SymDotDot            -> __IMPOSSIBLE__ -- "a modality"                 SymEndComment        -> "the end-of-comment brace"               TokString{}   -> __IMPOSSIBLE__               TokSetN{}     -> "a type universe"+              TokPropN{}    -> "a prop universe"               TokTeX{}      -> __IMPOSSIBLE__  -- used by the LaTeX backend only+              TokMarkup{}   -> __IMPOSSIBLE__  -- ditto               TokComment{}  -> __IMPOSSIBLE__               TokDummy{}    -> __IMPOSSIBLE__               TokEOF{}      -> __IMPOSSIBLE__@@ -1894,6 +1914,18 @@   let ss = chopWhen (== '.') s   mkQName $ map (r,) ss +mkNamedArg :: Maybe QName -> Either QName Range -> Parser (NamedArg BoundName)+mkNamedArg x y = do+  lbl <- case x of+           Nothing        -> return $ Just $ unranged "_"+           Just (QName x) -> return $ Just $ Ranged (getRange x) (prettyShow x)+           _              -> parseError "expected unqualified variable name"+  var <- case y of+           Left (QName y) -> return $ BName y noFixity'+           Right r        -> return $ BName (noName r) noFixity'+           _              -> parseError "expected unqualified variable name"+  return $ defaultArg $ Named lbl var+ -- | Polarity parser.  polarity :: (Interval, String) -> Parser (Range, Occurrence)@@ -1904,7 +1936,7 @@     "+"  -> ret JustPos     "-"  -> ret JustNeg     "*"  -> ret Mixed-    _    -> fail $ "Not a valid polarity: " ++ s+    _    -> parseError $ "Not a valid polarity: " ++ s   where   ret x = return (getRange i, x) @@ -1929,22 +1961,42 @@ isName :: String -> (Interval, String) -> Parser () isName s (_,s')     | s == s'   = return ()-    | otherwise = fail $ "expected " ++ s ++ ", found " ++ s'+    | otherwise = parseError $ "expected " ++ s ++ ", found " ++ s'  -- | Build a forall pi (forall x y z -> ...) forallPi :: [LamBinding] -> Expr -> Expr forallPi bs e = Pi (map addType bs) e --- | Build a telescoping let (let Ds)-tLet :: Range -> [Declaration] -> TypedBindings-tLet r = TypedBindings r . Arg defaultArgInfo . TLet r- -- | Converts lambda bindings to typed bindings.-addType :: LamBinding -> TypedBindings-addType (DomainFull b)   = b-addType (DomainFree info x) = TypedBindings r $ Arg info $ TBind r [pure x] $ Underscore r Nothing+addType :: LamBinding -> TypedBinding+addType (DomainFull b) = b+addType (DomainFree x) = TBind r [x] $ Underscore r Nothing   where r = getRange x +boundNamesOrAbsurd :: [Expr] -> Parser (Either [NamedArg BoundName] [Expr])+boundNamesOrAbsurd es+  | any isAbsurd es = return $ Right es+  | otherwise       =+    case mapM getBName es of+        Just good -> return $ Left $ map defaultNamedArg good+        Nothing   -> parseError $ "expected sequence of bound identifiers"+  where+    getName :: Expr -> Maybe Name+    getName (Ident (QName x)) = Just x+    getName (Underscore r _)  = Just $ Name r NotInScope [Hole]+    getName _                 = Nothing++    getBName :: Expr -> Maybe BoundName+    getBName e = fmap mkBoundName_ $ getName e++    isAbsurd :: Expr -> Bool+    isAbsurd (Absurd _)                  = True+    isAbsurd (HiddenArg _ (Named _ e))   = isAbsurd e+    isAbsurd (InstanceArg _ (Named _ e)) = isAbsurd e+    isAbsurd (Paren _ expr)              = isAbsurd expr+    isAbsurd (RawApp _ exprs)            = any isAbsurd exprs+    isAbsurd _                           = False+ -- | Build a do-statement buildDoStmt :: Expr -> [LamClause] -> Parser DoStmt buildDoStmt (RawApp r [e]) cs = buildDoStmt e cs@@ -1958,7 +2010,7 @@               <*> pure (RawApp (getRange es2) es2)               <*> pure cs   where-    isLeftArrow (Ident (QName (Name _ [Id arr]))) = elem arr ["<-", "←"]+    isLeftArrow (Ident (QName (Name _ _ [Id arr]))) = elem arr ["<-", "←"]     isLeftArrow _ = False buildDoStmt e (_ : _) = parseError' (rStart' $ getRange e) "Only pattern matching do-statements can have where clauses." buildDoStmt e [] = return $ DoThen e@@ -1986,10 +2038,9 @@          $ sort xs     of         []  -> return i-        yss -> let Just pos = rStart' $ getRange $ head $ concat yss in-               parseErrorAt pos $+        yss -> parseErrorRange (head $ concat yss) $                 "Repeated name" ++ s ++ " in import directive: " ++-                concat (intersperse ", " $ map (show . head) yss)+                concat (intersperse ", " $ map (prettyShow . head) yss)             where                 s = case yss of                         [_] -> ""@@ -2006,10 +2057,9 @@    deriving (Eq,Show)  verifyRecordDirectives :: [RecordDirective] -> Parser (Maybe (Ranged Induction), Maybe HasEta, Maybe (Name, IsInstance))-verifyRecordDirectives xs | null rs = return (ltm is, ltm es, ltm cs)-                          | otherwise = let Just pos = rStart' $ (head rs) in-                                          parseErrorAt pos $ "Repeated record directives at: \n" ++ intercalate "\n" (map show rs)-+verifyRecordDirectives xs+  | null rs = return (ltm is, ltm es, ltm cs)+  | otherwise = parseErrorRange (head rs) $ "Repeated record directives at: \n" ++ intercalate "\n" (map prettyShow rs)  where   ltm :: [a] -> Maybe a   ltm [] = Nothing@@ -2067,8 +2117,7 @@ --   valid pattern. exprToPattern :: Expr -> Parser Pattern exprToPattern e = do-    let Just pos = rStart' $ getRange e-        failure = parseErrorAt pos $ "Not a valid pattern: " ++ show e+    let failure = parseErrorRange e $ "Not a valid pattern: " ++ prettyShow e     case e of         Ident x                 -> return $ IdentP x         App _ e1 e2             -> AppP <$> exprToPattern e1@@ -2087,6 +2136,7 @@         Quote r                 -> return $ QuoteP r         Rec r es | Just fs <- mapM maybeLeft es -> do           RecP r <$> T.mapM (T.mapM exprToPattern) fs+        Equal r e1 e2           -> return $ EqualP r [(e1, e2)]         Ellipsis r              -> return $ EllipsisP r         -- WithApp has already lost the range information of the bars '|'         WithApp r e es          -> do@@ -2103,9 +2153,7 @@ --   valid identifier. exprToName :: Expr -> Parser Name exprToName (Ident (QName x)) = return x-exprToName e =-  let Just pos = rStart' $ getRange e in-  parseErrorAt pos $ "Not a valid identifier: " ++ show e+exprToName e = parseErrorRange e $ "Not a valid identifier: " ++ prettyShow e  stripSingletonRawApp :: Expr -> Expr stripSingletonRawApp (RawApp _ [e]) = stripSingletonRawApp e@@ -2128,10 +2176,10 @@   where     pSynArg Left{}                   = parseError "Absurd patterns are not allowed in pattern synonyms"     pSynArg (Right DomainFull{})     = parseError "Unexpected type signature in pattern synonym argument"-    pSynArg (Right (DomainFree a x))-      | getHiding a `notElem` [Hidden, NotHidden] = parseError $ show (getHiding a) ++ " arguments not allowed to pattern synonyms"-      | getRelevance a /= Relevant                = parseError "Arguments to pattern synonyms must be relevant"-      | otherwise                                 = return $ Arg a (boundName x)+    pSynArg (Right (DomainFree x))+      | let h = getHiding x, h `notElem` [Hidden, NotHidden] = parseError $ prettyShow h ++ " arguments not allowed to pattern synonyms"+      | getRelevance x /= Relevant                = parseError "Arguments to pattern synonyms must be relevant"+      | otherwise                                 = return $ fmap (boundName . namedThing) x  parsePanic s = parseError $ "Internal parser error: " ++ s ++ ". Please report this as a bug." @@ -2152,18 +2200,22 @@     _                        -> parseError $       "Illegal name in type signature: " ++ prettyShow p -funClauseOrTypeSigs :: LHS -> RHSOrTypeSigs -> WhereClause -> Parser [Declaration]-funClauseOrTypeSigs lhs mrhs wh = do+funClauseOrTypeSigs :: [Attr] -> LHS -> RHSOrTypeSigs -> WhereClause -> Parser [Declaration]+funClauseOrTypeSigs attrs lhs mrhs wh = do   -- traceShowM lhs   case mrhs of-    JustRHS rhs   -> return [FunClause lhs rhs wh False]+    JustRHS rhs   -> do+      unless (null attrs) $ parseErrorRange attrs $ "A function clause cannot have attributes"+      return [FunClause lhs rhs wh False]     TypeSigsRHS e -> case wh of       NoWhere -> case lhs of         LHS p _ _ | hasEllipsis p -> parseError "The ellipsis ... cannot have a type signature"         LHS _ _ (_:_) -> parseError "Illegal: with in type signature"         LHS _ (_:_) _ -> parseError "Illegal: rewrite in type signature"         LHS p _ _ | hasWithPatterns p -> parseError "Illegal: with patterns in type signature"-        LHS p [] []  -> map (\ (x, y) -> TypeSig x y e) <$> patternToNames p+        LHS p [] []  -> forMM (patternToNames p) $ \ (info, x) -> do+          info <- applyAttrs attrs info+          return $ typeSig info x e       _ -> parseError "A type signature cannot have a where clause"  parseDisplayPragma :: Range -> Position -> String -> Parser Pragma@@ -2173,4 +2225,67 @@       return $ DisplayPragma r lhs rhs     _ -> parseError "Invalid DISPLAY pragma. Should have form {-# DISPLAY LHS = RHS #-}." +typeSig :: ArgInfo -> Name -> Expr -> Declaration+typeSig i n e = TypeSig i n (Generalized e)++-- * Attributes++-- | Parsed attribute.++data Attr = Attr+  { attrRange :: Range       -- ^ Range includes the @.+  , attrName  :: String      -- ^ Concrete, user written attribute for error reporting.+  , theAttr   :: Attribute   -- ^ Parsed attribute.+  }++instance HasRange Attr where+  getRange = attrRange++instance SetRange Attr where+  setRange r (Attr _ x a) = Attr r x a++-- | Parse an attribute.+toAttribute :: (HasRange e, Pretty e) => e -> Parser Attr+toAttribute x = maybe failure (return . Attr (getRange x) y) $ stringToAttribute y+  where+  y = prettyShow x+  failure = parseErrorRange x $ "Unknown attribute: " ++ y++-- | Apply an attribute to thing (usually `Arg`).+--   This will fail if one of the attributes is already set+--   in the thing to something else than the default value.+applyAttr :: (LensAttribute a) => Attr -> a -> Parser a+applyAttr attr@(Attr r x a) = maybe failure return . setPristineAttribute a+  where+  failure = errorConflictingAttribute attr++-- | Apply attributes to thing (usually `Arg`).+--   Expects a reversed list of attributes.+--   This will fail if one of the attributes is already set+--   in the thing to something else than the default value.+applyAttrs :: (LensAttribute a) => [Attr] -> a -> Parser a+applyAttrs rattrs arg = do+  let attrs = reverse rattrs+  checkForUniqueAttribute (isJust . isQuantityAttribute ) attrs+  checkForUniqueAttribute (isJust . isRelevanceAttribute) attrs+  foldM (flip applyAttr) arg attrs++-- | Report a parse error if two attributes in the list are of the same kind,+--   thus, present conflicting information.+checkForUniqueAttribute :: (Attribute -> Bool) -> [Attr] -> Parser ()+checkForUniqueAttribute p attrs = do+  let pAttrs = filter (p . theAttr) attrs+  when (length pAttrs >= 2) $+    errorConflictingAttributes pAttrs++-- | Report an attribute as conflicting (e.g., with an already set value).+errorConflictingAttribute :: Attr -> Parser a+errorConflictingAttribute a = parseErrorRange a $ "Conflicting attribute: " ++ attrName a++-- | Report attributes as conflicting (e.g., with each other).+--   Precondition: List not emtpy.+errorConflictingAttributes :: [Attr] -> Parser a+errorConflictingAttributes [a] = errorConflictingAttribute a+errorConflictingAttributes as  = parseErrorRange as $+  "Conflicting attributes: " ++ unwords (map attrName as) }
src/full/Agda/Syntax/Parser/StringLiterals.hs view
@@ -103,7 +103,7 @@         case c of             '\\'            -> lexString del s             c | isSpace c   -> lexStringGap del s-            _               -> fail "non-space in string gap"+            _               -> lookAheadError "non-space in string gap"  -- | Lex a single character. lexChar :: LookAhead Char@@ -121,7 +121,7 @@             '^'     -> do c <- eatNextChar                           if c >= '@' && c <= '_'                             then return (chr (ord c - ord '@'))-                            else fail "invalid control character"+                            else lookAheadError "invalid control character"              'x'     -> readNum isHexDigit 16 hexDigit             'o'     -> readNum isOctDigit  8 octDigit@@ -132,7 +132,7 @@                 -- Try to match the input (starting with c) against the                 -- silly escape codes.                 do  esc <- match' c (map (id -*- return) sillyEscapeChars)-                                    (fail "bad escape code")+                                    (lookAheadError "bad escape code")                     sync                     return esc @@ -142,7 +142,7 @@     do  c <- eatNextChar         if isDigit c             then readNumAcc isDigit base conv (conv c)-            else fail "non-digit in numeral"+            else lookAheadError "non-digit in numeral"  -- | Same as 'readNum' but with an accumulating parameter. readNumAcc :: (Char -> Bool) -> Int -> (Char -> Int) -> Int -> LookAhead Char@@ -158,7 +158,7 @@                             sync                             if i >= ord minBound && i <= ord maxBound                                 then return (chr i)-                                else fail "character literal out of bounds"+                                else lookAheadError "character literal out of bounds"  -- | The escape codes. sillyEscapeChars :: [(String, Char)]
src/full/Agda/Syntax/Parser/Tokens.hs view
@@ -19,10 +19,8 @@         | KwEta | KwNoEta         | KwHiding | KwUsing | KwRenaming | KwTo | KwPublic         | KwOPTIONS | KwBUILTIN | KwLINE-        | KwCOMPILED_DATA | KwCOMPILED_TYPE | KwCOMPILED | KwCOMPILED_EXPORT-        | KwHASKELL | KwFOREIGN | KwCOMPILE-        | KwCOMPILED_JS | KwCOMPILED_UHC | KwCOMPILED_DATA_UHC-        | KwIMPORT | KwIMPORT_UHC | KwIMPOSSIBLE | KwSTATIC | KwINJECTIVE | KwINLINE | KwNOINLINE+        | KwFOREIGN | KwCOMPILE+        | KwIMPOSSIBLE | KwSTATIC | KwINJECTIVE | KwINLINE | KwNOINLINE         | KwETA         | KwNO_TERMINATION_CHECK | KwTERMINATING | KwNON_TERMINATING         | KwWARNING_ON_USAGE@@ -32,12 +30,14 @@         | KwUnquote | KwUnquoteDecl | KwUnquoteDef         | KwSyntax         | KwPatternSyn | KwTactic | KwCATCHALL+        | KwVariable         | KwNO_POSITIVITY_CHECK | KwPOLARITY+        | KwNO_UNIVERSE_CHECK     deriving (Eq, Show)  layoutKeywords :: [Keyword] layoutKeywords =-    [ KwLet, KwWhere, KwDo, KwPostulate, KwMutual, KwAbstract, KwPrivate, KwInstance, KwMacro, KwPrimitive, KwField ]+    [ KwLet, KwWhere, KwDo, KwPostulate, KwMutual, KwAbstract, KwPrivate, KwInstance, KwMacro, KwPrimitive, KwField, KwVariable ]  data Symbol         = SymDot | SymSemi | SymVirtualSemi | SymBar@@ -67,11 +67,13 @@           -- Other tokens         | TokString (Interval, String)  -- arbitrary string, used in pragmas         | TokSetN (Interval, Integer)+        | TokPropN (Interval, Integer)         | TokTeX (Interval, String)+        | TokMarkup (Interval, String)         | TokComment (Interval, String)         | TokDummy      -- Dummy token to make Happy not complain                         -- about overlapping cases.-        | TokEOF+        | TokEOF Interval     deriving (Eq, Show)  instance HasRange Token where@@ -82,7 +84,9 @@   getRange (TokSymbol _ i)     = getRange i   getRange (TokString (i, _))  = getRange i   getRange (TokSetN (i, _))    = getRange i+  getRange (TokPropN (i, _))   = getRange i   getRange (TokTeX (i, _))     = getRange i+  getRange (TokMarkup (i, _))  = getRange i   getRange (TokComment (i, _)) = getRange i   getRange TokDummy            = noRange-  getRange TokEOF              = noRange+  getRange (TokEOF i)          = getRange i
src/full/Agda/Syntax/Position.hs view
@@ -26,8 +26,6 @@   , Interval'(..)   , intervalInvariant   , posToInterval-  , takeI-  , dropI   , getIntervalFile   , iLength   , fuseIntervals@@ -571,15 +569,15 @@ ------------------------------------------------------------------------  instance Pretty a => Pretty (Position' (Strict.Maybe a)) where-  pretty (Pn Strict.Nothing  _ l c) = pretty l <> pretty "," <> pretty c+  pretty (Pn Strict.Nothing  _ l c) = pretty l <> "," <> pretty c   pretty (Pn (Strict.Just f) _ l c) =-    pretty f <> pretty ":" <> pretty l <> pretty "," <> pretty c+    pretty f <> ":" <> pretty l <> "," <> pretty c  instance Pretty PositionWithoutFile where   pretty p = pretty (p { srcFile = Strict.Nothing } :: Position)  instance Pretty IntervalWithoutFile where-  pretty (Interval s e) = start <> pretty "-" <> end+  pretty (Interval s e) = start <> "-" <> end     where       sl = posLine s       el = posLine e@@ -607,7 +605,7 @@     Just i  -> pretty i  instance (Pretty a, HasRange a) => Pretty (PrintRange a) where-  pretty (PrintRange a) = pretty a <+> parens (text "at" <+> pretty (getRange a))+  pretty (PrintRange a) = pretty a <+> parens ("at" <+> pretty (getRange a))  {--------------------------------------------------------------------------     Functions on positions and ranges@@ -650,23 +648,6 @@ backupPos :: Position' a -> Position' a backupPos (Pn f p l c) = Pn f (p - 1) l (c - 1) --- | Extracts the interval corresponding to the given string, assuming--- that the string starts at the beginning of the given interval.------ Precondition: The string must not be too long for the interval.-takeI :: String -> Interval' a -> Interval' a-takeI s i | genericLength s > iLength i = __IMPOSSIBLE__-          | otherwise = i { iEnd = movePosByString (iStart i) s }---- | Removes the interval corresponding to the given string from the--- given interval, assuming that the string starts at the beginning of--- the interval.------ Precondition: The string must not be too long for the interval.-dropI :: String -> Interval' a -> Interval' a-dropI s i | genericLength s > iLength i = __IMPOSSIBLE__-          | otherwise = i { iStart = movePosByString (iStart i) s }- -- | Converts a file name and two positions to a range. posToRange' ::   a -> PositionWithoutFile -> PositionWithoutFile -> Range' a@@ -852,4 +833,3 @@           (a:) <$> go as' bs         else           (b:) <$> go as bs'-
src/full/Agda/Syntax/Scope/Base.hs view
@@ -25,6 +25,7 @@ import Data.Set (Set) import qualified Data.Set as Set import Data.Maybe+import qualified Data.Semigroup as Sgrp  import Data.Data (Data) @@ -36,6 +37,7 @@ import Agda.Syntax.Abstract.Name as A import Agda.Syntax.Concrete.Name as C import qualified Agda.Syntax.Concrete as C+import Agda.Syntax.Concrete.Fixity as C  import Agda.Utils.AssocList (AssocList) import qualified Agda.Utils.AssocList as AssocList@@ -45,6 +47,7 @@ import Agda.Utils.NonemptyList import Agda.Utils.Null import Agda.Utils.Pretty+import Agda.Utils.Singleton import qualified Agda.Utils.Map as Map  #include "undefined.h"@@ -106,14 +109,20 @@       , scopeVarsToBind    :: LocalVars       , scopeLocals        :: LocalVars       , scopePrecedence    :: PrecedenceStack-      , scopeInverseName   :: Map A.QName [C.QName]-      , scopeInverseModule :: Map A.ModuleName [C.QName]+      , scopeInverseName   :: NameMap+      , scopeInverseModule :: ModuleMap       , scopeInScope       :: InScopeSet+      , scopeFixities      :: C.Fixities    -- ^ Maps concrete names to fixities+      , scopePolarities    :: C.Polarities  -- ^ Maps concrete names to polarities       }   deriving (Data, Show) +type NameMap   = Map A.QName      (NonemptyList C.QName)+type ModuleMap = Map A.ModuleName [C.QName]+-- type ModuleMap = Map A.ModuleName (NonemptyList C.QName)+ instance Eq ScopeInfo where-  ScopeInfo c1 m1 v1 l1 p1 _ _ _ == ScopeInfo c2 m2 v2 l2 p2 _ _ _ =+  ScopeInfo c1 m1 v1 l1 p1 _ _ _ _ _ == ScopeInfo c2 m2 v2 l2 p2 _ _ _ _ _ =     c1 == c2 && m1 == m2 && v1 == v2 && l1 == l2 && p1 == p2  -- | Local variables.@@ -150,13 +159,19 @@ -- | We show shadowed variables as prefixed by a ".", as not in scope. instance Pretty LocalVar where   pretty (LocalVar x _ []) = pretty x-  pretty (LocalVar x _ xs) = text "." <> pretty x+  pretty (LocalVar x _ xs) = "." <> pretty x  -- | Shadow a local name by a non-empty list of imports. shadowLocal :: [AbstractName] -> LocalVar -> LocalVar shadowLocal [] _ = __IMPOSSIBLE__ shadowLocal ys (LocalVar x b zs) = LocalVar x b (ys ++ zs) +-- | Treat patternBound variable as a module parameter+patternToModuleBound :: LocalVar -> LocalVar+patternToModuleBound x+ | localBinder x == PatternBound = x { localBinder = LambdaBound }+ | otherwise                     = x+ -- | Project name of unshadowed local variable. notShadowedLocal :: LocalVar -> Maybe A.Name notShadowedLocal (LocalVar x _ []) = Just x@@ -245,6 +260,8 @@   | FldName        -- ^ Record field name.   | DefName        -- ^ Ordinary defined name.   | PatternSynName -- ^ Name of a pattern synonym.+  | GeneralizeName -- ^ Name to be generalized+  | DisallowedGeneralizeName -- ^ Generalizable variable from a let open   | MacroName      -- ^ Name of a macro   | QuotableName   -- ^ A name that can only be quoted.   deriving (Eq, Show, Data, Enum, Bounded)@@ -274,9 +291,16 @@     -- ^ The kind (definition, constructor, record field etc.).   , anameLineage :: WhyInScope     -- ^ Explanation where this name came from.+  , anameMetadata :: NameMetadata+    -- ^ Additional information needed during scope checking. Currently used+    --   for generalized data/record params.   }   deriving (Data, Show) +data NameMetadata = NoMetadata+                  | GeneralizedVarsMetadata (Map A.QName A.Name)+  deriving (Data, Show)+ -- | A decoration of abstract syntax module names. data AbstractModule = AbsModule   { amodName    :: A.ModuleName@@ -332,12 +356,12 @@  instance Pretty ResolvedName where   pretty = \case-    VarName x _         -> text "variable"    <+> pretty x+    VarName x _         -> "variable"    <+> pretty x     DefinedName a x     -> pretty a           <+> pretty x-    FieldName xs        -> text "field"       <+> pretty xs-    ConstructorName xs  -> text "constructor" <+> pretty xs-    PatternSynResName x -> text "pattern"     <+> pretty x-    UnknownName         -> text "<unknown name>"+    FieldName xs        -> "field"       <+> pretty xs+    ConstructorName xs  -> "constructor" <+> pretty xs+    PatternSynResName x -> "pattern"     <+> pretty x+    UnknownName         -> "<unknown name>"  -- * Operations on name and module maps. @@ -410,6 +434,8 @@   , scopeInverseName   = Map.empty   , scopeInverseModule = Map.empty   , scopeInScope       = Set.empty+  , scopeFixities      = Map.empty+  , scopePolarities    = Map.empty   }  -- | Map functions over the names and modules in a scope.@@ -671,6 +697,14 @@ removeOnlyQualified :: Scope -> Scope removeOnlyQualified s = setNameSpace OnlyQualifiedNS emptyNameSpace s +-- | Disallow using generalized variables from the scope+disallowGeneralizedVars :: Scope -> Scope+disallowGeneralizedVars = mapScope_ ((fmap . map) disallow) id id+  where+    disallow a = a { anameKind = disallowGen (anameKind a) }+    disallowGen GeneralizeName = DisallowedGeneralizeName+    disallowGen k              = k+ -- | Add an explanation to why things are in scope. inScopeBecause :: (WhyInScope -> WhyInScope) -> Scope -> Scope inScopeBecause f = mapScope_ mapName mapMod id@@ -705,6 +739,27 @@     look m = fromMaybe __IMPOSSIBLE__ $ Map.lookup m $ scopeModules scope     s0     = look $ scopeCurrent scope +everythingInScopeQualified :: ScopeInfo -> NameSpace+everythingInScopeQualified scope =+  allThingsInScope $ mergeScopes $+    chase Set.empty scopes+  where+    s0      = look $ scopeCurrent scope+    scopes  = s0 : map look (scopeParents s0)+    look m  = fromMaybe __IMPOSSIBLE__ $ Map.lookup m $ scopeModules scope+    lookP   = restrictPrivate . look++    -- We start with the current module and all its parents and look through+    -- all their imports and submodules.+    chase seen [] = []+    chase seen (s : ss)+      | Set.member name seen = chase seen ss+      | otherwise = s : chase (Set.insert name seen) (imports ++ submods ++ ss)+      where+        name    = scopeName s+        imports = map lookP $ Map.elems $ scopeImports s+        submods = map (lookP . amodName) $ concat $ Map.elems $ allNamesInScope s+ -- | Compute a flattened scope. Only include unqualified names or names -- qualified by modules in the first argument. flattenScope :: [[C.Name]] -> ScopeInfo -> Map C.QName [AbstractName]@@ -877,8 +932,8 @@     Left  m -> best $ filter unambiguousModule $ findModule m     Right q -> best $ filter unambiguousName   $ findName q   where-    findName   x = fromMaybe [] $ Map.lookup x (scopeInverseName scope)-    findModule x = fromMaybe [] $ Map.lookup x (scopeInverseModule scope)+    findName   x = maybe [] toList $ Map.lookup x (scopeInverseName scope)+    findModule x = fromMaybe []    $ Map.lookup x (scopeInverseModule scope)      len :: C.QName -> Int     len (C.QName _)  = 1@@ -903,7 +958,7 @@ recomputeInverseScopeMaps scope = billToPure [ Scoping , InverseScopeLookup ] $   scope { scopeInverseName   = nameMap         , scopeInverseModule = Map.fromList [ (x, findModule x) | x <- Map.keys moduleMap ++ Map.keys importMap ]-        , scopeInScope       = Set.unions $ map (scopeSet . snd) scopes+        , scopeInScope       = nsInScope $ everythingInScopeQualified scope         }   where     this = scopeCurrent scope@@ -916,15 +971,12 @@     restrict m s | m `elem` current = s                  | otherwise = restrictPrivate s -    scopeSet     s = Set.unions $ map (namespaceSet . snd) $ scopeNameSpaces s-    namespaceSet s = nsInScope s-     internalName :: C.QName -> Bool     internalName C.QName{} = False     internalName (C.Qual m n) = intern m || internalName n       where       -- Recognize fresh names created Parser.y-      intern (C.Name _ [ C.Id ('.' : '#' : _) ]) = True+      intern (C.Name _ _ [ C.Id ('.' : '#' : _) ]) = True       intern _ = False      findName :: Ord a => Map a [(A.ModuleName, C.Name)] -> a -> [C.QName]@@ -945,25 +997,26 @@     importMap = Map.fromListWith (++) $ do       (m, s) <- scopes       (x, y) <- Map.toList $ scopeImports s-      return (y, [x])+      return (y, singleton x)      moduleMap = Map.fromListWith (++) $ do       (m, s)  <- scopes       (x, ms) <- Map.toList (allNamesInScope s)       q       <- amodName <$> ms-      return (q, [(m, x)])+      return (q, singleton (m, x)) -    nameMap = Map.fromListWith (++) $ do+    nameMap :: NameMap+    nameMap = Map.fromListWith (Sgrp.<>) $ do       (m, s)  <- scopes       (x, ms) <- Map.toList (allNamesInScope s)       q       <- anameName <$> ms       if elem m current-        then return (q, [C.QName x])+        then return (q, singleton (C.QName x))         else do           y <- findModule m           let z = C.qualify y x           guard $ not $ internalName z-          return (q, [z])+          return (q, singleton z)  -- | Find the concrete names that map (uniquely) to a given abstract qualified name. --   Sort by length, shortest first.@@ -1000,19 +1053,19 @@  prettyNameSpace :: NameSpace -> [Doc] prettyNameSpace (NameSpace names mods _) =-    blockOfLines (text "names")   (map pr $ Map.toList names) ++-    blockOfLines (text "modules") (map pr $ Map.toList mods)+    blockOfLines "names"   (map pr $ Map.toList names) +++    blockOfLines "modules" (map pr $ Map.toList mods)   where     pr :: (Pretty a, Pretty b) => (a,b) -> Doc-    pr (x, y) = pretty x <+> text "-->" <+> pretty y+    pr (x, y) = pretty x <+> "-->" <+> pretty y  instance Pretty Scope where   pretty (scope@Scope{ scopeName = name, scopeParents = parents, scopeImports = imps }) =     vcat $-      [ text "scope" <+> pretty name ] ++ ind (+      [ "scope" <+> pretty name ] ++ ind (         concat [ blockOfLines (pretty nsid) $ prettyNameSpace $ scopeNameSpace nsid scope                | nsid <- [minBound..maxBound] ]-      ++ blockOfLines (text "imports")+      ++ blockOfLines "imports"            (case Map.keys imps of [] -> []; ks -> [ prettyList ks ])       )     where ind = map $ nest 2@@ -1023,14 +1076,14 @@ blockOfLines hd ss = hd : map (nest 2) ss  instance Pretty ScopeInfo where-  pretty (ScopeInfo this mods toBind locals ctx _ _ _) = vcat $-    [ text "ScopeInfo"-    , text "  current = " <> pretty this+  pretty (ScopeInfo this mods toBind locals ctx _ _ _ _ _) = vcat $+    [ "ScopeInfo"+    , "  current = " <> pretty this     ] ++-    (if null toBind then [] else [ text "  toBind  = " <> pretty locals ]) ++-    (if null locals then [] else [ text "  locals  = " <> pretty locals ]) ++-    [ text "  context = " <> pretty ctx-    , text "  modules"+    (if null toBind then [] else [ "  toBind  = " <> pretty locals ]) +++    (if null locals then [] else [ "  locals  = " <> pretty locals ]) +++    [ "  context = " <> pretty ctx+    , "  modules"     ] ++     map (nest 4) (List.filter (not . null) $ map pretty $ Map.elems mods) 
src/full/Agda/Syntax/Scope/Monad.hs view
@@ -7,11 +7,12 @@ module Agda.Syntax.Scope.Monad where  import Prelude hiding (mapM, any, all)-import Control.Arrow (first, second, (***))+import Control.Arrow (first, second, (***), (&&&)) import Control.Monad hiding (mapM, forM) import Control.Monad.Writer hiding (mapM, forM) import Control.Monad.State hiding (mapM, forM) +import Data.Either ( partitionEithers ) import qualified Data.List as List import Data.Map (Map) import qualified Data.Map as Map@@ -28,12 +29,17 @@ import qualified Agda.Syntax.Abstract as A import Agda.Syntax.Abstract (ScopeCopyInfo(..), initCopyInfo) import Agda.Syntax.Concrete as C+import Agda.Syntax.Concrete.Fixity+import Agda.Syntax.Concrete.Definitions (DeclarationWarning(..)) -- TODO: move the relevant warnings out of there import Agda.Syntax.Scope.Base  import Agda.TypeChecking.Monad.Base import Agda.TypeChecking.Monad.Debug-import Agda.TypeChecking.Monad.State import Agda.TypeChecking.Monad.Options+import Agda.TypeChecking.Monad.State+import Agda.TypeChecking.Monad.Trace ( setCurrentRange )+import Agda.TypeChecking.Positivity.Occurrence (Occurrence)+import Agda.TypeChecking.Warnings ( warning )  import qualified Agda.Utils.AssocList as AssocList import Agda.Utils.Function@@ -206,6 +212,7 @@     , nameConcrete    = x     , nameBindingSite = getRange x     , nameFixity      = fx+    , nameIsRecordName = False     }  -- | @freshAbstractName_ = freshAbstractName noFixity'@@@ -219,6 +226,11 @@   m <- getCurrentModule   return $ A.qualify m y +freshAbstractQName' :: C.Name -> ScopeM A.QName+freshAbstractQName' x = do+  fx <- getConcreteFixity x+  freshAbstractQName fx x+ -- * Resolving names  -- | Look up the abstract name referred to by a given concrete name.@@ -284,6 +296,37 @@     AbsModule m why :! [] -> return $ AbsModule (m `withRangeOf` x) why     ms                    -> typeError $ AmbiguousModule x (fmap amodName ms) +-- | Get the fixity of a not yet bound name.+getConcreteFixity :: C.Name -> ScopeM Fixity'+getConcreteFixity x = Map.findWithDefault noFixity' x . scopeFixities <$> getScope++-- | Get the polarities of a not yet bound name.+getConcretePolarity :: C.Name -> ScopeM (Maybe [Occurrence])+getConcretePolarity x = Map.lookup x . scopePolarities <$> getScope++instance MonadFixityError ScopeM where+  throwMultipleFixityDecls xs         = case xs of+    (x, _) : _ -> setCurrentRange (getRange x) $ typeError $ MultipleFixityDecls xs+    []         -> __IMPOSSIBLE__+  throwMultiplePolarityPragmas xs     = case xs of+    x : _ -> setCurrentRange (getRange x) $ typeError $ MultiplePolarityPragmas xs+    []    -> __IMPOSSIBLE__+  warnUnknownNamesInFixityDecl        = warning   . NicifierIssue . UnknownNamesInFixityDecl+  warnUnknownNamesInPolarityPragmas   = warning   . NicifierIssue . UnknownNamesInPolarityPragmas+  warnUnknownFixityInMixfixDecl       = warning   . NicifierIssue . UnknownFixityInMixfixDecl+  warnPolarityPragmasButNotPostulates = warning   . NicifierIssue . PolarityPragmasButNotPostulates++-- | Collect the fixity/syntax declarations and polarity pragmas from the list+--   of declarations and store them in the scope.+computeFixitiesAndPolarities :: DoWarn -> [C.Declaration] -> ScopeM a -> ScopeM a+computeFixitiesAndPolarities warn ds ret = do+  (fixs0, pols0) <- (scopeFixities &&& scopePolarities) <$> getScope+  (fixs, pols)   <- fixitiesAndPolarities warn ds+  modifyScope $ \ s -> s { scopeFixities = fixs, scopePolarities = pols }+  x <- ret+  modifyScope $ \ s -> s { scopeFixities = fixs0, scopePolarities = pols0 }+  return x+ -- | Get the notation of a name. The name is assumed to be in scope. getNotation   :: C.QName@@ -322,13 +365,16 @@  -- | Bind a defined name. Must not shadow anything. bindName :: Access -> KindOfName -> C.Name -> A.QName -> ScopeM ()-bindName acc kind x y = do+bindName acc kind x y = bindName' acc kind NoMetadata x y++bindName' :: Access -> KindOfName -> NameMetadata -> C.Name -> A.QName -> ScopeM ()+bindName' acc kind meta x y = do+  when (isNoName x) $ modifyScopes $ Map.map $ removeNameFromScope PrivateNS x   r  <- resolveName (C.QName x)   ys <- case r of     -- Binding an anonymous declaration always succeeds.     -- In case it's not the first one, we simply remove the one that came before-    UnknownName   | isNoName x -> success-    DefinedName{} | isNoName x -> success <* modifyCurrentScope (removeNameFromScope PrivateNS x)+    _ | isNoName x      -> success     DefinedName _ d     -> clash $ anameName d     VarName z _         -> clash $ A.qualify (mnameFromList []) z     FieldName       ds  -> ambiguous FldName ds@@ -338,7 +384,7 @@   let ns = if isNoName x then PrivateNS else localNameSpace acc   modifyCurrentScope $ addNamesToScope ns x ys   where-    success = return [ AbsName y kind Defined ]+    success = return [ AbsName y kind Defined meta ]     clash   = typeError . ClashingDefinition (C.QName x)      ambiguous k ds =@@ -434,7 +480,7 @@         refresh :: A.Name -> WSM A.Name         refresh x = do           i <- lift fresh-          return $ x { nameId = i }+          return $ x { A.nameId = i }          -- Change a binding M.x -> old.M'.y to M.x -> new.M'.y         renName :: A.QName -> WSM A.QName@@ -521,19 +567,37 @@ -- | Apply an import directive and check that all the names mentioned actually --   exist. applyImportDirectiveM :: C.QName -> C.ImportDirective -> Scope -> ScopeM (A.ImportDirective, Scope)-applyImportDirectiveM m dir@ImportDirective{ impRenaming = ren, using = u, hiding = h } scope = do-    -- Translate exported names to abstract syntax.-    -- Raise error if unsuccessful.-    caseMaybe mNamesA doesntExport $ \ namesA -> do+applyImportDirectiveM m (ImportDirective rng usn' hdn' ren' public) scope = do +    -- We start by checking that all of the names talked about in the import+    -- directive do exist. If some do not then we remove them and raise a warning.++    let (missingExports, namesA) = checkExist $ fromUsing usn' ++ hdn' ++ map renFrom ren'+    unless (null missingExports) $ setCurrentRange rng $ do+      reportSLn "scope.import.apply" 20 $ "non existing names: " ++ prettyShow missingExports+      warning $ ModuleDoesntExport m missingExports++    -- We can now define a cleaned-up version of the input+    let usn = fromUsing usn' List.\\ missingExports+    let hdn = hdn' List.\\ missingExports+    let ren = filter (\ r -> renFrom r `notElem` missingExports) ren'+    let dir = (\ u -> ImportDirective rng u hdn ren public)+            $ case usn' of { Using{} -> Using usn; _ -> UseEverything }++    -- As well as convenient shorthands for defined names and names brought into scope+    let names = map renFrom ren ++ hdn ++ usn+    let definedNames = map renTo ren+    let targetNames = usn ++ definedNames+     let extraModules =-          [ x | ImportedName x <- names,-                let mx = ImportedModule x,-                 not $ doesntExist mx,-                 notElem mx names ]+          [ x | ImportedName x <- names+              , let mx = ImportedModule x+              , notElem mx missingExports+              , notElem mx names+              ]         dir' = addExtraModules extraModules dir -    dir' <- sanityCheck dir'+    dir' <- sanityCheck dir' names      -- Check for duplicate imports in a single import directive.     -- @dup@ : To be imported names that are mentioned more than once.@@ -546,7 +610,7 @@     -- Look up the defined names in the new scope.     let namesInScope'   = (allNamesInScope scope' :: ThingsInScope AbstractName)     let modulesInScope' = (allNamesInScope scope' :: ThingsInScope AbstractModule)-    let look x = head . Map.findWithDefault __IMPOSSIBLE__ x+    let look x = headWithDefault __IMPOSSIBLE__ . Map.findWithDefault __IMPOSSIBLE__ x     -- We set the ranges to the ranges of the concrete names in order to get     -- highlighting for the names in the import directive.     let definedA = for definedNames $ \case@@ -557,25 +621,13 @@     return (adir, scope') -- TODO Issue 1714: adir    where-    -- | Names in the @using@ directive.-    usingNames :: [ImportedName]-    usingNames = case u of+    -- | Names in the @using@ directive+    fromUsing :: Using' a b -> [ImportedName' a b]+    fromUsing u = case u of       Using  xs     -> xs       UseEverything -> [] -    -- | All names from the imported module mentioned in the import directive.-    names :: [ImportedName]-    names = map renFrom ren ++ h ++ usingNames--    -- | Names defined by the import (targets of renaming).-    definedNames :: [ImportedName]-    definedNames = map renTo ren--    -- | Names to be in scope after import.-    targetNames :: [ImportedName]-    targetNames = definedNames ++ usingNames--    sanityCheck dir =+    sanityCheck dir names =       case (using dir, hiding dir) of         (Using xs, ys) -> do           let uselessHiding = [ x | x@ImportedName{} <- ys ] ++@@ -608,24 +660,18 @@     namesInScope   = (allNamesInScope scope :: ThingsInScope AbstractName)     modulesInScope = (allNamesInScope scope :: ThingsInScope AbstractModule) -    -- | AST versions of the concrete names from the imported module.-    --   @Nothing@ is one of the names is not exported.-    mNamesA = forM names $ \case-      ImportedName x   -> ImportedName   . (x,) . setRange (getRange x) . anameName . head <$> Map.lookup x namesInScope-      ImportedModule x -> ImportedModule . (x,) . setRange (getRange x) . amodName  . head <$> Map.lookup x modulesInScope+    -- | AST versions of the concrete names passed as an argument.+    --   We get back a pair consisting of a list of missing exports first,+    --   and a list of successful imports second.+    checkExist :: [ImportedName] -> ([ImportedName], [ImportedName' (C.Name, A.QName) (C.Name, A.ModuleName)])+    checkExist xs = partitionEithers $ for xs $ \ name -> case name of+      ImportedName x   -> ImportedName   . (x,) . setRange (getRange x) . anameName <$> resolve name x namesInScope+      ImportedModule x -> ImportedModule . (x,) . setRange (getRange x) . amodName  <$> resolve name x modulesInScope -    head = headWithDefault __IMPOSSIBLE__+      where resolve :: Ord a => err -> a -> Map a [b] -> Either err b+            resolve err x m = maybe (Left err) (Right . head) $ Map.lookup x m -    -- For the sake of the error message, we (re)compute the list of unresolved names.-    doesntExport = do-      -- Names @xs@ mentioned in the import directive @dir@ but not in the @scope@.-      let xs = filter doesntExist names-      reportSLn "scope.import.apply" 20 $ "non existing names: " ++ prettyShow xs-      typeError $ ModuleDoesntExport m xs -    doesntExist (ImportedName   x) = isNothing $ Map.lookup x namesInScope-    doesntExist (ImportedModule x) = isNothing $ Map.lookup x modulesInScope- -- | A finite map for @ImportedName@s. lookupImportedName   :: (Eq a, Eq b)@@ -643,11 +689,11 @@  -- | Translation of @ImportDirective@. mapImportDir-  :: (Eq a, Eq b)-  => [ImportedName' (a,c) (b,d)]  -- ^ Translation of imported names.-  -> [ImportedName' (a,c) (b,d)]  -- ^ Translation of names defined by this import.-  -> ImportDirective' a b-  -> ImportDirective' c d+  :: (Eq n1, Eq m1)+  => [ImportedName' (n1,n2) (m1,m2)]  -- ^ Translation of imported names.+  -> [ImportedName' (n1,n2) (m1,m2)]  -- ^ Translation of names defined by this import.+  -> ImportDirective' n1 m1+  -> ImportDirective' n2 m2 mapImportDir src tgt (ImportDirective r u h ren open) =   ImportDirective r     (mapUsing src u)@@ -656,26 +702,32 @@  -- | Translation of @Using or Hiding@. mapUsing-  :: (Eq a, Eq b)-  => [ImportedName' (a,c) (b,d)] -- ^ Translation of names in @using@ or @hiding@ list.-  -> Using' a b-  -> Using' c d+  :: (Eq n1, Eq m1)+  => [ImportedName' (n1,n2) (m1,m2)] -- ^ Translation of names in @using@ or @hiding@ list.+  -> Using' n1 m1+  -> Using' n2 m2 mapUsing src UseEverything = UseEverything mapUsing src (Using  xs) = Using $ map (`lookupImportedName` src) xs  -- | Translation of @Renaming@. mapRenaming-  ::  (Eq a, Eq b)-  => [ImportedName' (a,c) (b,d)]  -- ^ Translation of 'renFrom' names.-  -> [ImportedName' (a,c) (b,d)]  -- ^ Translation of 'rento' names.-  -> Renaming' a b-  -> Renaming' c d+  ::  (Eq n1, Eq m1)+  => [ImportedName' (n1,n2) (m1,m2)]  -- ^ Translation of 'renFrom' names and module names.+  -> [ImportedName' (n1,n2) (m1,m2)]  -- ^ Translation of 'rento'   names and module names.+  -> Renaming' n1 m1  -- ^ Renaming before translation (1).+  -> Renaming' n2 m2  -- ^ Renaming after  translation (2). mapRenaming src tgt (Renaming from to r) =   Renaming (lookupImportedName from src) (lookupImportedName to tgt) r +data OpenKind = LetOpenModule | TopOpenModule++noGeneralizedVarsIfLetOpen :: OpenKind -> Scope -> Scope+noGeneralizedVarsIfLetOpen TopOpenModule = id+noGeneralizedVarsIfLetOpen LetOpenModule = disallowGeneralizedVars+ -- | Open a module.-openModule_ :: C.QName -> C.ImportDirective -> ScopeM A.ImportDirective-openModule_ cm dir = do+openModule_ :: OpenKind -> C.QName -> C.ImportDirective -> ScopeM A.ImportDirective+openModule_ kind cm dir = do   current <- getCurrentModule   m <- amodName <$> resolveModule cm   let acc | not (publicOpen dir)      = PrivateNS@@ -683,11 +735,17 @@           | otherwise                 = ImportedNS    -- Get the scope exported by module to be opened.-  (adir, s') <- applyImportDirectiveM cm dir . inScopeBecause (Opened cm) . removeOnlyQualified . restrictPrivate =<< getNamedScope m+  (adir, s') <- applyImportDirectiveM cm dir . inScopeBecause (Opened cm) .+                noGeneralizedVarsIfLetOpen kind .+                removeOnlyQualified . restrictPrivate =<< getNamedScope m   let s  = setScopeAccess acc s'   let ns = scopeNameSpace acc s-  checkForClashes ns   modifyCurrentScope (`mergeScope` s)+  -- Andreas, 2018-06-03, issue #3057:+  -- If we simply check for ambiguous exported identifiers _after_+  -- importing the new identifiers into the current scope, we also+  -- catch the case of importing an ambiguous identifier.+  checkForClashes    -- Importing names might shadow existing locals.   verboseS "scope.locals" 10 $ do@@ -706,25 +764,22 @@   where     -- Only checks for clashes that would lead to the same     -- name being exported twice from the module.-    checkForClashes new = when (publicOpen dir) $ do--        old <- allThingsInScope . restrictPrivate <$> (getNamedScope =<< getCurrentModule)+    checkForClashes = when (publicOpen dir) $ do -        let defClashes = Map.toList $ Map.intersectionWith (,) (nsNames new) (nsNames old)-            modClashes = Map.toList $ Map.intersectionWith (,) (nsModules new) (nsModules old)+        exported <- allThingsInScope . restrictPrivate <$> (getNamedScope =<< getCurrentModule) -            -- No ambiguity if concrete identifier is mapped to-            -- single, identical abstract identifiers.-            realClash (_, ([x],[y])) = x /= y-            realClash _              = True+        -- Get all exported concrete names that are mapped to at least 2 abstract names+        let defClashes = filter (\ (_c, as) -> length as >= 2) $ Map.toList $ nsNames exported+            modClashes = filter (\ (_c, as) -> length as >= 2) $ Map.toList $ nsModules exported              -- No ambiguity if concrete identifier is only mapped to             -- constructor names or only to projection names.-            defClash (_, (qs0, qs1)) = not $ all (== ConName) ks || all (==FldName) ks-              where ks = map anameKind $ qs0 ++ qs1+            defClash (_, qs) = not $ all (== ConName) ks || all (==FldName) ks+              where ks = map anameKind qs         -- We report the first clashing exported identifier.-        unlessNull (filter (\ x -> realClash x && defClash x) defClashes) $-          \ ((x, (_, q:_)) : _) -> typeError $ ClashingDefinition (C.QName x) (anameName q)+        unlessNull (filter (\ x -> defClash x) defClashes) $+          \ ((x, q:_) : _) -> typeError $ ClashingDefinition (C.QName x) $ anameName q -        unlessNull (filter realClash modClashes) $ \ ((_, (m0:_, m1:_)) : _) ->-          typeError $ ClashingModule (amodName m0) (amodName m1)+        unlessNull modClashes $ \ ((_, ms) : _) -> do+          caseMaybe (last2 ms) __IMPOSSIBLE__ $ \ (m0, m1) -> do+            typeError $ ClashingModule (amodName m0) (amodName m1)
src/full/Agda/Syntax/Translation/AbstractToConcrete.hs view
@@ -20,7 +20,7 @@     , abstractToConcreteCtx     , withScope     , preserveInteractionIds-    , AbsToCon, DontTouchMe, Env+    , AbsToCon, Env     , noTakenNames     ) where @@ -30,6 +30,7 @@ import Control.Monad.Reader import Control.Monad.State +import Data.Either import qualified Data.Map as Map import Data.Maybe import Data.Monoid@@ -44,7 +45,7 @@ import Agda.Syntax.Common import Agda.Syntax.Position import Agda.Syntax.Literal-import Agda.Syntax.Info+import Agda.Syntax.Info as A import Agda.Syntax.Internal (MetaId(..)) import qualified Agda.Syntax.Internal as I import Agda.Syntax.Fixity@@ -54,9 +55,10 @@ import Agda.Syntax.Abstract.Pattern as A import Agda.Syntax.Abstract.PatternSynonyms import Agda.Syntax.Scope.Base+import Agda.Syntax.Scope.Monad ( resolveName' )  import Agda.TypeChecking.Monad.State (getScope, getAllPatternSyns)-import Agda.TypeChecking.Monad.Base  (TCM, NamedMeta(..), stBuiltinThings, BuiltinThings, Builtin(..), pragmaOptions)+import Agda.TypeChecking.Monad.Base import Agda.TypeChecking.Monad.Debug import Agda.TypeChecking.Monad.Options import Agda.TypeChecking.Monad.Builtin@@ -73,14 +75,19 @@ import Agda.Utils.NonemptyList import Agda.Utils.Singleton import Agda.Utils.Tuple-import Agda.Utils.Pretty (prettyShow)+import Agda.Utils.Pretty  #include "undefined.h" import Agda.Utils.Impossible  -- Environment ------------------------------------------------------------ -data Env = Env { takenNames   :: Set C.Name+data Env = Env { takenVarNames :: Set A.Name+                  -- ^ Abstract names currently in scope. Unlike the+                  --   ScopeInfo, this includes names for hidden+                  --   arguments inserted by the system.+               , takenDefNames :: Set C.Name+                  -- ^ Concrete names of all definitions in scope                , currentScope :: ScopeInfo                , builtins     :: Map String A.QName                   -- ^ Certain builtins (like `fromNat`) have special printing@@ -100,19 +107,33 @@         Just v | Just q <- name v,                  noScopeCheck b || isNameInScope q scope -> return [(b, q)]         _                                                -> return []+  vars <- map (fst . unDom) <$> asksTC envContext++  -- pick concrete names for in-scope names now so we don't+  -- accidentally shadow them+  forM_ (scopeLocals scope) $ \(y , x) -> do+    pickConcreteName (localVar x) y+   builtinList <- concat <$> mapM builtin [ builtinFromNat, builtinFromString, builtinFromNeg, builtinZero, builtinSuc ]   foldPatSyns <- optPrintPatternSynonyms <$> pragmaOptions   return $-    Env { takenNames   = Set.union vars defs+    Env { takenVarNames = Set.fromList vars+        , takenDefNames = defs         , currentScope = scope         , builtins     = Map.fromList builtinList         , preserveIIds = False         , foldPatternSynonyms = foldPatSyns         }   where-    vars  = Set.fromList $ map fst $ scopeLocals scope-    defs  = Map.keysSet $ nsNames $ everythingInScope scope+    -- Jesper, 2018-12-10: It's fine to shadow generalizable names as+    -- they will never show up directly in printed terms.+    notGeneralizeName AbsName{ anameKind = k }  =+      not (k == GeneralizeName || k == DisallowedGeneralizeName) +    defs = Map.keysSet $+           Map.filter (all notGeneralizeName) $+           nsNames $ everythingInScope scope+ currentPrecedence :: AbsToCon PrecedenceStack currentPrecedence = asks $ scopePrecedence . currentScope @@ -132,7 +153,7 @@ withScope scope = local $ \e -> e { currentScope = scope }  noTakenNames :: AbsToCon a -> AbsToCon a-noTakenNames = local $ \e -> e { takenNames = Set.empty }+noTakenNames = local $ \e -> e { takenVarNames = Set.empty }  dontFoldPatternSynonyms :: AbsToCon a -> AbsToCon a dontFoldPatternSynonyms = local $ \ e -> e { foldPatternSynonyms = False }@@ -140,7 +161,7 @@ -- | Bind a concrete name to an abstract in the translation environment. addBinding :: C.Name -> A.Name -> Env -> Env addBinding y x e =-  e { takenNames   = Set.insert y $ takenNames e+  e { takenVarNames = Set.insert x $ takenVarNames e     , currentScope = (`updateScopeLocals` currentScope e) $         AssocList.insert y (LocalVar x __IMPOSSIBLE__ [])     }@@ -158,6 +179,7 @@ runAbsToCon :: AbsToCon c -> TCM c runAbsToCon m = do   scope <- getScope+  reportSLn "toConcrete" 50 $ render $ "entering AbsToCon with scope:" <+> prettyList_ (map (text . C.nameToRawName . fst) $ scopeLocals scope)   runReaderT m =<< makeEnv scope  abstractToConcreteScope :: ToConcrete a c => ScopeInfo -> a -> TCM c@@ -183,30 +205,28 @@ unsafeQNameToName :: C.QName -> C.Name unsafeQNameToName = C.unqualify -lookupName :: A.Name -> AbsToCon C.Name-lookupName x = do-  names <- asks $ scopeLocals . currentScope-  case lookup x $ mapMaybe (\ (c,x) -> (,c) <$> notShadowedLocal x) names of-      Just y  -> return y-      Nothing -> return $ nameConcrete x- lookupQName :: AllowAmbiguousNames -> A.QName -> AbsToCon C.QName+lookupQName ambCon x | Just s <- getGeneralizedFieldName x =+  return (C.QName $ C.Name noRange C.InScope $ C.stringNameParts s) lookupQName ambCon x = do   ys <- inverseScopeLookupName' ambCon x <$> asks currentScope   lift $ reportSLn "scope.inverse" 100 $     "inverse looking up abstract name " ++ prettyShow x ++ " yields " ++ prettyShow ys-  case ys of-    (y : _) -> return y-    [] -> do-      let y = qnameToConcrete x-      if isUnderscore y-        -- -- || any (isUnderscore . A.nameConcrete) (A.mnameToList $ A.qnameModule x)-        then return y-        else return $ C.Qual (C.Name noRange [Id empty]) y-        -- this is what happens for names that are not in scope (private names)+  loop ys +  where+    -- Found concrete name: check that it is not shadowed by a local+    loop (qy@Qual{}      : _ ) = return qy -- local names cannot be qualified+    loop (qy@(C.QName y) : ys) = lookupNameInScope y >>= \case+      Just x' | x' /= qnameName x -> loop ys+      _ -> return qy+    -- Found no concrete name: make up a new one+    loop [] = case qnameToConcrete x of+      qy@Qual{}    -> return $ setNotInScope qy+      qy@C.QName{} -> C.QName <$> chooseName (qnameName x)+ lookupModule :: A.ModuleName -> AbsToCon C.QName-lookupModule (A.MName []) = return $ C.QName $ C.Name noRange [Id "-1"]+lookupModule (A.MName []) = return $ C.QName $ C.Name noRange InScope [Id "-1"]   -- Andreas, 2016-10-10 it can happen that we have an empty module name   -- for instance when we query the current module inside the   -- frontmatter or module telescope of the top level module.@@ -219,25 +239,118 @@             []      -> return $ mnameToConcrete x                 -- this is what happens for names that are not in scope (private names) +-- | Is this concrete name currently in use by a particular abstract+--   name in the current scope?+lookupNameInScope :: C.Name -> AbsToCon (Maybe A.Name)+lookupNameInScope y =+  fmap localVar . lookup y . scopeLocals <$> asks currentScope++-- | Have we already committed to a specific concrete name for this+--   abstract name? If yes, return the concrete name(s).+hasConcreteNames :: (MonadTCState m) => A.Name -> m [C.Name]+hasConcreteNames x = Map.findWithDefault [] x <$> useTC stConcreteNames++-- | Commit to a specific concrete name for printing the given+--   abstract name. If the abstract name already has associated+---  concrete name(s), the new name is only used when all previous+---  names are shadowed. Precondition: the abstract name should be in+--   scope.+pickConcreteName :: (MonadTCState m) => A.Name -> C.Name -> m ()+pickConcreteName x y = modifyTCLens stConcreteNames $ flip Map.alter x $ \case+    Nothing   -> Just $ [y]+    (Just ys) -> Just $ ys ++ [y]++-- | For the given abstract name, return the names that could shadow it:+--   1. first set: names for which we have already picked a+--      concrete name (so we should definitely avoid these names)+--   2. second set: flexible names that we would like to keep free if+--      possible (we can try to avoid them, but it's not required)+shadowingNames :: (MonadTCState m) => A.Name -> m (Set C.Name, Set C.Name)+shadowingNames x = do+  shadows <- Map.findWithDefault [] x <$> useTC stShadowingNames+  ys <- concat <$> forM shadows hasConcreteNames+  let zs = map nameConcrete shadows+  return (Set.fromList ys , Set.fromList zs)++toConcreteName :: A.Name -> AbsToCon C.Name+toConcreteName x | y <- nameConcrete x , isNoName y = return y+toConcreteName x = (Map.findWithDefault [] x <$> useTC stConcreteNames) >>= loop+  where+    -- case: we already have picked some name(s) for x+    loop (y:ys) = ifM (isGoodName x y) (return y) (loop ys)++    -- case: we haven't picked a concrete name yet, or all previously+    -- picked names are shadowed, so we pick a new name now+    loop [] = do+      y <- chooseName x+      pickConcreteName x y+      return y++    -- Is 'y' a good concrete name for abstract name 'x'?+    isGoodName :: A.Name -> C.Name -> AbsToCon Bool+    isGoodName x y = do+      zs <- Set.toList <$> asks takenVarNames+      allM zs $ \z -> if x == z then return True else do+        czs <- hasConcreteNames z+        return $ all (/= y) czs+++-- | Choose a new unshadowed name for the given abstract name+chooseName :: A.Name -> AbsToCon C.Name+chooseName x = lookupNameInScope (nameConcrete x) >>= \case+  -- If the name is currently in scope, we do not rename it+  Just x' | x == x' -> do+    reportSLn "toConcrete.bindName" 80 $+      "name " ++ C.nameToRawName (nameConcrete x) ++ " already in scope, so not renaming"+    return $ nameConcrete x+  -- Otherwise we pick a name that does not shadow other names+  _ -> do+    taken   <- takenConcreteNames+    toAvoid <- do+      (mustAvoid , tryToAvoid) <- shadowingNames x+      let tryToAvoid' = Set.filter ((== InScope) . isInScope) tryToAvoid+      return $ case isInScope x of+        -- If in scope, we only rename when the name is already taken+        -- in the future+        InScope    -> mustAvoid+        -- If not in scope, we also rename to avoid renaming in-scope+        -- variables in the future.+        C.NotInScope -> mustAvoid `Set.union` tryToAvoid'+    let shouldAvoid = (`Set.member` (taken `Set.union` toAvoid))+        y = firstNonTakenName shouldAvoid $ nameConcrete x+    reportSLn "toConcrete.bindName" 80 $ render $ vcat+      [ "picking concrete name for:" <+> text (C.nameToRawName $ nameConcrete x)+      , "names already taken:      " <+> prettyList_ (map C.nameToRawName $ Set.toList taken)+      , "names to avoid:           " <+> prettyList_ (map C.nameToRawName $ Set.toList toAvoid)+      , "concrete name chosen:     " <+> text (C.nameToRawName y)+      ]+    return y++  where+    takenConcreteNames :: AbsToCon (Set C.Name)+    takenConcreteNames = do+      xs <- asks takenDefNames+      ys0 <- asks takenVarNames+      reportSLn "toConcrete.bindName" 90 $ render $ "abstract names of local vars: " <+> prettyList_ (map (C.nameToRawName . nameConcrete) $ Set.toList ys0)+      ys <- Set.fromList . concat <$> mapM hasConcreteNames (Set.toList ys0)+      return $ xs `Set.union` ys++ -- | Add a abstract name to the scope and produce an available concrete version of it. bindName :: A.Name -> (C.Name -> AbsToCon a) -> AbsToCon a bindName x ret = do-  let y = nameConcrete x-  if isNoName y then ret y else do-    names <- asks takenNames-    let loop x = do-          let y = nameConcrete x-          if y `Set.member` names then loop $ nextName x-          else local (addBinding y x) $ ret y-    loop x-+  y <- toConcreteName x+  reportSLn "toConcrete.bindName" 30 $ "adding " ++ (C.nameToRawName $ nameConcrete x) ++ " to the scope under concrete name " ++ C.nameToRawName y+  local (addBinding y x) $ ret y  -- | Like 'bindName', but do not care whether name is already taken. bindName' :: A.Name -> AbsToCon a -> AbsToCon a-bindName' x = applyUnless (isNoName y) $ local $ addBinding y x+bindName' x ret = do+  reportSLn "toConcrete.bindName" 30 $ "adding " ++ (C.nameToRawName $ nameConcrete x) ++ " to the scope with forced name"+  pickConcreteName x y+  applyUnless (isNoName y) (local $ addBinding y x) ret   where y = nameConcrete x - -- Dealing with precedences -----------------------------------------------  -- | General bracketing function.@@ -305,8 +418,8 @@ withAbstractPrivate :: DefInfo -> AbsToCon [C.Declaration] -> AbsToCon [C.Declaration] withAbstractPrivate i m =     priv (defAccess i)-      . abst (defAbstract i)-      . addInstanceB (defInstance i == InstanceDef)+      . abst (A.defAbstract i)+      . addInstanceB (A.defInstance i == InstanceDef)       <$> m     where         priv (PrivateAccess UserWritten)@@ -420,20 +533,15 @@     toConcrete (Named n x) = Named n <$> toConcrete x     bindToConcrete (Named n x) ret = bindToConcrete x $ ret . Named n -newtype DontTouchMe a = DontTouchMe a--instance ToConcrete (DontTouchMe a) a where-    toConcrete (DontTouchMe x) = return x- -- Names ------------------------------------------------------------------  instance ToConcrete A.Name C.Name where-  toConcrete       = lookupName+  toConcrete       = toConcreteName   bindToConcrete x = bindName x -instance ToConcrete BindName C.Name where-  toConcrete       = lookupName . unBind-  bindToConcrete x = bindName (unBind x)+instance ToConcrete BindName C.BoundName where+  toConcrete       = fmap C.mkBoundName_ . toConcreteName . unBind+  bindToConcrete x = bindName (unBind x) . (. C.mkBoundName_)  instance ToConcrete A.QName C.QName where   toConcrete = lookupQName AmbiguousConProjs@@ -447,7 +555,7 @@ -- | Assumes name is not 'UnknownName'. instance ToConcrete ResolvedName C.QName where   toConcrete = \case-    VarName x _          -> C.QName <$> lookupName x+    VarName x _          -> C.QName <$> toConcrete x     DefinedName _ x      -> toConcrete x     FieldName xs         -> toConcrete (headNe xs)     ConstructorName xs   -> toConcrete (headNe xs)@@ -495,11 +603,11 @@       --  fromString "foo" --> "foo"       -- Only when the corresponding conversion function is in scope and was       -- inserted by the system.-      case (e1, namedArg e2) of-        (A.Def q, l@A.Lit{})+      case (getHead e1, namedArg e2) of+        (Just (HdDef q), l@A.Lit{})           | any (is q) [builtinFromNat, builtinFromString], visible e2,             getOrigin i == Inserted -> toConcrete l-        (A.Def q, A.Lit (LitNat r n))+        (Just (HdDef q), A.Lit (LitNat r n))           | q `is` builtinFromNeg, visible e2,             getOrigin i == Inserted -> toConcrete (A.Lit (LitNat r (-n)))         _ ->@@ -525,20 +633,20 @@         $ bracket lamBrackets         $ case lamView e of             (bs, e) ->-                bindToConcrete (map makeDomainFree bs) $ \bs -> do+                bindToConcrete (map makeDomainFree bs) $ \ bs -> do                     e  <- toConcreteTop e-                    return $ C.Lam (getRange i) (concat bs) e+                    return $ C.Lam (getRange i) bs e         where-            lamView (A.Lam _ b@(A.DomainFree _ _) e) =+            lamView (A.Lam _ b@(A.DomainFree _) e) =                 case lamView e of-                    ([], e)                        -> ([b], e)-                    (bs@(A.DomainFree _ _ : _), e) -> (b:bs, e)-                    _                              -> ([b], e)+                    ([], e)                      -> ([b], e)+                    (bs@(A.DomainFree _ : _), e) -> (b:bs, e)+                    _                            -> ([b], e)             lamView (A.Lam _ b@(A.DomainFull _) e) =                 case lamView e of-                    ([], e)                        -> ([b], e)-                    (bs@(A.DomainFull _ : _), e)   -> (b:bs, e)-                    _                              -> ([b], e)+                    ([], e)                      -> ([b], e)+                    (bs@(A.DomainFull _ : _), e) -> (b:bs, e)+                    _                            -> ([b], e)             lamView e = ([], e)     toConcrete (A.ExtendedLam i di qname cs) =         bracket lamBrackets $ do@@ -554,6 +662,12 @@               removeApp (C.AppP p np) = do                 p <- removeApp p                 return $ C.AppP p np++              -- Andreas, 2018-06-18, issue #3136+              -- Empty pattern list also allowed in extended lambda,+              -- thus, we might face the unapplied .extendedlambda identifier.+              removeApp x@C.IdentP{} = return $ C.RawAppP (getRange x) []+               removeApp p = do                 lift $ reportSLn "extendedlambda" 50 $ "abstractToConcrete removeApp p = " ++ show p                 return p -- __IMPOSSIBLE__ -- Andreas, this is actually not impossible, my strictification exposed this sleeping bug@@ -569,18 +683,22 @@     toConcrete t@(A.Pi i _ _)  = case piTel t of       (tel, e) ->         bracket piBrackets-        $ bindToConcrete tel $ \b' -> do+        $ bindToConcrete tel $ \ tel' -> do              e' <- toConcreteTop e-             return $ C.Pi (concat b') e'+             return $ C.Pi tel' e'       where         piTel (A.Pi _ tel e) = (tel ++) -*- id $ piTel e         piTel e              = ([], e) +    toConcrete (A.Generalized _ e) = C.Generalized <$> toConcrete e+     toConcrete (A.Fun i a b) =         bracket piBrackets         $ do a' <- toConcreteCtx (if irr then DotPatternCtx else FunctionSpaceDomainCtx) a              b' <- toConcreteTop b-             return $ C.Fun (getRange i) (addRel a' $ mkArg a') b'+             return $ C.Fun (getRange i) (defaultArg $ addRel a' $ mkArg a') b'+             -- Andreas, 2018-06-14, issue #2513+             -- TODO: print attributes         where             irr        = getRelevance a `elem` [Irrelevant, NonStrict]             addRel a e = case getRelevance a of@@ -595,7 +713,8 @@      toConcrete (A.Set i 0)  = return $ C.Set (getRange i)     toConcrete (A.Set i n)  = return $ C.SetN (getRange i) n-    toConcrete (A.Prop i)   = return $ C.Prop (getRange i)+    toConcrete (A.Prop i 0) = return $ C.Prop (getRange i)+    toConcrete (A.Prop i n) = return $ C.PropN (getRange i) n      toConcrete (A.Let i ds e) =         bracket lamBrackets@@ -611,9 +730,7 @@       bracket appBrackets $ do         C.RecUpdate (getRange i) <$> toConcrete e <*> toConcreteTop fs -    toConcrete (A.ETel tel) = do-      tel <- concat <$> toConcrete tel-      return $ C.ETel tel+    toConcrete (A.ETel tel) = C.ETel <$> toConcrete tel      toConcrete (A.ScopedExpr _ e) = toConcrete e @@ -641,9 +758,10 @@     toConcrete (A.PatternSyn n) = C.Ident <$> toConcrete (headAmbQ n)  makeDomainFree :: A.LamBinding -> A.LamBinding-makeDomainFree b@(A.DomainFull (A.TypedBindings r (Arg info (A.TBind _ [WithHiding h x] t)))) =+makeDomainFree b@(A.DomainFull (A.TBind _ [x] t)) =   case unScope t of-    A.Underscore MetaInfo{metaNumber = Nothing} -> A.DomainFree (mapHiding (mappend h) info) x+    A.Underscore A.MetaInfo{metaNumber = Nothing} ->+      A.DomainFree x     _ -> b makeDomainFree b = b @@ -661,50 +779,37 @@  -- Binder instances ------------------------------------------------------- -instance ToConcrete A.LamBinding [C.LamBinding] where-    bindToConcrete (A.DomainFree info x) ret = bindToConcrete (unBind x) $ ret . (:[]) . C.DomainFree info . mkBoundName_-    bindToConcrete (A.DomainFull b)      ret = bindToConcrete b $ ret . map C.DomainFull--instance ToConcrete A.TypedBindings [C.TypedBindings] where-  bindToConcrete (A.TypedBindings r bs) ret =-    bindToConcrete bs $ \cbs ->-    ret (map (C.TypedBindings r) $ recoverLabels bs cbs)-    where-      recoverLabels :: Arg A.TypedBinding -> Arg C.TypedBinding -> [Arg C.TypedBinding]-      recoverLabels b cb-        | visible b = [cb]   -- We don't care about labels for explicit args-        | otherwise = traverse (recover (unArg b)) cb--      recover (A.TBind _ xs _) (C.TBind r ys e) = tbind r e (zipWith label (map (fmap unBind) xs) ys)-      recover A.TLet{}         c@C.TLet{}       = [c]-      recover _ _ = __IMPOSSIBLE__--      tbinds r e [] = []-      tbinds r e xs = [ C.TBind r xs e ]--      tbind r e xs =-        case span ((\ x -> boundLabel x == boundName x) . dget) xs of-          (xs, x:ys) -> tbinds r e xs ++ [ C.TBind r [x] e ] ++ tbind r e ys-          (xs, [])   -> tbinds r e xs+-- If there is no label we set it to the bound name, to make renaming the bound+-- name safe.+forceNameIfHidden :: NamedArg A.BindName -> NamedArg A.BindName+forceNameIfHidden x+  | isJust $ nameOf $ unArg x = x+  | visible x                 = x+  | otherwise                 = x <&> \ y -> y { nameOf = Just name }+  where+    name = Ranged (getRange x) $ C.nameToRawName $ nameConcrete $ unBind $ namedArg x -      label x = fmap $ \ y -> y { boundLabel = nameConcrete $ dget x }+instance ToConcrete A.LamBinding C.LamBinding where+    bindToConcrete (A.DomainFree x) ret =+        bindToConcrete (forceNameIfHidden x) $ ret . C.DomainFree+    bindToConcrete (A.DomainFull b) ret = bindToConcrete b $ ret . C.DomainFull  instance ToConcrete A.TypedBinding C.TypedBinding where     bindToConcrete (A.TBind r xs e) ret =-        bindToConcrete xs $ \ xs -> do+        bindToConcrete (map forceNameIfHidden xs) $ \ xs -> do         e <- toConcreteTop e-        ret $ C.TBind r (map (fmap mkBoundName_) xs) e+        ret $ C.TBind r xs e     bindToConcrete (A.TLet r lbs) ret =         bindToConcrete lbs $ \ ds -> do         ret $ C.TLet r $ concat ds  instance ToConcrete LetBinding [C.Declaration] where     bindToConcrete (LetBind i info x t e) ret =-        bindToConcrete x $ \x ->-        do (t,(e, [], [], [])) <- toConcrete (t, A.RHS e Nothing)+        bindToConcrete x $ \ x ->+        do (t, (e, [], [], [])) <- toConcrete (t, A.RHS e Nothing)            ret $ addInstanceB (isInstance info) $-               [ C.TypeSig info x t-               , C.FunClause (C.LHS (C.IdentP $ C.QName x) [] [])+               [ C.TypeSig info (C.boundName x) t+               , C.FunClause (C.LHS (C.IdentP $ C.QName $ C.boundName x) [] [])                              e C.NoWhere False                ]     -- TODO: bind variables@@ -743,10 +848,10 @@     ret . AnyWhere =<< declsToConcrete ds  mergeSigAndDef :: [C.Declaration] -> [C.Declaration]-mergeSigAndDef (C.RecordSig _ x bs e : C.Record r y ind eta c _ Nothing fs : ds)-  | x == y = C.Record r y ind eta c bs (Just e) fs : mergeSigAndDef ds-mergeSigAndDef (C.DataSig _ _ x bs e : C.Data r i y _ Nothing cs : ds)-  | x == y = C.Data r i y bs (Just e) cs : mergeSigAndDef ds+mergeSigAndDef (C.RecordSig _ x bs e : C.RecordDef r y ind eta c _ fs : ds)+  | x == y = C.Record r y ind eta c bs e fs : mergeSigAndDef ds+mergeSigAndDef (C.DataSig _ _ x bs e : C.DataDef r i y _ cs : ds)+  | x == y = C.Data r i y bs e cs : mergeSigAndDef ds mergeSigAndDef (d : ds) = d : mergeSigAndDef ds mergeSigAndDef [] = [] @@ -812,20 +917,20 @@ instance ToConcrete A.ModuleApplication C.ModuleApplication where   toConcrete (A.SectionApp tel y es) = do     y  <- toConcreteCtx FunctionCtx y-    bindToConcrete tel $ \tel -> do+    bindToConcrete tel $ \ tel -> do       es <- toConcreteCtx argumentCtx_ es       let r = fuseRange y es-      return $ C.SectionApp r (concat tel) (foldl (C.App r) (C.Ident y) es)+      return $ C.SectionApp r tel (foldl (C.App r) (C.Ident y) es) -  toConcrete (A.RecordModuleIFS recm) = do+  toConcrete (A.RecordModuleInstance recm) = do     recm <- toConcrete recm-    return $ C.RecordModuleIFS (getRange recm) recm+    return $ C.RecordModuleInstance (getRange recm) recm  instance ToConcrete A.Declaration [C.Declaration] where   toConcrete (ScopedDecl scope ds) =     withScope scope (declsToConcrete ds) -  toConcrete (Axiom _ i info mp x t) = do+  toConcrete (A.Axiom _ i info mp x t) = do     x' <- unsafeQNameToName <$> toConcrete x     withAbstractPrivate i $       withInfixDecl i x'  $ do@@ -836,12 +941,19 @@            Just occs -> [C.Pragma (PolarityPragma noRange x' occs)]) ++         [C.Postulate (getRange i) [C.TypeSig info x' t']] +  toConcrete (A.Generalize s i j x t) = do+    x' <- unsafeQNameToName <$> toConcrete x+    withAbstractPrivate i $+      withInfixDecl i x'  $ do+      t' <- toConcreteTop t+      return [C.Generalize (getRange i) [C.TypeSig j x' $ C.Generalized t']]+   toConcrete (A.Field i x t) = do     x' <- unsafeQNameToName <$> toConcrete x     withAbstractPrivate i $       withInfixDecl i x'  $ do       t' <- toConcreteTop t-      return [C.Field (defInstance i) x' t']+      return [C.Field (A.defInstance i) x' t']    toConcrete (A.Primitive i x t) = do     x' <- unsafeQNameToName <$> toConcrete x@@ -856,37 +968,37 @@    toConcrete (A.DataSig i x bs t) =     withAbstractPrivate i $-    bindToConcrete bs $ \tel' -> do+    bindToConcrete (A.generalizeTel bs) $ \ tel' -> do       x' <- unsafeQNameToName <$> toConcrete x       t' <- toConcreteTop t-      return [ C.DataSig (getRange i) Inductive x' (map C.DomainFull $ concat tel') t' ]+      return [ C.DataSig (getRange i) Inductive x' (map C.DomainFull tel') t' ] -  toConcrete (A.DataDef i x bs cs) =+  toConcrete (A.DataDef i x uc bs cs) =     withAbstractPrivate i $-    bindToConcrete (map makeDomainFree bs) $ \tel' -> do+    bindToConcrete (map makeDomainFree $ dataDefParams bs) $ \ tel' -> do       (x',cs') <- (unsafeQNameToName -*- id) <$> toConcrete (x, map Constr cs)-      return [ C.Data (getRange i) Inductive x' (concat tel') Nothing cs' ]+      return [ C.DataDef (getRange i) Inductive x' tel' cs' ]    toConcrete (A.RecSig i x bs t) =     withAbstractPrivate i $-    bindToConcrete bs $ \tel' -> do+    bindToConcrete (A.generalizeTel bs) $ \ tel' -> do       x' <- unsafeQNameToName <$> toConcrete x       t' <- toConcreteTop t-      return [ C.RecordSig (getRange i) x' (map C.DomainFull $ concat tel') t' ]+      return [ C.RecordSig (getRange i) x' (map C.DomainFull tel') t' ] -  toConcrete (A.RecDef  i x ind eta c bs t cs) =+  toConcrete (A.RecDef  i x uc ind eta c bs t cs) =     withAbstractPrivate i $-    bindToConcrete (map makeDomainFree bs) $ \tel' -> do+    bindToConcrete (map makeDomainFree $ dataDefParams bs) $ \ tel' -> do       (x',cs') <- (unsafeQNameToName -*- id) <$> toConcrete (x, map Constr cs)-      return [ C.Record (getRange i) x' ind eta Nothing (concat tel') Nothing cs' ]+      return [ C.RecordDef (getRange i) x' ind eta Nothing tel' cs' ]    toConcrete (A.Mutual i ds) = declsToConcrete ds -  toConcrete (A.Section i x tel ds) = do+  toConcrete (A.Section i x (A.GeneralizeTel _ tel) ds) = do     x <- toConcrete x-    bindToConcrete tel $ \tel -> do+    bindToConcrete tel $ \ tel -> do       ds <- declsToConcrete ds-      return [ C.Module (getRange i) x (concat tel) ds ]+      return [ C.Module (getRange i) x tel ds ]    toConcrete (A.Apply i x modapp _ _) = do     x  <- unsafeQNameToName <$> toConcrete x@@ -932,33 +1044,12 @@ instance ToConcrete RangeAndPragma C.Pragma where   toConcrete (RangeAndPragma r p) = case p of     A.OptionsPragma xs  -> return $ C.OptionsPragma r xs-    A.BuiltinPragma b x      -> C.BuiltinPragma r b <$> toConcrete x-    A.BuiltinNoDefPragma b x -> C.BuiltinPragma r b <$> toConcrete x-    A.RewritePragma x        -> C.RewritePragma r . singleton <$> toConcrete x-    A.CompiledTypePragma x hs -> do-      x <- toConcrete x-      return $ C.CompiledTypePragma r x hs-    A.CompiledDataPragma x hs hcs -> do-      x <- toConcrete x-      return $ C.CompiledDataPragma r x hs hcs-    A.CompiledPragma x hs -> do-      x <- toConcrete x-      return $ C.CompiledPragma r x hs+    A.BuiltinPragma b x       -> C.BuiltinPragma r b <$> toConcrete x+    A.BuiltinNoDefPragma b x  -> C.BuiltinPragma r b <$> toConcrete x+    A.RewritePragma x         -> C.RewritePragma r . singleton <$> toConcrete x     A.CompilePragma b x s -> do       x <- toConcrete x       return $ C.CompilePragma r b x s-    A.CompiledExportPragma x hs -> do-      x <- toConcrete x-      return $ C.CompiledExportPragma r x hs-    A.CompiledJSPragma x e -> do-      x <- toConcrete x-      return $ C.CompiledJSPragma r x e-    A.CompiledUHCPragma x cr -> do-      x <- toConcrete x-      return $ C.CompiledUHCPragma r x cr-    A.CompiledDataUHCPragma x crd crcs -> do-      x <- toConcrete x-      return $ C.CompiledDataUHCPragma r x crd crcs     A.StaticPragma x -> C.StaticPragma r <$> toConcrete x     A.InjectivePragma x -> C.InjectivePragma r <$> toConcrete x     A.InlinePragma b x -> C.InlinePragma r b <$> toConcrete x@@ -987,23 +1078,30 @@ newtype UserPattern a  = UserPattern a newtype SplitPattern a = SplitPattern a newtype BindingPattern = BindingPat A.Pattern-newtype FreshName = FreshenName BindName+newtype FreshenName = FreshenName BindName -instance ToConcrete FreshName A.Name where+instance ToConcrete FreshenName A.Name where   bindToConcrete (FreshenName (BindName x)) ret = bindToConcrete x $ \ y -> ret x { nameConcrete = y }  -- Pass 1: (Issue #2729) -- Takes care of binding the originally user-written pattern variables, but doesn't actually -- translate anything to Concrete. instance ToConcrete (UserPattern A.Pattern) A.Pattern where-  bindToConcrete (UserPattern p) ret =+  bindToConcrete (UserPattern p) ret = do+    reportSLn "toConcrete.pat" 100 $ "binding pattern (pass 1)" ++ show p     case p of-      A.VarP x               -> bindName' (unBind x) $ ret $ A.VarP x+      A.VarP bx -> do+        let x = unBind bx+        case isInScope x of+          InScope            -> bindName' x $ ret $ A.VarP bx+          C.NotInScope       -> bindName x $ \y ->+                                ret $ A.VarP $ BindName $ x { nameConcrete = y }       A.WildP{}              -> ret p       A.ProjP{}              -> ret p       A.AbsurdP{}            -> ret p       A.LitP{}               -> ret p       A.DotP{}               -> ret p+      A.EqualP{}             -> ret p       -- Andreas, 2017-09-03, issue #2729:       -- Do not go into patterns generated by case-split here!       -- They are treated in a second pass.@@ -1026,7 +1124,8 @@  -- Pass 2a: locate case-split pattern.  Don't bind anything! instance ToConcrete (SplitPattern A.Pattern) A.Pattern where-  bindToConcrete (SplitPattern p) ret =+  bindToConcrete (SplitPattern p) ret = do+    reportSLn "toConcrete.pat" 100 $ "binding pattern (pass 2a)" ++ show p     case p of       A.VarP x               -> ret p       A.WildP{}              -> ret p@@ -1034,6 +1133,7 @@       A.AbsurdP{}            -> ret p       A.LitP{}               -> ret p       A.DotP{}               -> ret p+      A.EqualP{}             -> ret p       -- Andreas, 2017-09-03, issue #2729:       -- For patterns generated by case-split here, switch to freshening & binding.       A.ConP i c args@@ -1058,7 +1158,8 @@ -- Takes care of freshening and binding pattern variables introduced by case split. -- Still does not translate anything to Concrete. instance ToConcrete BindingPattern A.Pattern where-  bindToConcrete (BindingPat p) ret =+  bindToConcrete (BindingPat p) ret = do+    reportSLn "toConcrete.pat" 100 $ "binding pattern (pass 2b)" ++ show p     case p of       A.VarP x               -> bindToConcrete (FreshenName x) $ ret . A.VarP . BindName       A.WildP{}              -> ret p@@ -1066,6 +1167,7 @@       A.AbsurdP{}            -> ret p       A.LitP{}               -> ret p       A.DotP{}               -> ret p+      A.EqualP{}             -> ret p       A.ConP i c args        -> bindToConcrete ((map . fmap . fmap) BindingPat args) $ ret . A.ConP i c       A.DefP i f args        -> bindToConcrete ((map . fmap . fmap) BindingPat args) $ ret . A.DefP i f       A.PatternSynP i f args -> bindToConcrete ((map . fmap . fmap) BindingPat args) $ ret . A.PatternSynP i f@@ -1084,7 +1186,7 @@   toConcrete p =     case p of       A.VarP x ->-        C.IdentP . C.QName <$> toConcrete x+        C.IdentP . C.QName . C.boundName <$> toConcrete x        A.WildP i ->         return $ C.WildP (getRange i)@@ -1097,8 +1199,8 @@       A.DefP i x args -> tryOp (headAmbQ x) (A.DefP i x)  args        A.AsP i x p -> do-        (x, p) <- toConcreteCtx argumentCtx_ (x,p)-        return $ C.AsP (getRange i) x p+        (x, p) <- toConcreteCtx argumentCtx_ (x, p)+        return $ C.AsP (getRange i) (C.boundName x) p        A.AbsurdP i ->         return $ C.AbsurdP (getRange i)@@ -1109,14 +1211,32 @@       A.LitP l ->         return $ C.LitP l -      A.DotP i e -> do-        c <- toConcreteCtx DotPatternCtx e-        case c of-          -- Andreas, 2016-02-04 print ._ pattern as _ pattern,-          -- following the fusing of WildP and ImplicitP.-          C.Underscore{} -> return $ C.WildP $ getRange i-          _ -> return $ C.DotP (getRange i) c+      -- Andreas, 2018-06-19, issue #3130+      -- Print .p as .(p) if p is a projection+      -- to avoid confusion with projection pattern.+      A.DotP i e@A.Proj{} -> C.DotP r . C.Paren r <$> toConcreteCtx TopCtx e+        where r = getRange i +      -- gallais, 2019-02-12, issue #3491+      -- Print p as .(p) if p is a variable but there is a projection of the+      -- same name in scope.+      A.DotP i e@(A.Var v) -> do+        let r = getRange i+        -- Erase @v@ to a concrete name and resolve it back to check whether+        -- we have a conflicting field name.+        cn <- toConcreteName v+        liftTCM (resolveName' [FldName] Nothing (C.QName cn)) >>= \case+          -- If we do then we print .(v) rather than .v+          FieldName{} -> do+            reportSLn "print.dotted" 50 $ "Wrapping ambiguous name " ++ show (nameConcrete v)+            C.DotP r . C.Paren r <$> toConcrete (A.Var v)+          _ -> printDotDefault i e++      A.DotP i e -> printDotDefault i e++      A.EqualP i es -> do+        C.EqualP (getRange i) <$> toConcrete es+       A.PatternSynP i n args -> tryOp (headAmbQ n) (A.PatternSynP i n) args        A.RecP i as ->@@ -1125,6 +1245,17 @@       A.WithP i p -> C.WithP (getRange i) <$> toConcreteCtx WithArgCtx p      where++    printDotDefault :: PatInfo -> A.Expr -> AbsToCon C.Pattern+    printDotDefault i e = do+      c <- toConcreteCtx DotPatternCtx e+      let r = getRange i+      case c of+        -- Andreas, 2016-02-04 print ._ pattern as _ pattern,+        -- following the fusing of WildP and ImplicitP.+        C.Underscore{} -> return $ C.WildP r+        _ -> return $ C.DotP r c+     tryOp :: A.QName -> (A.Patterns -> A.Pattern) -> A.Patterns -> AbsToCon C.Pattern     tryOp x f args = do       -- Andreas, 2016-02-04, Issue #1792@@ -1140,24 +1271,7 @@     applyTo args c = bracketP_ (appBracketsArgs args) $ do       foldl C.AppP c <$> toConcreteCtx argumentCtx_ args ---- Helpers for recovering C.OpApp --------------------------------------------data Hd = HdVar A.Name | HdCon A.QName | HdDef A.QName | HdSyn A.QName--cOpApp :: Range -> C.QName -> A.Name -> [Maybe C.Expr] -> C.Expr-cOpApp r x n es =-  C.OpApp r x (Set.singleton n)-          (map (defaultNamedArg . placeholder) eps)-  where-    x0 = C.unqualify x-    positions | isPrefix  x0 =                [ Middle | _ <- drop 1 es ] ++ [End]-              | isPostfix x0 = [Beginning] ++ [ Middle | _ <- drop 1 es ]-              | isInfix x0   = [Beginning] ++ [ Middle | _ <- drop 2 es ] ++ [End]-              | otherwise    =                [ Middle | _ <- es ]-    eps = zip es positions-    placeholder (Nothing, pos) = Placeholder pos-    placeholder (Just e,  _)   = noPlaceholder (Ordinary e)+-- Helpers for recovering natural number literals  tryToRecoverNatural :: A.Expr -> AbsToCon C.Expr -> AbsToCon C.Expr tryToRecoverNatural e def = do@@ -1174,9 +1288,52 @@     explore isZero isSuc k (A.Lit (LitNat _ l)) = Just (k + l)     explore _ _ _ _                             = Nothing +-- Helpers for recovering C.OpApp ------------------------------------------++data Hd = HdVar A.Name | HdCon A.QName | HdDef A.QName | HdSyn A.QName++data MaybeSection a+  = YesSection+  | NoSection a+  deriving (Eq, Show, Functor, Foldable, Traversable)++fromNoSection :: a -> MaybeSection a -> a+fromNoSection fallback = \case+  YesSection  -> fallback+  NoSection x -> x++instance HasRange a => HasRange (MaybeSection a) where+  getRange = \case+    YesSection  -> noRange+    NoSection a -> getRange a++getHead :: A.Expr -> Maybe Hd+getHead (Var x)          = Just (HdVar x)+getHead (Def f)          = Just (HdDef f)+getHead (Proj o f)       = Just (HdDef $ headAmbQ f)+getHead (Con c)          = Just (HdCon $ headAmbQ c)+getHead (A.PatternSyn n) = Just (HdSyn $ headAmbQ n)+getHead _                = Nothing++cOpApp :: Range -> C.QName -> A.Name -> [MaybeSection C.Expr] -> C.Expr+cOpApp r x n es =+  C.OpApp r x (Set.singleton n)+          (map (defaultNamedArg . placeholder) eps)+  where+    x0 = C.unqualify x+    positions | isPrefix  x0 =                [ Middle | _ <- drop 1 es ] ++ [End]+              | isPostfix x0 = [Beginning] ++ [ Middle | _ <- drop 1 es ]+              | isInfix x0   = [Beginning] ++ [ Middle | _ <- drop 2 es ] ++ [End]+              | otherwise    =                [ Middle | _ <- es ]+    eps = zip es positions+    placeholder (YesSection , pos ) = Placeholder pos+    placeholder (NoSection e, _pos) = noPlaceholder (Ordinary e)+ tryToRecoverOpApp :: A.Expr -> AbsToCon C.Expr -> AbsToCon C.Expr-tryToRecoverOpApp e def = caseMaybeM (recoverOpApp bracket (isLambda . defaultNamedArg) cOpApp view e) def return+tryToRecoverOpApp e def = fromMaybeM def $+  recoverOpApp bracket (isLambda . defaultNamedArg) cOpApp view e   where+    view :: A.Expr -> Maybe (Hd, [NamedArg (MaybeSection (AppInfo, A.Expr))])     view e         -- Do we have a series of inserted lambdas?       | Just xs@(_:_) <- traverse insertedName bs =@@ -1186,14 +1343,14 @@         Application hd args = A.appView' body          -- Only inserted domain-free visible lambdas come from sections.-        insertedName (A.DomainFree i x)-          | getOrigin i == Inserted && visible i = Just x+        insertedName (A.DomainFree x)+          | getOrigin x == Inserted && visible x = Just $ namedArg x         insertedName _ = Nothing          -- Build section arguments. Need to check that:         -- lambda bound variables appear in the right order and only as         -- top-level arguments.-        sectionArgs :: [A.Name] -> [NamedArg (AppInfo, A.Expr)] -> Maybe [NamedArg (Maybe (AppInfo, A.Expr))]+        sectionArgs :: [A.Name] -> [NamedArg (AppInfo, A.Expr)] -> Maybe [NamedArg (MaybeSection (AppInfo, A.Expr))]         sectionArgs xs = go xs           where             noXs = getAll . foldExpr (\ case A.Var x -> All (notElem x xs)@@ -1202,42 +1359,43 @@             go (y : ys) (arg : args)               | visible arg               , A.Var y' <- snd $ namedArg arg-              , y == y' = (fmap (Nothing <$) arg :) <$> go ys args+              , y == y' = (fmap (YesSection <$) arg :) <$> go ys args             go ys (arg : args)-              | visible arg, noXs arg = ((fmap . fmap) Just arg :) <$> go ys args+              | visible arg, noXs arg = ((fmap . fmap) NoSection arg :) <$> go ys args             go _ _ = Nothing -    view e = (, (map . fmap . fmap) Just args) <$> getHead hd+    view e = (, (map . fmap . fmap) NoSection args) <$> getHead hd       where Application hd args = A.appView' e -    getHead (Var x)          = Just (HdVar x)-    getHead (Def f)          = Just (HdDef f)-    getHead (Con c)          = Just (HdCon $ headAmbQ c)-    getHead (A.PatternSyn n) = Just (HdSyn $ headAmbQ n)-    getHead _                = Nothing- tryToRecoverOpAppP :: A.Pattern -> AbsToCon (Maybe C.Pattern)-tryToRecoverOpAppP = recoverOpApp bracketP_ (const False) opApp view+tryToRecoverOpAppP p = do+  res <- recoverOpApp bracketP_ (const False) opApp view p+  lift $ reportSLn "print.op" 90 $ unlines+    [ "tryToRecoverOpApp"+    , "in:  " ++ show p+    , "out: " ++ show res+    ]+  return res   where-    opApp r x n ps =-      C.OpAppP r x (Set.singleton n) (map (defaultNamedArg . fromjust) ps)-    fromjust (Just x) = x-    fromjust Nothing  = __IMPOSSIBLE__  -- `view` does not generate any `Nothing`s+    opApp r x n ps = C.OpAppP r x (Set.singleton n) $+      map (defaultNamedArg . fromNoSection __IMPOSSIBLE__) ps+      -- `view` does not generate any `Nothing`s      appInfo = defaultAppInfo_ +    view :: A.Pattern -> Maybe (Hd, [NamedArg (MaybeSection (AppInfo, A.Pattern))])     view p = case p of-      ConP _        cs ps -> Just (HdCon (headAmbQ cs), (map . fmap . fmap) (Just . (appInfo,)) ps)-      DefP _        fs ps -> Just (HdDef (headAmbQ fs), (map . fmap . fmap) (Just . (appInfo,)) ps)-      PatternSynP _ ns ps -> Just (HdSyn (headAmbQ ns), (map . fmap . fmap) (Just . (appInfo,)) ps)+      ConP _        cs ps -> Just (HdCon (headAmbQ cs), (map . fmap . fmap) (NoSection . (appInfo,)) ps)+      DefP _        fs ps -> Just (HdDef (headAmbQ fs), (map . fmap . fmap) (NoSection . (appInfo,)) ps)+      PatternSynP _ ns ps -> Just (HdSyn (headAmbQ ns), (map . fmap . fmap) (NoSection . (appInfo,)) ps)       _                   -> Nothing       -- ProjP _ _ d   -> Just (HdDef (headAmbQ d), [])   -- ? Andreas, 2016-04-21 -recoverOpApp :: (ToConcrete a c, HasRange c)+recoverOpApp :: forall a c . (ToConcrete a c, HasRange c)   => ((PrecedenceStack -> Bool) -> AbsToCon c -> AbsToCon c)   -> (a -> Bool)  -- ^ Check for lambdas-  -> (Range -> C.QName -> A.Name -> [Maybe c] -> c)-  -> (a -> Maybe (Hd, [NamedArg (Maybe (AppInfo, a))]))  -- ^ `Nothing` for sections+  -> (Range -> C.QName -> A.Name -> [MaybeSection c] -> c)+  -> (a -> Maybe (Hd, [NamedArg (MaybeSection (AppInfo, a))]))   -> a   -> AbsToCon (Maybe c) recoverOpApp bracket isLam opApp view e = case view e of@@ -1248,21 +1406,30 @@       case hd of         HdVar  n           | isNoName n    -> mDefault-          | otherwise     -> doQNameHelper id        C.QName  n args'-        HdDef qn          -> doQNameHelper qnameName id      qn args'-        HdCon qn          -> doQNameHelper qnameName id      qn args'-        HdSyn qn          -> doQNameHelper qnameName id      qn args'+          | otherwise     -> doQNameHelper (Left n) args'+        HdDef qn+          | isExtendedLambdaName qn+                          -> mDefault+          | otherwise     -> doQNameHelper (Right qn) args'+        -- HdDef qn          -> doQNameHelper (Right qn) args'+        HdCon qn          -> doQNameHelper (Right qn) args'+        HdSyn qn          -> doQNameHelper (Right qn) args'     | otherwise           -> mDefault   where   mDefault = return Nothing -  skipParens = maybe False $ \ (i, e) -> isLam e && preferParenless (appParens i)+  skipParens :: MaybeSection (AppInfo, a) -> Bool+  skipParens = \case+     YesSection       -> False+     NoSection (i, e) -> isLam e && preferParenless (appParens i) -  doQNameHelper fixityHelper conHelper n as = do-    x <- conHelper <$> toConcrete n-    doQName (theFixity $ nameFixity n') x n' as (C.nameParts $ C.unqualify x)-    where-      n' = fixityHelper n+  doQNameHelper :: Either A.Name A.QName -> [MaybeSection (AppInfo, a)] -> AbsToCon (Maybe c)+  doQNameHelper n args = do+    x <- either (C.QName <.> toConcrete) toConcrete n+    let n' = either id A.qnameName n+    doQName (theFixity $ nameFixity n') x n' args (C.nameParts $ C.unqualify x)++  doQName :: Fixity -> C.QName -> A.Name -> [MaybeSection (AppInfo, a)] -> [NamePart] -> AbsToCon (Maybe c)    -- fall-back (wrong number of arguments or no holes)   doQName _ x _ es xs
src/full/Agda/Syntax/Translation/ConcreteToAbstract.hs view
@@ -17,7 +17,7 @@     , NewModuleName, OldModuleName     , NewName, OldQName     , LeftHandSide, RightHandSide-    , PatName, APatName, LetDef, LetDefs+    , PatName, APatName     ) where  #if MIN_VERSION_base(4,11,0)@@ -27,12 +27,15 @@ #endif  import Control.Applicative+import Control.Arrow (second) import Control.Monad.Reader hiding (mapM)  import Data.Foldable (Foldable, traverse_) import Data.Traversable (mapM, traverse) import Data.List ((\\), nub, foldl') import Data.Set (Set)+import Data.Map (Map)+import qualified Data.List as List import qualified Data.Set as Set import qualified Data.Map as Map import Data.Maybe@@ -52,6 +55,7 @@ import Agda.Syntax.Info import Agda.Syntax.Concrete.Definitions as C import Agda.Syntax.Fixity+import Agda.Syntax.Concrete.Fixity (DoWarn(..)) import Agda.Syntax.Notation import Agda.Syntax.Scope.Base import Agda.Syntax.Scope.Monad@@ -67,8 +71,8 @@ import Agda.TypeChecking.Monad.MetaVars (registerInteractionPoint) import Agda.TypeChecking.Monad.Debug import Agda.TypeChecking.Monad.Options-import Agda.TypeChecking.Monad.Env (insideDotPattern, isInsideDotPattern)-import Agda.TypeChecking.Rules.Builtin (isUntypedBuiltin, bindUntypedBuiltin)+import Agda.TypeChecking.Monad.Env (insideDotPattern, isInsideDotPattern, getCurrentPath)+import Agda.TypeChecking.Rules.Builtin (isUntypedBuiltin, bindUntypedBuiltin, builtinKindOfName)  import Agda.TypeChecking.Patterns.Abstract (expandPatternSynonyms) import Agda.TypeChecking.Pretty hiding (pretty, prettyA)@@ -79,6 +83,7 @@ import {-# SOURCE #-} Agda.Interaction.Imports (scopeCheckImport) import Agda.Interaction.Options import qualified Agda.Interaction.Options.Lenses as Lens+import Agda.Interaction.Options.Warnings  import Agda.Utils.AssocList (AssocList) import qualified Agda.Utils.AssocList as AssocList@@ -139,49 +144,82 @@   return $ ScopedExpr s e  -- | Make sure that there are no dot patterns (called on pattern synonyms).+noDotorEqPattern :: String -> A.Pattern' e -> ScopeM (A.Pattern' Void)+noDotorEqPattern err = dot+  where+    dot :: A.Pattern' e -> ScopeM (A.Pattern' Void)+    dot p = case p of+      A.VarP x               -> pure $ A.VarP x+      A.ConP i c args        -> A.ConP i c <$> (traverse $ traverse $ traverse dot) args+      A.ProjP i o d          -> pure $ A.ProjP i o d+      A.WildP i              -> pure $ A.WildP i+      A.AsP i x p            -> A.AsP i x <$> dot p+      A.DotP{}               -> genericError err+      A.EqualP{}             -> genericError err   -- Andrea: so we also disallow = patterns, reasonable?+      A.AbsurdP i            -> pure $ A.AbsurdP i+      A.LitP l               -> pure $ A.LitP l+      A.DefP i f args        -> A.DefP i f <$> (traverse $ traverse $ traverse dot) args+      A.PatternSynP i c args -> A.PatternSynP i c <$> (traverse $ traverse $ traverse dot) args+      A.RecP i fs            -> A.RecP i <$> (traverse $ traverse dot) fs+      A.WithP i p            -> A.WithP i <$> dot p++-- | Make sure that there are no dot patterns (WAS: called on pattern synonyms). noDotPattern :: String -> A.Pattern' e -> ScopeM (A.Pattern' Void)-noDotPattern err = traverse $ const $ typeError $ GenericError err+noDotPattern err = traverse $ const $ genericError err +newtype RecordConstructorType = RecordConstructorType [C.Declaration]++instance ToAbstract RecordConstructorType A.Expr where+  toAbstract (RecordConstructorType ds) = recordConstructorType ds+ -- | Compute the type of the record constructor (with bogus target type)-recordConstructorType :: [NiceDeclaration] -> ScopeM C.Expr-recordConstructorType fields = build <$> mapM validForLet fs+recordConstructorType :: [C.Declaration] -> ScopeM A.Expr+recordConstructorType decls =+    -- Nicify all declarations since there might be fixity declarations after+    -- the the last field. Use NoWarn to silence fixity warnings. We'll get+    -- them again when scope checking the declarations to build the record+    -- module.+    niceDecls NoWarn decls $ buildType . takeFields   where-    -- drop all declarations after the last field declaration-    fs = reverse $ dropWhile notField $ reverse fields+    takeFields = List.dropWhileEnd notField      notField NiceField{} = False     notField _           = True -    -- | Check that declarations before last field can be handled-    --   by current translation into let.-    ---    --   Sometimes a declaration is valid with minor modifications.-    validForLet :: NiceDeclaration -> ScopeM NiceDeclaration-    validForLet d = do-      let failure = traceCall (SetRange $ getRange d) $-            typeError $ NotValidBeforeField d-      case d of+    buildType :: [C.NiceDeclaration] -> ScopeM A.Expr+    buildType ds = do+      tel <- mapM makeBinding ds  -- TODO: Telescope instead of Expr in abstract RecDef+      return $ A.Pi (ExprRange (getRange ds)) tel (A.Set exprNoRange 0) -        -- Andreas, 2013-11-08-        -- Turn @open public@ into just @open@, since we cannot have an-        -- @open public@ in a @let@.  Fixes issue #532.-        C.NiceOpen r m dir ->-          return $ C.NiceOpen r m dir{ publicOpen = False }+    makeBinding :: C.NiceDeclaration -> ScopeM A.TypedBinding+    makeBinding d = do+      let failure = typeError $ NotValidBeforeField d+          r       = getRange d+          info    = ExprRange r+          mkLet d = A.TLet r <$> toAbstract (LetDef d)+      traceCall (SetRange r) $ case d of -        C.NiceModuleMacro r p x modapp open dir ->-          return $ C.NiceModuleMacro r p x modapp open dir{ publicOpen = False }+        C.NiceField r pr ab inst x a -> do+          fx  <- getConcreteFixity x+          let bv = unnamed (C.mkBoundName x fx) <$ a+          tel <- toAbstract $ C.TBind r [bv] (unArg a)+          return tel -        C.NiceField{} ->-          return d+        -- Public open is allowed and will take effect when scope checking as+        -- proper declarations.+        C.NiceOpen r m dir -> do+          mkLet $ C.NiceOpen r m dir{ publicOpen = False }+        C.NiceModuleMacro r p x modapp open dir -> do+          mkLet $ C.NiceModuleMacro r p x modapp open dir{ publicOpen = False } +        -- Do some rudimentary matching here to get NotValidBeforeField instead+        -- of NotAValidLetDecl.         C.NiceMutual _ _ _-          [ C.FunSig _ _ _ _ _instanc macro _info _ _ _-          , C.FunDef _ _ _ abstract _ _ _+          [ C.FunSig _ _ _ _instanc macro _info _ _ _+          , C.FunDef _ _ abstract _ _ _              [ C.Clause _top _catchall (C.LHS _p [] []) (C.RHS _rhs) NoWhere [] ]-          ] | abstract /= AbstractDef && macro /= MacroDef ->-          -- TODO: this is still too generous, we also need to check that _p-          -- is only variable patterns.-          return d+          ] | abstract /= AbstractDef && macro /= MacroDef -> do+          mkLet d          C.NiceMutual{}        -> failure         -- TODO: some of these cases might be __IMPOSSIBLE__@@ -195,28 +233,13 @@         C.NiceFunClause{}     -> failure         C.FunSig{}            -> failure  -- Note: these are bundled with FunDef in NiceMutual         C.FunDef{}            -> failure-        C.DataDef{}           -> failure-        C.RecDef{}            -> failure+        C.NiceDataDef{}       -> failure+        C.NiceRecDef{}        -> failure         C.NicePatternSyn{}    -> failure+        C.NiceGeneralize{}    -> failure         C.NiceUnquoteDecl{}   -> failure         C.NiceUnquoteDef{}    -> failure -    build fs =-      let (ds1, ds2) = span notField fs-      in  lets (concatMap notSoNiceDeclarations ds1) $ fld ds2--    -- Turn a field declaration into a the domain of a Pi-type-    fld [] = C.SetN noRange 0 -- todo: nicer-    fld (NiceField r f _ _ _ x (Arg info e) : fs) =-        C.Pi [C.TypedBindings r $ Arg info (C.TBind r [pure $ mkBoundName x f] e)] $ build fs-      where r = getRange x-    fld _ = __IMPOSSIBLE__--    -- Turn non-field declarations into a let binding.-    -- Smart constructor for C.Let:-    lets [] c = c-    lets ds c = C.Let (getRange ds) ds (Just c)- checkModuleApplication   :: C.ModuleApplication   -> ModuleName@@ -258,7 +281,7 @@       ]     return (amodapp, copyInfo, adir) -checkModuleApplication (C.RecordModuleIFS _ recN) m0 x dir' =+checkModuleApplication (C.RecordModuleInstance _ recN) m0 x dir' =   withCurrentModule m0 $ do     m1 <- toAbstract $ OldModuleName recN     s <- getNamedScope m1@@ -267,7 +290,7 @@     modifyCurrentScope $ const s'      printScope "mod.inst" 20 "copied record module"-    return (A.RecordModuleIFS m1, copyInfo, adir)+    return (A.RecordModuleInstance m1, copyInfo, adir)  -- | @checkModuleMacro mkApply range access concreteName modapp open dir@ --@@ -281,6 +304,7 @@       -> ScopeCopyInfo       -> A.ImportDirective       -> a)+  -> OpenKind   -> Range   -> Access   -> C.Name@@ -288,14 +312,14 @@   -> OpenShortHand   -> C.ImportDirective   -> ScopeM [a]-checkModuleMacro apply r p x modapp open dir = do+checkModuleMacro apply kind r p x modapp open dir = do     reportSDoc "scope.decl" 70 $ vcat $       [ text $ "scope checking ModuleMacro " ++ prettyShow x       ]     notPublicWithoutOpen open dir      m0 <- toAbstract (NewModuleName x)-    reportSDoc "scope.decl" 90 $ text "NewModuleName: m0 =" <+> prettyA m0+    reportSDoc "scope.decl" 90 $ "NewModuleName: m0 =" <+> prettyA m0      printScope "mod.inst" 20 "module macro" @@ -313,11 +337,11 @@     (modapp', copyInfo, adir') <- withLocalVars $ checkModuleApplication modapp m0 x moduleDir     printScope "mod.inst.app" 20 "checkModuleMacro, after checkModuleApplication" -    reportSDoc "scope.decl" 90 $ text "after mod app: trying to print m0 ..."-    reportSDoc "scope.decl" 90 $ text "after mod app: m0 =" <+> prettyA m0+    reportSDoc "scope.decl" 90 $ "after mod app: trying to print m0 ..."+    reportSDoc "scope.decl" 90 $ "after mod app: m0 =" <+> prettyA m0      bindModule p x m0-    reportSDoc "scope.decl" 90 $ text "after bindMod: m0 =" <+> prettyA m0+    reportSDoc "scope.decl" 90 $ "after bindMod: m0 =" <+> prettyA m0      printScope "mod.inst.copy.after" 20 "after copying" @@ -325,13 +349,13 @@     -- Andreas, 2014-09-02 openModule_ might shadow some locals!     adir <- case open of       DontOpen -> return adir'-      DoOpen   -> openModule_ (C.QName x) openDir+      DoOpen   -> openModule_ kind (C.QName x) openDir     printScope "mod.inst" 20 $ show open-    reportSDoc "scope.decl" 90 $ text "after open   : m0 =" <+> prettyA m0+    reportSDoc "scope.decl" 90 $ "after open   : m0 =" <+> prettyA m0      stripNoNames     printScope "mod.inst" 10 $ "after stripping"-    reportSDoc "scope.decl" 90 $ text "after stripNo: m0 =" <+> prettyA m0+    reportSDoc "scope.decl" 90 $ "after stripNo: m0 =" <+> prettyA m0      let m      = m0 `withRangesOf` [x]         adecls = [ apply info m modapp' copyInfo adir ]@@ -359,8 +383,7 @@  notPublicWithoutOpen :: OpenShortHand -> C.ImportDirective -> ScopeM () notPublicWithoutOpen DoOpen   dir = return ()-notPublicWithoutOpen DontOpen dir = when (publicOpen dir) $ typeError $-  GenericError+notPublicWithoutOpen DontOpen dir = when (publicOpen dir) $ genericError     "The public keyword must only be used together with the open keyword"  -- | Computes the range of all the \"to\" keywords used in a renaming@@ -389,7 +412,7 @@    m <- toAbstract (OldModuleName x)   printScope "open" 20 $ "opening " ++ prettyShow x-  adir <- openModule_ x dir+  adir <- openModule_ TopOpenModule x dir   printScope "open" 20 $ "result:"   let minfo = ModuleInfo         { minfoRange     = r@@ -409,7 +432,7 @@  --------------------------------------------------------------------------}  concreteToAbstract_ :: ToAbstract c a => c -> ScopeM a-concreteToAbstract_ x = toAbstract x+concreteToAbstract_ = toAbstract  concreteToAbstract :: ToAbstract c a => ScopeInfo -> c -> ScopeM a concreteToAbstract scope x = withScope_ scope (toAbstract x)@@ -498,11 +521,11 @@     bindVariable b x y     return y -instance ToAbstract (NewName C.BoundName) A.Name where+instance ToAbstract (NewName C.BoundName) A.BindName where   toAbstract (NewName b BName{ boundName = x, bnameFixity = fx }) = do     y <- freshAbstractName fx x     bindVariable b x y-    return y+    return $ A.BindName y  instance ToAbstract OldQName A.Expr where   toAbstract (OldQName x ns) = do@@ -516,6 +539,19 @@         reportSDoc "scope.warning" 50 $ text $ "Checking usage of " ++ prettyShow d         mstr <- Map.lookup (anameName d) <$> getUserWarnings         forM_ mstr (warning . UserWarning)+        -- then we take note of generalized names used+        case anameKind d of+          GeneralizeName -> do+            gvs <- useTC stGeneralizedVars+            case gvs of   -- Subtle: Use (left-biased) union instead of insert to keep the old name if+                          -- already present. This way we can sort by source location when generalizing+                          -- (Issue 3354).+                Just s -> stGeneralizedVars `setTCLens` Just (s `Set.union` Set.singleton (anameName d))+                Nothing -> typeError $ GeneralizeNotSupportedHere $ anameName d+          DisallowedGeneralizeName -> do+            typeError . GenericDocError =<<+              text "Cannot use generalized variable from let-opened module:" <+> prettyTCM (anameName d)+          _ -> return ()         -- and then we return the name         return $ nameExpr d       FieldName     ds     -> return $ A.Proj ProjPrefix $ AmbQ (fmap anameName ds)@@ -547,13 +583,7 @@       (PatternSynResName d, _)                              -> patSyn d       _ -> genericError $ "Cannot pattern match on non-constructor " ++ prettyShow x     where-      bindPatVar x = do-        reportSLn "scope.pat" 10 $ "it was a var: " ++ prettyShow x-        y <- (AssocList.lookup x <$> getVarsToBind) >>= \case-          Just (LocalVar y _ _) -> return $ setRange (getRange x) y-          Nothing -> freshAbstractName_ x-        addVarToBind x $ LocalVar y PatternBound []-        return $ VarPatName y+      bindPatVar = VarPatName <.> bindPatternVariable       patCon ds = do         reportSLn "scope.pat" 10 $ "it was a con: " ++ prettyShow (fmap anameName ds)         return $ ConPatName ds@@ -561,6 +591,17 @@         reportSLn "scope.pat" 10 $ "it was a pat syn: " ++ prettyShow (fmap anameName ds)         return $ PatternSynPatName ds +-- | Translate and possibly bind a pattern variable+--   (which could have been bound before due to non-linearity).+bindPatternVariable :: C.Name -> ScopeM A.Name+bindPatternVariable x = do+  reportSLn "scope.pat" 10 $ "it was a var: " ++ prettyShow x+  y <- (AssocList.lookup x <$> getVarsToBind) >>= \case+    Just (LocalVar y _ _) -> return $ setRange (getRange x) y+    Nothing -> freshAbstractName_ x+  addVarToBind x $ LocalVar y PatternBound []+  return y+ class ToQName a where   toQName :: a -> C.QName @@ -577,7 +618,7 @@       ConstructorName ds   -> return $ anameName (headNe ds)   -- We'll throw out this one, so it doesn't matter which one we pick       FieldName ds         -> return $ anameName (headNe ds)       PatternSynResName ds -> return $ anameName (headNe ds)-      VarName x _          -> typeError $ GenericError $ "Not a defined name: " ++ prettyShow x+      VarName x _          -> genericError $ "Not a defined name: " ++ prettyShow x       UnknownName          -> notInScope (toQName x)  newtype NewModuleName      = NewModuleName      C.Name@@ -693,7 +734,7 @@   bindName (PrivateAccess Inserted) DefName cname qname    -- Compose a function definition and scope check it.-  a <- aModeToDef <$> asks envAbstractMode+  a <- aModeToDef <$> asksTC envAbstractMode   let     insertApp :: C.Pattern -> ScopeM C.Pattern     insertApp (C.RawAppP r es) = return $ C.RawAppP r $ IdentP (C.QName cname) : es@@ -722,7 +763,7 @@     --       _ -> __IMPOSSIBLE__     --   __IMPOSSIBLE__ -  d <- C.FunDef r [] noFixity' {-'-} a NotInstanceDef __IMPOSSIBLE__ cname <$> do+  d <- C.FunDef r [] a NotInstanceDef __IMPOSSIBLE__ cname <$> do           forM cs $ \ (LamClause lhs rhs wh ca) -> do -- wh == NoWhere, see parser for more info             lhs' <- mapLhsOriginalPatternM insertApp lhs             return $ C.Clause cname ca lhs' rhs wh []@@ -739,7 +780,7 @@     -- Get a concrete name that is not yet in scope.     nextlamname :: Range -> Int -> String -> ScopeM C.Name     nextlamname r i s = do-      let cname = C.Name r [Id $ stringToRawName $ s ++ show i]+      let cname = C.Name r C.NotInScope [Id $ stringToRawName $ s ++ show i]       rn <- resolveName $ C.QName cname       case rn of         UnknownName -> return cname@@ -834,8 +875,8 @@       C.ExtendedLam r cs -> scopeCheckExtendedLam r cs    -- Relevant and irrelevant non-dependent function type-      C.Fun r e1 e2 -> do-        Arg info (e0, dotted) <- traverse (toAbstractDot FunctionSpaceDomainCtx) $ mkArg e1+      C.Fun r (Arg info1 e1) e2 -> do+        Arg info (e0, dotted) <- traverse (toAbstractDot FunctionSpaceDomainCtx) $ mkArg' info1 e1         let e1 = Arg ((if dotted then setRelevance Irrelevant else id) info) e0         e2 <- toAbstractCtx TopCtx e2         return $ A.Fun (ExprRange r) e1 e2@@ -850,7 +891,8 @@   -- Sorts       C.Set _    -> return $ A.Set (ExprRange $ getRange e) 0       C.SetN _ n -> return $ A.Set (ExprRange $ getRange e) n-      C.Prop _   -> return $ A.Prop $ ExprRange $ getRange e+      C.Prop _   -> return $ A.Prop (ExprRange $ getRange e) 0+      C.PropN _ n -> return $ A.Prop (ExprRange $ getRange e) n    -- Let       e0@(C.Let _ ds (Just e)) ->@@ -915,13 +957,17 @@   -- DontCare       C.DontCare e -> A.DontCare <$> toAbstract e +  -- forall-generalize+      C.Generalized e -> do+        (s, e) <- collectGeneralizables $ toAbstract e+        pure $ A.generalized s e  instance ToAbstract C.ModuleAssignment (A.ModuleName, [A.LetBinding]) where   toAbstract (C.ModuleAssignment m es i)-    | null es && isDefaultImportDir i = (\x-> (x, [])) <$> toAbstract (OldModuleName m)+    | null es && isDefaultImportDir i = (, []) <$> toAbstract (OldModuleName m)     | otherwise = do         x <- C.NoName (getRange m) <$> fresh-        r <- checkModuleMacro LetApply (getRange (m, es, i)) PublicAccess x+        r <- checkModuleMacro LetApply LetOpenModule (getRange (m, es, i)) PublicAccess x                           (C.SectionApp (getRange (m , es)) [] (RawApp (fuseRange m es) (Ident m : es)))                           DontOpen i         case r of@@ -932,23 +978,19 @@   toAbstract = traverse toAbstract  instance ToAbstract C.LamBinding A.LamBinding where-  toAbstract (C.DomainFree info x) = A.DomainFree info . A.BindName <$> toAbstract (NewName LambdaBound x)-  toAbstract (C.DomainFull tb)     = A.DomainFull <$> toAbstract tb+  toAbstract (C.DomainFree x)  = A.DomainFree <$> toAbstract ((fmap . fmap) (NewName LambdaBound) x)+  toAbstract (C.DomainFull tb) = A.DomainFull <$> toAbstract tb -makeDomainFull :: C.LamBinding -> C.TypedBindings-makeDomainFull (C.DomainFull b)      = b-makeDomainFull (C.DomainFree info x) =-  C.TypedBindings r $ Arg info $ C.TBind r [pure x] $ C.Underscore r Nothing+makeDomainFull :: C.LamBinding -> C.TypedBinding+makeDomainFull (C.DomainFull b) = b+makeDomainFull (C.DomainFree x) = C.TBind r [x] $ C.Underscore r Nothing   where r = getRange x -instance ToAbstract C.TypedBindings A.TypedBindings where-  toAbstract (C.TypedBindings r bs) = A.TypedBindings r <$> toAbstract bs- instance ToAbstract C.TypedBinding A.TypedBinding where   toAbstract (C.TBind r xs t) = do     t' <- toAbstractCtx TopCtx t-    xs' <- toAbstract $ map (fmap (NewName LambdaBound)) xs-    return $ A.TBind r (map (fmap A.BindName) xs') t'+    xs' <- toAbstract $ (map . fmap . fmap) (NewName LambdaBound) xs+    return $ A.TBind r xs' t'   toAbstract (C.TLet r ds) = A.TLet r <$> toAbstract (LetDefs ds)  -- | Scope check a module (top level function).@@ -997,15 +1039,14 @@       -- unless it's private, in which case we just open it (#2099)       when open $        void $ -- We can discard the returned default A.ImportDirective.-        openModule_ (C.QName name) $+        openModule_ TopOpenModule (C.QName name) $           defaultImportDir { publicOpen = p == PublicAccess }       return ds  -- | Check whether a telescope has open declarations or module macros. telHasOpenStmsOrModuleMacros :: C.Telescope -> Bool-telHasOpenStmsOrModuleMacros = any yesBinds+telHasOpenStmsOrModuleMacros = any yesBind   where-    yesBinds (C.TypedBindings _ tb) = yesBind $ unArg tb     yesBind C.TBind{}     = False     yesBind (C.TLet _ ds) = any yes ds     yes C.ModuleMacro{}   = True@@ -1021,9 +1062,8 @@  {- UNUSED telHasLetStms :: C.Telescope -> Bool-telHasLetStms = any isLetBinds+telHasLetStms = any isLetBind   where-    isLetBinds (C.TypedBindings _ tb) = isLetBind $ unArg tb     isLetBind C.TBind{} = False     isLetBind C.TLet{}  = True -}@@ -1053,9 +1093,6 @@ instance EnsureNoLetStms a => EnsureNoLetStms (LamBinding' a) where   ensureNoLetStms = traverse_ ensureNoLetStms -instance EnsureNoLetStms a => EnsureNoLetStms (TypedBindings' a) where-  ensureNoLetStms = traverse_ ensureNoLetStms- instance EnsureNoLetStms a => EnsureNoLetStms [a] where   ensureNoLetStms = traverse_ ensureNoLetStms @@ -1075,7 +1112,7 @@   -- This is important for Nicolas Pouillard's open parametrized modules   -- statements inside telescopes.   res <- withLocalVars $ do-    tel <- toAbstract tel+    tel <- toAbstract (GenTel tel)     withCurrentModule qm $ do       -- pushScope m       -- qm <- getCurrentModule@@ -1109,7 +1146,7 @@ -- | The top-level module name.  topLevelModuleName :: TopLevelInfo -> A.ModuleName-topLevelModuleName topLevel = scopeCurrent (topLevelScope topLevel)+topLevelModuleName = scopeCurrent . topLevelScope  -- | Top-level declarations are always --   @@@ -1148,11 +1185,11 @@                          -- That is the range if the parser inserted the anon. module.                        , r == beginningOfFile (getRange insideDecls) -> do -                         traceCall (SetRange $ getRange ds0) $ typeError $ GenericError $+                         traceCall (SetRange $ getRange ds0) $ genericError                            "Illegal declaration(s) before top-level module"                      -- Otherwise, reconstruct the top-level module name-                    _ -> return $ C.QName $ C.Name (getRange m0)+                    _ -> return $ C.QName $ C.Name (getRange m0) C.InScope                            [Id $ stringToRawName $ rootNameModule file]                 -- Andreas, 2017-05-17, issue #2574, keep name as jump target!                 -- Andreas, 2016-07-12, ALTERNATIVE:@@ -1186,23 +1223,50 @@         _ -> __IMPOSSIBLE__  -- | runs Syntax.Concrete.Definitions.niceDeclarations on main module-niceDecls :: [C.Declaration] -> ScopeM [NiceDeclaration]-niceDecls ds = do-  let (result, warns) = runNice $ niceDeclarations ds-  unless (null warns) $ setCurrentRange ds $ warnings $ NicifierIssue <$> warns+niceDecls :: DoWarn -> [C.Declaration] -> ([NiceDeclaration] -> ScopeM a) -> ScopeM a+niceDecls warn ds ret = setCurrentRange ds $ computeFixitiesAndPolarities warn ds $ do+  fixs <- scopeFixities <$> getScope  -- We need to pass the fixities to the nicifier for clause grouping+  let (result, warns') = runNice $ niceDeclarations fixs ds++  -- COMPILED pragmas are not allowed in safe mode unless we are in a builtin module.+  -- So we start by filtering out all the PragmaCompiled warnings if one of these two+  -- conditions is not met.+  isSafe    <- Lens.getSafeMode <$> pragmaOptions+  isBuiltin <- Lens.isBuiltinModule . filePath =<< getCurrentPath+  let warns = if isSafe && not isBuiltin then warns' else filter notOnlyInSafeMode warns'++  unless (null warns) $ do+    -- If there are some warnings and the --safe flag is set,+    -- we check that none of the NiceWarnings are fatal+    when isSafe $ do+      let isUnsafe w = declarationWarningName w `elem`+            [ PragmaNoTerminationCheck_+            , PragmaCompiled_+            , MissingDefinitions_+            ]+      let (errs, ws) = List.partition isUnsafe warns+      -- If some of them are, we fail+      unless (null errs) $ do+        warnings $ NicifierIssue <$> ws+        tcerrs <- mapM warning_ $ NicifierIssue <$> errs+        setCurrentRange errs $ typeError $ NonFatalErrors tcerrs+    -- Otherwise we simply record the warnings+    warnings $ NicifierIssue <$> warns   case result of     Left e   -> throwError $ Exception (getRange e) $ pretty e-    Right ds -> return ds+    Right ds -> ret ds +  where notOnlyInSafeMode = (PragmaCompiled_ /=) . declarationWarningName+ instance {-# OVERLAPPING #-} ToAbstract [C.Declaration] [A.Declaration] where   toAbstract ds = do     -- When --safe is active the termination checker (Issue 586) and     -- positivity checker (Issue 1614) may not be switched off, and     -- polarities may not be assigned.     ds <- ifM (Lens.getSafeMode <$> commandLineOptions)-              (mapM (noNoTermCheck >=> noNoPositivityCheck >=> noPolarity) ds)+              (mapM (noNoTermCheck >=> noNoPositivityCheck >=> noPolarity >=> noNoUniverseCheck) ds)               (return ds)-    toAbstract =<< niceDecls ds+    niceDecls DoWarn ds toAbstract    where     -- ASR (31 December 2015). We don't pattern-match on     -- @NoTerminationCheck@ because the @NO_TERMINATION_CHECK@ pragma@@ -1224,17 +1288,22 @@       d <$ (setCurrentRange d $ warning SafeFlagPolarity)     noPolarity d                               = return d +    noNoUniverseCheck :: C.Declaration -> TCM C.Declaration+    noNoUniverseCheck d@(C.Pragma (C.NoUniverseCheckPragma _)) =+      d <$ (setCurrentRange d $ warning SafeFlagNoUniverseCheck)+    noNoUniverseCheck d = return d+ newtype LetDefs = LetDefs [C.Declaration] newtype LetDef = LetDef NiceDeclaration  instance ToAbstract LetDefs [A.LetBinding] where   toAbstract (LetDefs ds) =-    concat <$> (toAbstract =<< map LetDef <$> niceDecls ds)+    concat <$> (niceDecls DoWarn ds $ toAbstract . map LetDef)  instance ToAbstract LetDef [A.LetBinding] where   toAbstract (LetDef d) =     case d of-      NiceMutual _ _ _ d@[C.FunSig _ fx _ _ instanc macro info _ x t, C.FunDef _ _ _ abstract _ _ _ [cl]] ->+      NiceMutual _ _ _ d@[C.FunSig _ _ _ instanc macro info _ x t, C.FunDef _ _ abstract _ _ _ [cl]] ->           do  when (abstract == AbstractDef) $ do                 genericError $ "abstract not allowed in let expressions"               when (macro == MacroDef) $ do@@ -1242,7 +1311,8 @@               t <- toAbstract t               -- We bind the name here to make sure it's in scope for the LHS (#917).               -- It's unbound for the RHS in letToAbstract.-              x <- toAbstract (NewName LetBound $ mkBoundName x fx)+              fx <- getConcreteFixity x+              x  <- A.unBind <$> toAbstract (NewName LetBound $ mkBoundName x fx)               (x', e) <- letToAbstract cl               -- If InstanceDef set info to Instance               let info' | instanc == InstanceDef = makeInstance info@@ -1276,8 +1346,8 @@             case definedName p of               Nothing -> throwError err               Just x  -> toAbstract $ LetDef $ NiceMutual r termCheck True-                [ C.FunSig r noFixity' PublicAccess ConcreteDef NotInstanceDef NotMacroDef defaultArgInfo termCheck x (C.Underscore (getRange x) Nothing)-                , C.FunDef r __IMPOSSIBLE__ __IMPOSSIBLE__ ConcreteDef NotInstanceDef __IMPOSSIBLE__ __IMPOSSIBLE__+                [ C.FunSig r PublicAccess ConcreteDef NotInstanceDef NotMacroDef defaultArgInfo termCheck x (C.Underscore (getRange x) Nothing)+                , C.FunDef r __IMPOSSIBLE__ ConcreteDef NotInstanceDef __IMPOSSIBLE__ __IMPOSSIBLE__                   [C.Clause x (ca || catchall) lhs (C.RHS rhs) NoWhere []]                 ]             where@@ -1289,6 +1359,7 @@               definedName C.AbsurdP{}            = Nothing               definedName C.AsP{}                = Nothing               definedName C.DotP{}               = Nothing+              definedName C.EqualP{}             = Nothing               definedName C.LitP{}               = Nothing               definedName C.RecP{}               = Nothing               definedName C.QuoteP{}             = Nothing@@ -1304,7 +1375,7 @@       NiceOpen r x dirs -> do         when (publicOpen dirs) $ warning UselessPublic         m    <- toAbstract (OldModuleName x)-        adir <- openModule_ x dirs+        adir <- openModule_ LetOpenModule x dirs         let minfo = ModuleInfo               { minfoRange  = r               , minfoAsName = Nothing@@ -1318,7 +1389,7 @@         when (publicOpen dir) $ warning UselessPublic         -- Andreas, 2014-10-09, Issue 1299: module macros in lets need         -- to be private-        checkModuleMacro LetApply r (PrivateAccess Inserted) x modapp open dir+        checkModuleMacro LetApply LetOpenModule r (PrivateAccess Inserted) x modapp open dir        _   -> notAValidLetBinding d     where@@ -1344,11 +1415,11 @@          -- Named patterns not allowed in let definitions         lambda e (Arg info (Named Nothing (A.VarP x))) =-                return $ A.Lam i (A.DomainFree info x) e+                return $ A.Lam i (A.DomainFree $ unnamedArg info x) e             where i = ExprRange (fuseRange x e)         lambda e (Arg info (Named Nothing (A.WildP i))) =             do  x <- freshNoName (getRange i)-                return $ A.Lam i' (A.DomainFree info $ A.BindName x) e+                return $ A.Lam i' (A.DomainFree $ unnamedArg info $ A.BindName x) e             where i' = ExprRange (fuseRange i e)         lambda _ _ = notAValidLetBinding d @@ -1362,24 +1433,40 @@ instance ToAbstract NiceDeclaration A.Declaration where    toAbstract d = annotateDecls $+    traceSLn "scope.decl.trace" 50 (unlines+      [ "scope checking declaration"+      , "  " ++  prettyShow d+      ]) $     traceCall (ScopeCheckDeclaration d) $     -- Andreas, 2015-10-05, Issue 1677:     -- We record in the environment whether we are scope checking an     -- abstract definition.  This way, we can propagate this attribute     -- the extended lambdas.-    caseMaybe (niceHasAbstract d) id (\ a -> local $ \ e -> e { envAbstractMode = aDefToMode a }) $+    caseMaybe (niceHasAbstract d) id (\ a -> localTC $ \ e -> e { envAbstractMode = aDefToMode a }) $     case d of    -- Axiom (actual postulate)-    C.Axiom r f p a i rel _ x t -> do-      -- check that we do not postulate in --safe mode-      clo <- commandLineOptions-      when (Lens.getSafeMode clo) (warning $ SafeFlagPostulate x)+    C.Axiom r p a i rel x t -> do+      -- check that we do not postulate in --safe mode, unless it is a+      -- builtin module with safe postulates+      whenM ((return . Lens.getSafeMode =<< commandLineOptions) `and2M`+             (not <$> (Lens.isBuiltinModuleWithSafePostulates . filePath =<< getCurrentPath)))+            (warning $ SafeFlagPostulate x)       -- check the postulate       toAbstractNiceAxiom A.NoFunSig NotMacroDef d +    C.NiceGeneralize r p i x t -> do+      reportSLn "scope.decl" 10 $ "found nice generalize: " ++ prettyShow x+      t_ <- toAbstractCtx TopCtx t+      let (s, t) = unGeneralized t_+      reportSLn "scope.decl" 50 $ "generalizations: " ++ show (Set.toList s, t)+      f <- getConcreteFixity x+      y <- freshAbstractQName f x+      bindName p GeneralizeName x y+      return [A.Generalize s (mkDefInfoInstance x f p ConcreteDef NotInstanceDef NotMacroDef r) i y t]+   -- Fields-    C.NiceField r f p a i x t -> do+    C.NiceField r p a i x t -> do       unless (p == PublicAccess) $ genericError "Record fields can not be private"       -- Interaction points for record fields have already been introduced       -- when checking the type of the record constructor.@@ -1388,18 +1475,24 @@       let maskIP (C.QuestionMark r _) = C.Underscore r Nothing           maskIP e                     = e       t' <- toAbstractCtx TopCtx $ mapExpr maskIP t+      f  <- getConcreteFixity x       y  <- freshAbstractQName f x-      irrProj <- optIrrelevantProjections <$> pragmaOptions-      unless (isIrrelevant t && not irrProj) $-        -- Andreas, 2010-09-24: irrelevant fields are not in scope-        -- this ensures that projections out of irrelevant fields cannot occur-        -- Ulf: unless you turn on --irrelevant-projections+      -- Andreas, 2018-06-09 issue #2170+      -- We want dependent irrelevance without irrelevant projections,+      -- thus, do not disable irrelevant projections via the scope checker.+      -- irrProj <- optIrrelevantProjections <$> pragmaOptions+      -- unless (isIrrelevant t && not irrProj) $+      --   -- Andreas, 2010-09-24: irrelevant fields are not in scope+      --   -- this ensures that projections out of irrelevant fields cannot occur+      --   -- Ulf: unless you turn on --irrelevant-projections+      do         bindName p FldName x y       return [ A.Field (mkDefInfoInstance x f p a i NotMacroDef r) y t' ]    -- Primitive function-    PrimitiveFunction r f p a x t -> do+    PrimitiveFunction r p a x t -> do       t' <- toAbstractCtx TopCtx t+      f  <- getConcreteFixity x       y  <- freshAbstractQName f x       bindName p DefName x y       return [ A.Primitive (mkDefInfo x f p a r) y t' ]@@ -1410,32 +1503,36 @@       -- We only termination check blocks that do not have a measure.       return [ A.Mutual (MutualInfo termCheck pc r) ds' ] -    C.NiceRecSig r f p a _pc x ls t -> do+    C.NiceRecSig r p a _pc _uc x ls t -> do       ensureNoLetStms ls       withLocalVars $ do-        ls' <- toAbstract (map makeDomainFull ls)+        -- Minor hack: record types don't have indices so we include t when+        -- computing generalised parameters, but in the type checker any named+        -- generalizable arguments in the sort should be bound variables.+        (ls', _) <- toAbstract (GenTelAndType (map makeDomainFull ls) t)         t'  <- toAbstract t+        f   <- getConcreteFixity x         x'  <- freshAbstractQName f x-        bindName p DefName x x'+        bindName' p DefName (GeneralizedVarsMetadata $ generalizeTelVars ls') x x'         return [ A.RecSig (mkDefInfo x f p a r) x' ls' t' ] -    C.NiceDataSig r f p a _pc x ls t -> withLocalVars $ do-        printScope "scope.data.sig" 20 ("checking DataSig for " ++ prettyShow x)+    C.NiceDataSig r p a _pc _uc x ls t -> withLocalVars $ do+        reportSLn "scope.data.sig" 20 ("checking DataSig for " ++ prettyShow x)         ensureNoLetStms ls-        ls' <- toAbstract (map makeDomainFull ls)-        t'  <- toAbstract t-        x'  <- freshAbstractQName f x-        {- -- Andreas, 2012-01-16: remember number of parameters-        bindName p (DataName (length ls)) x x' -}-        bindName p DefName x x'-        return [ A.DataSig (mkDefInfo x f p a r) x' ls' t' ]+        withLocalVars $ do+          ls' <- toAbstract $ GenTel $ map makeDomainFull ls+          t'  <- toAbstract $ C.Generalized t+          f  <- getConcreteFixity x+          x' <- freshAbstractQName f x+          bindName' p DefName (GeneralizedVarsMetadata $ generalizeTelVars ls') x x'+          return [ A.DataSig (mkDefInfo x f p a r) x' ls' t' ]    -- Type signatures-    C.FunSig r f p a i m rel tc x t ->-        toAbstractNiceAxiom A.FunSig m (C.Axiom r f p a i rel Nothing x t)+    C.FunSig r p a i m rel tc x t ->+        toAbstractNiceAxiom A.FunSig m (C.Axiom r p a i rel x t)    -- Function definitions-    C.FunDef r ds f a i tc x cs -> do+    C.FunDef r ds a i tc x cs -> do         printLocals 10 $ "checking def " ++ prettyShow x         (x',cs) <- toAbstract (OldName x,cs)         -- Andreas, 2017-12-04 the name must reside in the current module@@ -1443,6 +1540,7 @@           __IMPOSSIBLE__         let delayed = NotDelayed         -- (delayed, cs) <- translateCopatternClauses cs -- TODO+        f <- getConcreteFixity x         return [ A.FunDef (mkDefInfoInstance x f PublicAccess a i NotMacroDef r) x' delayed cs ]    -- Uncategorized function clauses@@ -1452,41 +1550,42 @@     C.NiceFunClause{} -> __IMPOSSIBLE__    -- Data definitions-    C.DataDef r f a _ x pars cons -> withLocalVars $ do-        printScope "scope.data.def" 20 ("checking DataDef for " ++ prettyShow x)+    C.NiceDataDef r o a _ uc x pars cons -> withLocalVars $ do+        reportSLn "scope.data.def" 20 ("checking " ++ show o ++ " DataDef for " ++ prettyShow x)         (p, ax) <- resolveName (C.QName x) >>= \case           DefinedName p ax -> do             livesInCurrentModule ax  -- Andreas, 2017-12-04, issue #2862             return (p, ax)           _ -> genericError $ "Missing type signature for data definition " ++ prettyShow x         ensureNoLetStms pars-        -- Check for duplicate constructors-        do cs <- mapM conName cons-           let dups = nub $ cs \\ nub cs-               bad  = filter (`elem` dups) cs-           unless (distinct cs) $-             setCurrentRange bad $-                typeError $ DuplicateConstructors dups+        withLocalVars $ do+          gvars <- bindGeneralizablesIfInserted o ax+          -- Check for duplicate constructors+          do cs <- mapM conName cons+             let dups = nub $ cs \\ nub cs+                 bad  = filter (`elem` dups) cs+             unless (distinct cs) $+               setCurrentRange bad $+                 typeError $ DuplicateConstructors dups -        pars <- toAbstract pars-        let x' = anameName ax-        -- Create the module for the qualified constructors-        checkForModuleClash x -- disallow shadowing previously defined modules-        let m = mnameFromList $ qnameToList x'-        createModule (Just IsData) m-        bindModule p x m  -- make it a proper module-        cons <- toAbstract (map (ConstrDecl NoRec m a p) cons)-        -- Open the module-        -- openModule_ (C.QName x) defaultImportDir{ publicOpen = True }-        printScope "data" 20 $ "Checked data " ++ prettyShow x-        return [ A.DataDef (mkDefInfo x f PublicAccess a r) x' pars cons ]+          pars <- toAbstract pars+          let x' = anameName ax+          -- Create the module for the qualified constructors+          checkForModuleClash x -- disallow shadowing previously defined modules+          let m = mnameFromList $ qnameToList x'+          createModule (Just IsData) m+          bindModule p x m  -- make it a proper module+          cons <- toAbstract (map (ConstrDecl NoRec m a p) cons)+          printScope "data" 20 $ "Checked data " ++ prettyShow x+          f <- getConcreteFixity x+          return [ A.DataDef (mkDefInfo x f PublicAccess a r) x' uc (DataDefParams gvars pars) cons ]       where-        conName (C.Axiom _ _ _ _ _ _ _ c _) = return c+        conName (C.Axiom _ _ _ _ _ c _) = return c         conName d = errorNotConstrDecl d    -- Record definitions (mucho interesting)-    C.RecDef r f a _ x ind eta cm pars fields -> do-      printScope "scope.rec.def" 20 ("checking RecDef for " ++ prettyShow x)+    C.NiceRecDef r o a _ uc x ind eta cm pars fields -> do+      reportSLn "scope.rec.def" 20 ("checking " ++ show o ++ " RecDef for " ++ prettyShow x)       (p, ax) <- resolveName (C.QName x) >>= \case         DefinedName p ax -> do           livesInCurrentModule ax  -- Andreas, 2017-12-04, issue #2862@@ -1494,6 +1593,7 @@         _ -> genericError $ "Missing type signature for record definition " ++ prettyShow x       ensureNoLetStms pars       withLocalVars $ do+        gvars <- bindGeneralizablesIfInserted o ax         -- Check that the generated module doesn't clash with a previously         -- defined module         checkForModuleClash x@@ -1501,7 +1601,7 @@         let x' = anameName ax         -- We scope check the fields a first time when putting together         -- the type of the constructor.-        contel <- toAbstract =<< recordConstructorType fields+        contel <- localToAbstract (RecordConstructorType fields) return         m0     <- getCurrentModule         let m = A.qualifyM m0 $ mnameFromList [ last $ qnameToList x' ]         printScope "rec" 15 "before record"@@ -1513,8 +1613,8 @@           return afields         -- Andreas, 2017-07-13 issue #2642 disallow duplicate fields         -- Check for duplicate fields. (See "Check for duplicate constructors")-        do let fs = catMaybes $ for fields $ \case-                 C.NiceField _ _ _ _ _ f _ -> Just f+        do let fs = forMaybe fields $ \case+                 C.Field _ f _ -> Just f                  _ -> Nothing            let dups = nub $ fs \\ nub fs                bad  = filter (`elem` dups) fs@@ -1522,10 +1622,12 @@              setCurrentRange bad $                typeError $ DuplicateFields dups         bindModule p x m-        cm' <- mapM (\(ThingWithFixity c f, _) -> bindConstructorName m c f a p YesRec) cm+        cm' <- mapM (\(c, _) -> bindConstructorName m c a p YesRec) cm         let inst = caseMaybe cm NotInstanceDef snd         printScope "rec" 15 "record complete"-        return [ A.RecDef (mkDefInfoInstance x f PublicAccess a inst NotMacroDef r) x' ind eta cm' pars contel afields ]+        f <- getConcreteFixity x+        let params = DataDefParams gvars pars+        return [ A.RecDef (mkDefInfoInstance x f PublicAccess a inst NotMacroDef r) x' uc ind eta cm' params contel afields ]      NiceModule r p a x@(C.QName name) tel ds -> do       reportSDoc "scope.decl" 70 $ vcat $@@ -1548,7 +1650,7 @@         [ text $ "scope checking NiceModuleMacro " ++ prettyShow x         ] -      adecls <- checkModuleMacro Apply r p x modapp open dir+      adecls <- checkModuleMacro Apply TopOpenModule r p x modapp open dir        reportSDoc "scope.decl" 70 $ vcat $         [ text $ "scope checked NiceModuleMacro " ++ prettyShow x@@ -1566,6 +1668,20 @@     NiceImport r x as open dir -> setCurrentRange r $ do       notPublicWithoutOpen open dir +      -- Andreas, 2018-11-03, issue #3364, parse expression in as-clause as Name.+      let illformedAs s = traceCall (SetRange $ getRange as) $ do+            -- If @as@ is followed by something that is not a simple name,+            -- throw a warning and discard the as-clause.+            Nothing <$ warning (IllformedAsClause s)+      as <- case as of+        -- Ok if no as-clause or it (already) contains a Name.+        Nothing -> return Nothing+        Just (AsName (Right asName) r)                    -> return $ Just $ AsName asName r+        Just (AsName (Left (C.Ident (C.QName asName))) r) -> return $ Just $ AsName asName r+        Just (AsName (Left (C.Ident C.Qual{})) r) -> illformedAs "; a qualified name is not allowed here"+        Just (AsName (Left C.Underscore{})     r) -> illformedAs "; an underscore is not allowed here"+        Just (AsName (Left e)                  r) -> illformedAs ""+       -- First scope check the imported module and return its name and       -- interface. This is done with that module as the top-level module.       -- This is quite subtle. We rely on the fact that when setting the@@ -1610,7 +1726,8 @@             }       return [ A.Import minfo m adir ] -    NiceUnquoteDecl r fxs p a i tc xs e -> do+    NiceUnquoteDecl r p a i tc xs e -> do+      fxs <- mapM getConcreteFixity xs       ys <- zipWithM freshAbstractQName fxs xs       zipWithM_ (bindName p QuotableName) xs ys       e <- toAbstract e@@ -1618,29 +1735,30 @@       let mi = MutualInfo tc True r       return [ A.Mutual mi [A.UnquoteDecl mi [ mkDefInfoInstance x fx p a i NotMacroDef r | (fx, x) <- zip fxs xs ] ys e] ] -    NiceUnquoteDef r fxs p a tc xs e -> do+    NiceUnquoteDef r p a tc xs e -> do+      fxs <- mapM getConcreteFixity xs       ys <- mapM (toAbstract . OldName) xs       zipWithM_ (rebindName p QuotableName) xs ys       e <- toAbstract e       zipWithM_ (rebindName p DefName) xs ys       return [ A.UnquoteDef [ mkDefInfo x fx PublicAccess a r | (fx, x) <- zip fxs xs ] ys e ] -    NicePatternSyn r fx n as p -> do+    NicePatternSyn r n as p -> do       reportSLn "scope.pat" 10 $ "found nice pattern syn: " ++ prettyShow n       (as, p) <- withLocalVars $ do          p  <- toAbstract =<< parsePatternSyn p          checkPatternLinearity p $ \ys ->            typeError $ RepeatedVariablesInPattern ys          bindVarsToBind-         let err = "Dot patterns are not allowed in pattern synonyms. Use '_' instead."-         p <- noDotPattern err p+         let err = "Dot or equality patterns are not allowed in pattern synonyms. Maybe use '_' instead."+         p <- noDotorEqPattern err p          as <- (traverse . mapM) (unVarName <=< resolveName . C.QName) as          unlessNull (patternVars p \\ map unArg as) $ \ xs -> do            typeError . GenericDocError =<< do-             text "Unbound variables in pattern synonym: " <+>+             "Unbound variables in pattern synonym: " <+>                sep (map prettyA xs)          return (as, p)-      y <- freshAbstractQName fx n+      y <- freshAbstractQName' n       bindName PublicAccess PatternSynName n y       -- Expanding pattern synonyms already at definition makes it easier to       -- fold them back when printing (issue #2762).@@ -1652,8 +1770,10 @@      where       -- checking postulate or type sig. without checking safe flag-      toAbstractNiceAxiom funSig isMacro (C.Axiom r f p a i info mp x t) = do+      toAbstractNiceAxiom funSig isMacro (C.Axiom r p a i info x t) = do         t' <- toAbstractCtx TopCtx t+        f  <- getConcreteFixity x+        mp <- getConcretePolarity x         y  <- freshAbstractQName f x         let kind | isMacro == MacroDef = MacroName                  | otherwise           = DefName@@ -1661,7 +1781,69 @@         return [ A.Axiom funSig (mkDefInfoInstance x f p a i isMacro r) info mp y t' ]       toAbstractNiceAxiom _ _ _ = __IMPOSSIBLE__ +unGeneralized :: A.Expr -> (Set.Set I.QName, A.Expr)+unGeneralized (A.Generalized s t) = (s, t)+unGeneralized (A.ScopedExpr si e) = A.ScopedExpr si <$> unGeneralized e+unGeneralized t = (mempty, t) +collectGeneralizables :: ScopeM a -> ScopeM (Set I.QName, a)+collectGeneralizables m = bracket_ open close $ do+    a <- m+    s <- useTC stGeneralizedVars+    case s of+        Nothing -> __IMPOSSIBLE__+        Just s -> return (s, a)+  where+    open = do+        gvs <- useTC stGeneralizedVars+        stGeneralizedVars `setTCLens` Just mempty+        pure gvs+    close = (stGeneralizedVars `setTCLens`)++createBoundNamesForGeneralizables :: Set I.QName -> ScopeM (Map I.QName I.Name)+createBoundNamesForGeneralizables vs =+  flip Map.traverseWithKey (Map.fromSet (const ()) vs) $ \ q _ -> do+    let x  = nameConcrete $ qnameName q+        fx = nameFixity   $ qnameName q+    freshAbstractName fx x++collectAndBindGeneralizables :: ScopeM a -> ScopeM (Map I.QName I.Name, a)+collectAndBindGeneralizables m = do+  (s, res) <- collectGeneralizables m+  -- We should bind the named generalizable variables as fresh variables+  binds <- createBoundNamesForGeneralizables s+  bindGeneralizables binds+  return (binds, res)++bindGeneralizables :: Map A.QName A.Name -> ScopeM ()+bindGeneralizables vars =+  forM_ (Map.toList vars) $ \ (q, y) ->+    bindVariable LambdaBound (nameConcrete $ qnameName q) y++-- | Bind generalizable variables if data or record decl was split by the system+--   (origin == Inserted)+bindGeneralizablesIfInserted :: Origin -> AbstractName -> ScopeM (Set A.Name)+bindGeneralizablesIfInserted Inserted y = bound <$ bindGeneralizables gvars+  where gvars = case anameMetadata y of+          GeneralizedVarsMetadata gvars -> gvars+          NoMetadata                    -> Map.empty+        bound = Set.fromList (Map.elems gvars)+bindGeneralizablesIfInserted UserWritten _ = return Set.empty+bindGeneralizablesIfInserted _ _           = __IMPOSSIBLE__++newtype GenTel = GenTel C.Telescope+data GenTelAndType = GenTelAndType C.Telescope C.Expr++instance ToAbstract GenTel A.GeneralizeTelescope where+  toAbstract (GenTel tel) =+    uncurry A.GeneralizeTel <$> collectAndBindGeneralizables (toAbstract tel)++instance ToAbstract GenTelAndType (A.GeneralizeTelescope, A.Expr) where+  toAbstract (GenTelAndType tel t) = do+    (binds, (tel, t)) <- collectAndBindGeneralizables $+                          (,) <$> toAbstract tel <*> toAbstract t+    return (A.GeneralizeTel binds tel, t)+ -- | Make sure definition is in same module as signature. class LivesInCurrentModule a where   livesInCurrentModule :: a -> ScopeM ()@@ -1682,9 +1864,10 @@ data IsRecordCon = YesRec | NoRec data ConstrDecl = ConstrDecl IsRecordCon A.ModuleName IsAbstract Access C.NiceDeclaration -bindConstructorName :: ModuleName -> C.Name -> Fixity'-> IsAbstract ->+bindConstructorName :: ModuleName -> C.Name -> IsAbstract ->                        Access -> IsRecordCon -> ScopeM A.QName-bindConstructorName m x f a p record = do+bindConstructorName m x a p record = do+  f <- getConcreteFixity x   -- The abstract name is the qualified one   y <- withCurrentModule m $ freshAbstractQName f x   -- Bind it twice, once unqualified and once qualified@@ -1705,22 +1888,22 @@ instance ToAbstract ConstrDecl A.Declaration where   toAbstract (ConstrDecl record m a p d) = do     case d of-      C.Axiom r f p1 a1 i info Nothing x t -> do -- rel==Relevant+      C.Axiom r p1 a1 i info x t -> do -- rel==Relevant         -- unless (p1 == p) __IMPOSSIBLE__  -- This invariant is currently violated by test/Succeed/Issue282.agda         unless (a1 == a) __IMPOSSIBLE__         t' <- toAbstractCtx TopCtx t         -- The abstract name is the qualified one         -- Bind it twice, once unqualified and once qualified-        y <- bindConstructorName m x f a p record+        f <- getConcreteFixity x+        y <- bindConstructorName m x a p record         printScope "con" 15 "bound constructor"         return $ A.Axiom NoFunSig (mkDefInfoInstance x f p a i NotMacroDef r)                          info Nothing y t'-      C.Axiom _ _ _ _ _ _ (Just _) _ _ -> __IMPOSSIBLE__       _ -> errorNotConstrDecl d  errorNotConstrDecl :: C.NiceDeclaration -> ScopeM a errorNotConstrDecl d = typeError . GenericDocError $-        P.text "Illegal declaration in data type definition " P.$$+        "Illegal declaration in data type definition " P.$$         P.nest 2 (P.vcat $ map pretty (notSoNiceDeclarations d))  instance ToAbstract C.Pragma [A.Pragma] where@@ -1738,54 +1921,6 @@       A.Con x          -> genericError $ "REWRITE used on ambiguous name " ++ prettyShow x       A.Var x          -> genericError $ "REWRITE used on parameter " ++ prettyShow x ++ " instead of on a defined symbol"       _       -> __IMPOSSIBLE__-  toAbstract (C.CompiledTypePragma _ x hs) = do-    e <- toAbstract $ OldQName x Nothing-    case e of-      A.Def x -> return [ A.CompiledTypePragma x hs ]-      _       -> genericError $ "Bad compiled type: " ++ prettyShow x  -- TODO: error message-  toAbstract (C.CompiledDataPragma _ x hs hcs) = do-    e <- toAbstract $ OldQName x Nothing-    case e of-      A.Def x -> return [ A.CompiledDataPragma x hs hcs ]-      _       -> genericError $ "Not a datatype: " ++ prettyShow x  -- TODO: error message-  toAbstract (C.CompiledPragma _ x hs) = do-    e <- toAbstract $ OldQName x Nothing-    y <- case e of-          A.Def x -> return x-          A.Proj _ c | Just x <- getUnambiguous c -> return x -- TODO: do we need to do s.th. special for projections? (Andreas, 2014-10-12)-          A.Proj _ x -> genericError $ "COMPILED on ambiguous name " ++ prettyShow x-          A.Con _ -> genericError "Use COMPILED_DATA for constructors" -- TODO-          _       -> __IMPOSSIBLE__-    return [ A.CompiledPragma y hs ]-  toAbstract (C.CompiledExportPragma _ x hs) = do-    e <- toAbstract $ OldQName x Nothing-    y <- case e of-          A.Def x -> return x-          _       -> __IMPOSSIBLE__-    return [ A.CompiledExportPragma y hs ]-  toAbstract (C.CompiledJSPragma _ x ep) = do-    e <- toAbstract $ OldQName x Nothing-    y <- case e of-          A.Def x -> return x-          A.Proj _ p | Just x <- getUnambiguous p -> return x-          A.Proj _ x -> genericError $-            "COMPILED_JS used on ambiguous name " ++ prettyShow x-          A.Con c | Just x <- getUnambiguous c -> return x-          A.Con x -> genericError $-            "COMPILED_JS used on ambiguous name " ++ prettyShow x-          _       -> __IMPOSSIBLE__-    return [ A.CompiledJSPragma y ep ]-  toAbstract (C.CompiledUHCPragma _ x cr) = do-    e <- toAbstract $ OldQName x Nothing-    y <- case e of-          A.Def x -> return x-          _       -> __IMPOSSIBLE__-    return [ A.CompiledUHCPragma y cr ]-  toAbstract (C.CompiledDataUHCPragma _ x crd crcs) = do-    e <- toAbstract $ OldQName x Nothing-    case e of-      A.Def x -> return [ A.CompiledDataUHCPragma x crd crcs ]-      _       -> fail $ "Bad compiled type: " ++ prettyShow x  -- TODO: error message   toAbstract (C.ForeignPragma _ b s) = [] <$ addForeignCode b s   toAbstract (C.CompilePragma _ b x s) = do     e <- toAbstract $ OldQName x Nothing@@ -1839,11 +1974,17 @@     if b `elem` builtinsNoDef then do       case q of         C.QName x -> do-          unlessM ((UnknownName ==) <$> resolveName q) $ genericError $-            "BUILTIN " ++ b ++ " declares an identifier " ++-            "(no longer expects an already defined identifier)"-          y <- freshAbstractQName noFixity' x-          bindName PublicAccess DefName x y+          -- The name shouldn't exist yet. If it does, we raise a warning+          -- and drop the existing definition.+          unlessM ((UnknownName ==) <$> resolveName q) $ do+            genericWarning $ P.text $+               "BUILTIN " ++ b ++ " declares an identifier " +++               "(no longer expects an already defined identifier)"+            modifyCurrentScope $ removeNameFromScope PublicNS x+          -- We then happily bind the name+          y <- freshAbstractQName' x+          kind <- fromMaybe __IMPOSSIBLE__ <$> builtinKindOfName b+          bindName PublicAccess kind x y           return [ A.BuiltinNoDefPragma b y ]         _ -> genericError $           "Pragma BUILTIN " ++ b ++ ": expected unqualified identifier, " ++@@ -1851,15 +1992,6 @@     else do       q <- toAbstract $ ResolveQName q       return [ A.BuiltinPragma b q ]-  toAbstract (C.ImportPragma _ i) = do-    addHaskellImport i-    return []-  toAbstract (C.ImportUHCPragma _ i) = do-    addHaskellImportUHC i-    return []-  toAbstract (C.HaskellCodePragma _ s) = do-    addInlineHaskell s-    return []   toAbstract (C.EtaPragma _ x) = do     e <- toAbstract $ OldQName x Nothing     case e of@@ -1911,7 +2043,7 @@    toAbstract (C.WarningOnUsage _ oqn str) = do     qn <- toAbstract $ OldName oqn-    stLocalUserWarnings %= Map.insert qn str+    stLocalUserWarnings `modifyTCLens` Map.insert qn str     pure []    -- Termination checking pragmes are handled by the nicifier@@ -1925,8 +2057,14 @@   -- Polarity pragmas are handled by the niceifier.   toAbstract C.PolarityPragma{} = __IMPOSSIBLE__ +  -- No universe checking pragmas are handled by the niceifier.+  toAbstract C.NoUniverseCheckPragma{} = __IMPOSSIBLE__+ instance ToAbstract C.Clause A.Clause where   toAbstract (C.Clause top catchall lhs@(C.LHS p eqs with) rhs wh wcs) = withLocalVars $ do+    -- Jesper, 2018-12-10, #3095: pattern variables bound outside the+    -- module are locally treated as module parameters+    modifyScope_ $ updateScopeLocals $ map $ second patternToModuleBound     -- Andreas, 2012-02-14: need to reset local vars before checking subclauses     vars <- getLocalVars     let wcs' = for wcs $ \ c -> setLocalVars vars $> c@@ -1985,7 +2123,7 @@   let anonymousSomeWhere = maybe False (isNoName . fst) whname   when anonymousSomeWhere $    void $ -- We can ignore the returned default A.ImportDirective.-    openModule_ (C.QName m) $+    openModule_ TopOpenModule (C.QName m) $       defaultImportDir { publicOpen = True }   return (x, A.WhereDecls (am <$ whname) ds) @@ -2069,16 +2207,28 @@         printLocals 10 "checked dots:"         return $ A.LHS (LHSRange $ getRange lhs) lhscore +-- Merges adjacent EqualP patterns into one: typecheking expects only one pattern for each domain in the telescope.+mergeEqualPs :: [NamedArg (Pattern' e)] -> [NamedArg (Pattern' e)]+mergeEqualPs = go Nothing+  where+    go acc (Arg i (Named n (A.EqualP r es)) : ps) = go (fmap (fmap (++es)) acc `mplus` Just ((i,n,r),es)) ps+    go Nothing [] = []+    go Nothing (p : ps) = p : go Nothing ps+    go (Just ((i,n,r),es)) ps = Arg i (Named n (A.EqualP r es)) :+      case ps of+        (p : ps) -> p : go Nothing ps+        []     -> []+ -- does not check pattern linearity instance ToAbstract C.LHSCore (A.LHSCore' C.Expr) where     toAbstract (C.LHSHead x ps) = do         x <- withLocalVars $ do           setLocalVars []           toAbstract (OldName x)-        A.LHSHead x <$> toAbstract ps+        A.LHSHead x . mergeEqualPs <$> toAbstract ps     toAbstract (C.LHSProj d ps1 l ps2) = do         unless (null ps1) $ typeError $ GenericDocError $-          P.text "Ill-formed projection pattern" P.<+> P.pretty (foldl C.AppP (C.IdentP d) ps1)+          "Ill-formed projection pattern" P.<+> P.pretty (foldl C.AppP (C.IdentP d) ps1)         qx <- resolveName d         ds <- case qx of                 FieldName ds -> return $ fmap anameName ds@@ -2086,7 +2236,7 @@                 _           -> genericError $                   "head of copattern needs to be a field identifier, but "                   ++ prettyShow d ++ " isn't one"-        A.LHSProj (AmbQ ds) <$> toAbstract l <*> toAbstract ps2+        A.LHSProj (AmbQ ds) <$> toAbstract l <*> (mergeEqualPs <$> toAbstract ps2)     toAbstract (C.LHSWith core wps ps) = do       liftA3 A.LHSWith         (toAbstract core)@@ -2129,11 +2279,47 @@     VarPatName y         -> do       reportSLn "scope.pat" 60 $ "  resolved to VarPatName " ++ show y ++ " with range " ++ show (getRange y)       return $ VarP $ A.BindName y-    ConPatName ds        -> return $ ConP (ConPatInfo ConOCon (PatRange r) False)+    ConPatName ds        -> return $ ConP (ConPatInfo ConOCon (PatRange r) ConPatEager)                                           (AmbQ $ fmap anameName ds) []     PatternSynPatName ds -> return $ PatternSynP (PatRange r)                                                  (AmbQ $ fmap anameName ds) [] +-- | Apply an abstract syntax pattern head to pattern arguments.+--+--   Fails with 'InvalidPattern' if head is not a constructor pattern+--   (or similar) that can accept arguments.+--+applyAPattern+  :: C.Pattern            -- ^ The application pattern in concrete syntax.+  -> A.Pattern' C.Expr    -- ^ Head of application.+  -> NAPs C.Expr          -- ^ Arguments of application.+  -> ScopeM (A.Pattern' C.Expr)+applyAPattern p0 p ps = do+  setRange (getRange p0) <$> do+    case p of+      A.ConP i x as        -> return $ A.ConP        i x (as ++ ps)+      A.DefP i x as        -> return $ A.DefP        i x (as ++ ps)+      A.PatternSynP i x as -> return $ A.PatternSynP i x (as ++ ps)+      -- Dotted constructors are turned into "lazy" constructor patterns.+      A.DotP i (Ident x)   -> resolveName x >>= \case+        ConstructorName ds -> do+          let cpi = ConPatInfo ConOCon i ConPatLazy+              c   = AmbQ (fmap anameName ds)+          return $ A.ConP cpi c ps+        _ -> failure+      A.DotP{}    -> failure+      A.VarP{}    -> failure+      A.ProjP{}   -> failure+      A.WildP{}   -> failure+      A.AsP{}     -> failure+      A.AbsurdP{} -> failure+      A.LitP{}    -> failure+      A.RecP{}    -> failure+      A.EqualP{}  -> failure+      A.WithP{}   -> failure+  where+    failure = typeError $ InvalidPattern p0+ instance ToAbstract C.Pattern (A.Pattern' C.Expr) where      toAbstract (C.IdentP x) =@@ -2163,25 +2349,9 @@         p <- distributeDots p         reportSLn "scope.pat" 50 $ "distributeDots after  = " ++ show p         (p', q') <- toAbstract (p, q)-        case p' of-            ConP i x as        -> return $ ConP (i {patInfo = info}) x (as ++ [q'])-            ProjP i o x        -> fail-            DefP _ x as        -> return $ DefP info x (as ++ [q'])-            PatternSynP _ x as -> return $ PatternSynP info x (as ++ [q'])-            A.DotP i e         -> case e of-              Ident x -> resolveName x >>= \case-                ConstructorName ds -> do-                  let cpi = ConPatInfo ConOCon i True-                      c   = AmbQ (fmap anameName ds)-                  return $ ConP cpi c [q']-                _ -> fail-              _ -> fail-            _                  -> fail-        where-            r = getRange p0-            info = PatRange r-            fail = typeError $ InvalidPattern p0+        applyAPattern p0 p' [q'] +        where             distributeDots :: C.Pattern -> ScopeM C.Pattern             distributeDots p@(C.DotP r e) = distributeDotsExpr r e             distributeDots p = return p@@ -2208,15 +2378,10 @@             parseRawApp e             = return e      toAbstract p0@(OpAppP r op ns ps) = do+        reportSLn "scope.pat" 60 $ "ConcreteToAbstract.toAbstract OpAppP{}: " ++ show p0         p  <- resolvePatternIdentifier (getRange op) op (Just ns)         ps <- toAbstract ps-        case p of-          ConP        i x as -> return $ ConP (i {patInfo = info}) x (as ++ ps)-          DefP        _ x as -> return $ DefP               info   x (as ++ ps)-          PatternSynP _ x as -> return $ PatternSynP        info   x (as ++ ps)-          _                  -> __IMPOSSIBLE__-        where-        info = PatRange r+        applyAPattern p0 p ps      -- Removed when parsing     toAbstract (HiddenP _ _)   = __IMPOSSIBLE__@@ -2230,11 +2395,26 @@     toAbstract (C.ParenP _ p)   = toAbstract p     toAbstract (C.LitP l)       = return $ A.LitP l     toAbstract p0@(C.AsP r x p) = do-        x <- toAbstract (NewName PatternBound x)+        -- Andreas, 2018-06-30, issue #3147: as-variables can be non-linear a priori!+        -- x <- toAbstract (NewName PatternBound x)+        x <- bindPatternVariable x         p <- toAbstract p         return $ A.AsP (PatRange r) (A.BindName x) p-    -- we have to do dot patterns at the end-    toAbstract p0@(C.DotP r e)     = return $ A.DotP (PatRange r) e+    toAbstract p0@(C.EqualP r es)  = return $ A.EqualP (PatRange r) es++    -- We have to do dot patterns at the end since they can+    -- refer to the variables bound by the other patterns.+    toAbstract p0@(C.DotP r e) = do+      let fallback = return $ A.DotP (PatRange r) e+      case e of+        C.Ident x -> resolveName x >>= \case+          -- Andreas, 2018-06-19, #3130+          -- We interpret .x as postfix projection if x is a field name in scope+          FieldName xs -> return $ A.ProjP (PatRange r) ProjPostfix $ AmbQ $+            fmap anameName xs+          _ -> fallback+        _ -> fallback+     toAbstract p0@(C.AbsurdP r)    = return $ A.AbsurdP (PatRange r)     toAbstract (C.RecP r fs)       = A.RecP (PatRange r) <$> mapM (traverse toAbstract) fs     toAbstract (C.WithP r p)       = A.WithP (PatRange r) <$> toAbstract p@@ -2329,7 +2509,7 @@         x <- freshName noRange "section"         let i = setOrigin Inserted $ argInfo a         (ls, ns) <- replacePlaceholders as-        return ( A.DomainFree i (A.BindName x) : ls+        return ( A.DomainFree (unnamedArg i $ A.BindName x) : ls                , set (Left (Var x)) a : ns                )       where
src/full/Agda/Syntax/Translation/InternalToAbstract.hs view
@@ -99,6 +99,8 @@ -- | Drops hidden arguments unless --show-implicit. nelims :: Expr -> [I.Elim' (Named_ Expr)] -> TCM Expr nelims e [] = return e+nelims e (I.IApply x y r : es) =+  nelims (A.App defaultAppInfo_ e $ defaultArg r) es nelims e (I.Apply arg : es) = do   arg <- reify arg  -- This replaces the arg by _ if irrelevant   dontShowImp <- not <$> showImplicitArguments@@ -106,7 +108,7 @@          | otherwise                     = A.App defaultAppInfo_ e arg   nelims hd es nelims e (I.Proj ProjPrefix d : es)             = nelimsProjPrefix e d es-nelims e (I.Proj o          d : es) | isSelf e  = nelimsProjPrefix e d es+nelims e (I.Proj o          d : es) | isSelf e  = nelims (A.Proj ProjPrefix $ unambiguous d) es                                     | otherwise =   nelims (A.App defaultAppInfo_ e (defaultNamedArg $ A.Proj o $ unambiguous d)) es @@ -114,15 +116,11 @@ nelimsProjPrefix e d es =   nelims (A.App defaultAppInfo_ (A.Proj ProjPrefix $ unambiguous d) $ defaultNamedArg e) es --- | If we are inside a record definition, the record value (self)---   is a variable with name "".---   In this case, we need to use a prefix-projection.  (Issue #2868.)---   Prefix projections magically print correctly since the thing---   we are projecting from has a null name, so vanishes in the visible world.---   We love hacks, don't we?  Sigh.+-- | If we are referencing the record from inside the record definition, we don't insert an+-- | A.App isSelf :: Expr -> Bool isSelf = \case-  A.Var x -> null $ prettyShow x+  A.Var n -> nameIsRecordName n   _ -> False  -- | Drops hidden arguments unless --show-implicit.@@ -160,7 +158,7 @@ instance Reify MetaId Expr where     reifyWhen = reifyWhenE     reify x@(MetaId n) = liftTCM $ do-      b <- asks envPrintMetasBare+      b <- asksTC envPrintMetasBare       mi  <- mvInfo <$> lookupMeta x       let mi' = Info.MetaInfo                  { metaRange          = getRange $ miClosRange mi@@ -169,8 +167,17 @@                  , metaNameSuggestion = if b then "" else miNameSuggestion mi                  }           underscore = return $ A.Underscore mi'-      caseMaybeM (isInteractionMeta x) underscore $ \ ii@InteractionId{} ->+      -- If we are printing a term that will be pasted into the user+      -- source, we turn all unsolved (non-interaction) metas into+      -- interaction points+      isInteractionMeta x >>= \case+        Nothing | b -> do+          ii <- registerInteractionPoint False noRange Nothing+          connectInteractionPoint ii x           return $ A.QuestionMark mi' ii+        Just ii | b -> underscore+        Nothing     -> underscore+        Just ii     -> return $ A.QuestionMark mi' ii  -- Does not print with-applications correctly: -- instance Reify DisplayTerm Expr where@@ -230,8 +237,8 @@         reportSDoc "reify.display" 70 $ do           doc <- prettyA $ SpineLHS empty f' (ps' ++ wps' ++ wps)           return $ vcat-            [ text "rewritten lhs to"-            , text "  lhs' = " <+> doc+            [ "rewritten lhs to"+            , "  lhs' = " <+> doc             ]         reifyDisplayFormP f' ps' (wps' ++ wps)       _ -> do@@ -263,12 +270,14 @@     okDisplayTerm _         = False      okDElim :: Elim' DisplayTerm -> Bool+    okDElim (I.IApply x y r) = okDisplayTerm r     okDElim (I.Apply v) = okDisplayTerm $ unArg v     okDElim I.Proj{}    = True      okToDropE :: Elim' Term -> Bool     okToDropE (I.Apply v) = okToDrop v     okToDropE I.Proj{}    = False+    okToDropE (I.IApply x y r) = False      okToDrop :: Arg I.Term -> Bool     okToDrop arg = notVisible arg && case unArg arg of@@ -281,6 +290,7 @@     okArg = okTerm . unArg      okElim :: Elim' I.Term -> Bool+    okElim (I.IApply x y r) = okTerm r     okElim (I.Apply a) = okArg a     okElim (I.Proj{})  = True @@ -313,6 +323,7 @@         argToPat arg = traverse termToPat arg          elimToPat :: I.Elim' DisplayTerm -> TCM (NamedArg A.Pattern)+        elimToPat (I.IApply _ _ r) = argToPat (Arg defaultArgInfo r)         elimToPat (I.Apply arg) = argToPat arg         elimToPat (I.Proj o d)  = return $ defaultNamedArg $ A.ProjP patNoRange o $ unambiguous d @@ -323,14 +334,16 @@         termToPat (DTerm (I.Var n [])) = return $ unArg $ fromMaybe __IMPOSSIBLE__ $ ps !!! n          termToPat (DCon c ci vs)          = fmap unnamed <$> tryRecPFromConP =<< do-           A.ConP (ConPatInfo ci patNoRange False) (unambiguous (conName c)) <$> mapM argToPat vs+           A.ConP (ConPatInfo ci patNoRange ConPatEager) (unambiguous (conName c)) <$> mapM argToPat vs          termToPat (DTerm (I.Con c ci vs)) = fmap unnamed <$> tryRecPFromConP =<< do-           A.ConP (ConPatInfo ci patNoRange False) (unambiguous (conName c)) <$> mapM (elimToPat . fmap DTerm) vs+           A.ConP (ConPatInfo ci patNoRange ConPatEager) (unambiguous (conName c)) <$> mapM (elimToPat . fmap DTerm) vs          termToPat (DTerm (I.Def _ [])) = return $ unnamed $ A.WildP patNoRange         termToPat (DDef _ [])          = return $ unnamed $ A.WildP patNoRange +        termToPat (DTerm (I.Lit l))    = return $ unnamed $ A.LitP l+         termToPat (DDot v)             = unnamed . A.DotP patNoRange <$> termToExpr v         termToPat v                    = unnamed . A.DotP patNoRange <$> reify v @@ -358,7 +371,7 @@               -- even the pattern variables @n < len@ can be               -- applied to some args @vs@.               e <- if n < len-                   then return $ A.patternToExpr $ namedArg $ ps !! n+                   then return $ A.patternToExpr $ namedArg $ indexWithDefault __IMPOSSIBLE__ ps n                    else reify (I.var (n - len))               apps e =<< argsToExpr vs             _ -> return underscore@@ -371,9 +384,32 @@   reifyWhen = reifyWhenE   reify v = reifyTerm True v +reifyPathPConstAsPath :: QName -> Elims -> TCM (QName, Elims)+reifyPathPConstAsPath x es@[I.Apply l, I.Apply t, I.Apply lhs, I.Apply rhs] = do+   reportSLn "reify.def" 100 $ "reifying def path " ++ show (x,es)+   mpath  <- getBuiltinName' builtinPath+   mpathp <- getBuiltinName' builtinPathP+   let fallback = return (x,es)+   case (,) <$> mpath <*> mpathp of+     Just (path,pathp) | x == pathp -> do+       let a = case unArg t of+                I.Lam _ (NoAbs _ b)    -> Just b+                I.Lam _ (Abs   _ b)+                  | not $ 0 `freeIn` b -> Just (strengthen __IMPOSSIBLE__ b)+                _                      -> Nothing+       case a of+         Just a -> return (path, [I.Apply l, I.Apply (setHiding Hidden $ defaultArg a), I.Apply lhs, I.Apply rhs])+         Nothing -> fallback+     _ -> fallback+reifyPathPConstAsPath x es = return (x,es)+ reifyTerm :: Bool -> Term -> TCM Expr-reifyTerm expandAnonDefs0 v = do-  metasBare <- asks envPrintMetasBare+reifyTerm expandAnonDefs0 v0 = do+  -- Jesper 2018-11-02: If 'PrintMetasBare', drop all meta eliminations.+  metasBare <- asksTC envPrintMetasBare+  v <- instantiate v0 >>= \case+    I.MetaV x _ | metasBare -> return $ I.MetaV x []+    v -> return v   -- Ulf 2014-07-10: Don't expand anonymous when display forms are disabled   -- (i.e. when we don't care about nice printing)   expandAnonDefs <- return expandAnonDefs0 `and2M` displayFormsEnabled@@ -381,13 +417,19 @@   -- then we print system-generated projections as postfix, else prefix.   havePfp <- optPostfixProjections <$> pragmaOptions   let pred = if havePfp then (== ProjPrefix) else (/= ProjPostfix)-  v <- instantiate v-  case applyUnless metasBare (unSpine' pred) v of+  case unSpine' pred v of+    -- Hack to print generalized field projections with nicer names. Should+    -- only show up in errors. Check the spined form!+    _ | I.Var n (I.Proj _ p : es) <- v,+        Just name <- getGeneralizedFieldName p -> do+      let fakeName = (qnameName p) { nameConcrete = C.Name noRange C.InScope [C.Id name] } -- TODO: infix names!?+      elims (A.Var fakeName) =<< reify es     I.Var n es   -> do         x  <- liftTCM $ nameOfBV n `catchError` \_ -> freshName_ ("@" ++ show n)         elims (A.Var x) =<< reify es     I.Def x es   -> do       reportSLn "reify.def" 100 $ "reifying def " ++ prettyShow x+      (x,es) <- reifyPathPConstAsPath x es       reifyDisplayForm x es $ reifyDef expandAnonDefs x es     I.Con c ci vs -> do       let x = conName c@@ -411,7 +453,7 @@           when (n > np) __IMPOSSIBLE__           let h = A.Con (unambiguous x)           if null vs then return h else do-            es <- reify (fromMaybe __IMPOSSIBLE__ $ allApplyElims vs)+            es <- reify (map (fromMaybe __IMPOSSIBLE__ . isApplyElim) vs)             -- Andreas, 2012-04-20: do not reify parameter arguments of constructor             -- if the first regular constructor argument is hidden             -- we turn it into a named argument, in order to avoid confusion@@ -433,8 +475,8 @@                 -- Andreas, 2012-09-18                 -- If the first regular constructor argument is hidden,                 -- we keep the parameters to avoid confusion.-                (Dom info _ : _) | notVisible info -> do-                  let us = for (drop n pars) $ \ (Dom ai _) ->+                (Dom {domInfo = info} : _) | notVisible info -> do+                  let us = for (drop n pars) $ \ (Dom {domInfo = ai}) ->                              -- setRelevance Relevant $                              hideOrKeepInstance $ Arg ai underscore                   apps h $ us ++ es  -- Note: unless --show-implicit, @apps@ will drop @us@.@@ -444,7 +486,7 @@ --    I.Lam info b | isAbsurdBody b -> return $ A. AbsurdLam noExprInfo $ getHiding info     I.Lam info b    -> do       (x,e) <- reify b-      return $ A.Lam exprNoRange (DomainFree info $ BindName x) e+      return $ A.Lam exprNoRange (DomainFree $ unnamedArg info $ BindName x) e       -- Andreas, 2011-04-07 we do not need relevance information at internal Lambda     I.Lit l        -> reify l     I.Level l      -> reify l@@ -461,22 +503,67 @@             {- then -} (pure $ Arg (domInfo a) underscore)             {- else -} (reify a)       where-        mkPi b (Arg info a) = do-          -- #2776: Out-of-scope dots are not helpful at this point.-          (x, b) <- reify b{ absName = unNotInScopeName $ absName b }-          return $ A.Pi noExprInfo [TypedBindings noRange $ Arg info (TBind noRange [pure $ BindName x] a)] b+        mkPi b (Arg info a') = do+          (x, b) <- reify b+          return $ A.Pi noExprInfo [TBind noRange [Arg info $ Named (domName a) $ BindName x] a'] b         -- We can omit the domain type if it doesn't have any free variables         -- and it's mentioned in the target type.         domainFree a b = do-          df <- asks envPrintDomainFreePi+          df <- asksTC envPrintDomainFreePi           return $ and [df, freeIn 0 b, closed a]      I.Sort s     -> reify s     I.MetaV x es -> do-      x' <- reify x-      ifM (asks envPrintMetasBare) {-then-} (return x') {-else-} $-        elims x' =<< reify es+          x' <- reify x++          es' <- reify es++          mv <- lookupMeta x+          (msub1,meta_tel,msub2) <- do+            local_chkpt <- viewTC eCurrentCheckpoint+            (chkpt, tel, msub2) <- enterClosure (getMetaInfo mv) $ \ _ ->+                               (,,) <$> viewTC eCurrentCheckpoint+                                    <*> getContextTelescope+                                    <*> viewTC (eCheckpoints . key local_chkpt)+            (,,) <$> viewTC (eCheckpoints . key chkpt) <*> pure tel <*> pure msub2+          let+              addNames []    es = map (fmap unnamed) es+              addNames _     [] = []+              addNames xs     (I.Proj{} : _) = __IMPOSSIBLE__+              addNames xs     (I.IApply x y r : es) =+                -- Needs to be I.Apply so it can have an Origin field.+                addNames xs (I.Apply (defaultArg r) : es)+              addNames (x:xs) (I.Apply arg : es) =+                I.Apply (Named (Just x) <$> (setOrigin Substitution arg)) : addNames xs es++              p = mvPermutation mv+              applyPerm p vs = permute (takeP (size vs) p) vs++              names = map unranged $ p `applyPerm` teleNames meta_tel+              named_es' = addNames names es'++              dropIdentitySubs sub_local2G sub_tel2G =+                 let+                     args_G = applySubst sub_tel2G $ p `applyPerm` (teleArgs meta_tel :: [Arg Term])+                     es_G = sub_local2G `applySubst` es+                     sameVar x (I.Apply y) = isJust xv && xv == deBruijnView (unArg y)+                      where+                       xv = deBruijnView $ unArg x+                     sameVar _ _ = False+                     dropArg = take (size names) $ zipWith sameVar args_G es_G+                     doDrop (b : xs)  (e : es) = (if b then id else (e :)) $ doDrop xs es+                     doDrop []        es = es+                     doDrop _         [] = []+                 in doDrop dropArg $ named_es'++              simpl_named_es' | Just sub_mtel2local <- msub1 = dropIdentitySubs IdS           sub_mtel2local+                              | Just sub_local2mtel <- msub2 = dropIdentitySubs sub_local2mtel IdS+                              | otherwise                    = named_es'++          nelims x' simpl_named_es'+     I.DontCare v -> A.DontCare <$> reifyTerm expandAnonDefs v+    I.Dummy s -> return $ A.Lit $ LitString noRange s   where     -- Andreas, 2012-10-20  expand a copy if not in scope     -- to improve error messages.@@ -529,7 +616,7 @@                             vars = map (getArgInfo &&& name . namedArg) $ drop (length es) $ init $ namedClausePats cl                             lam (i, s) = do                               x <- freshName_ s-                              return $ A.Lam exprNoRange (A.DomainFree i $ A.BindName x)+                              return $ A.Lam exprNoRange (A.DomainFree $ unnamedArg i $ A.BindName x)                         foldr ($) absLam <$> mapM lam vars                       | otherwise -> elims absLam =<< reify (drop n es) @@ -545,16 +632,16 @@         df <- displayFormsEnabled          -- #3004: give up if we have to print a pattern lambda inside its own body!-        alreadyPrinting <- view ePrintingPatternLambdas+        alreadyPrinting <- viewTC ePrintingPatternLambdas          extLam <- case def of           Function{ funExtLam = Just{}, funProjection = Just{} } -> __IMPOSSIBLE__-          Function{ funExtLam = Just (ExtLamInfo m) } -> Just . size <$> lookupSection m+          Function{ funExtLam = Just (ExtLamInfo m sys) } -> Just . (,sys) . size <$> lookupSection m           _ -> return Nothing         case extLam of-          Just pars | df, notElem x alreadyPrinting ->-            locally ePrintingPatternLambdas (x :) $-            reifyExtLam x pars (defClauses defn) es+          Just (pars, sys) | df, notElem x alreadyPrinting ->+            locallyTC ePrintingPatternLambdas (x :) $+            reifyExtLam x pars sys (defClauses defn) es          -- Otherwise (ordinary function call):           _ -> do@@ -578,7 +665,7 @@               -- These are the dropped projection arguments               scope <- getScope               let underscore = A.Underscore $ Info.emptyMetaInfo { metaScope = scope }-              let pad = for as $ \ (Dom ai (x, _)) ->+              let pad = for as $ \ (Dom{domInfo = ai, unDom = (x, _)}) ->                     Arg ai $ Named (Just $ unranged x) underscore                -- Now pad' ++ es' = drop n (pad ++ es)@@ -622,7 +709,9 @@              [ "  pad = " ++ show pad              , "  nes = " ++ show nes              ]-           let hd = List.foldl' (A.App defaultAppInfo_) (A.Def x) pad+           let hd0 | isProperProjection def = A.Proj ProjPrefix $ AmbQ $ singleton x+                   | otherwise = A.Def x+           let hd = List.foldl' (A.App defaultAppInfo_) hd0 pad            nelims hd =<< reify nes      -- Andreas, 2016-07-06 Issue #2047@@ -644,20 +733,24 @@     -- patterns, we fall back to printing the internal function created for the     -- extended lambda, instead trying to construct the nice syntax. -    reifyExtLam :: QName -> Int -> [I.Clause] -> I.Elims -> TCM Expr-    reifyExtLam x npars cls es = do+    reifyExtLam :: QName -> Int -> Maybe System -> [I.Clause] -> I.Elims -> TCM Expr+    reifyExtLam x npars msys cls es = do       reportSLn "reify.def" 10 $ "reifying extended lambda " ++ prettyShow x       reportSLn "reify.def" 50 $ render $ nest 2 $ vcat-        [ text "npars =" <+> pretty npars-        , text "es    =" <+> fsep (map (prettyPrec 10) es)-        , text "def   =" <+> vcat (map pretty cls) ]+        [ "npars =" <+> pretty npars+        , "es    =" <+> fsep (map (prettyPrec 10) es)+        , "def   =" <+> vcat (map pretty cls) ]       -- As extended lambda clauses live in the top level, we add the whole       -- section telescope to the number of parameters.-      let (pars, rest) = splitAt npars es+      let (pares, rest) = splitAt npars es+      let pars = fromMaybe __IMPOSSIBLE__ $ allApplyElims pares+       -- Since we applying the clauses to the parameters,       -- we do not need to drop their initial "parameter" patterns       -- (this is taken care of by @apply@).-      cls <- mapM (reify . NamedClause x False . (`applyE` pars)) cls+      cls <- caseMaybe msys+               (mapM (reify . NamedClause x False . (`apply` pars)) cls)+               (reify . QNamed x . (`apply` pars))       let cx    = nameConcrete $ qnameName x           dInfo = mkDefInfo cx noFixity' PublicAccess ConcreteDef (getRange x)       elims (A.ExtendedLam exprNoRange dInfo x cls) =<< reify rest@@ -681,6 +774,15 @@               `and2M` (return (getRelevance info /= Irrelevant) `or2M` showIrrelevantArguments)   reifyWhen b i = traverse (reifyWhen b) i +-- instance Reify Elim Expr where+--   reifyWhen = reifyWhenE+--   reify e = case e of+--     I.IApply x y r -> appl "iapply" <$> reify (defaultArg r :: Arg Term)+--     I.Apply v -> appl "apply" <$> reify v+--     I.Proj f  -> appl "proj"  <$> reify ((defaultArg $ I.Def f []) :: Arg Term)+--     where+--       appl :: String -> Arg Expr -> Expr+--       appl s v = A.App exprInfo (A.Lit (LitString noRange s)) $ fmap unnamed v  data NamedClause = NamedClause QName Bool I.Clause   -- ^ Also tracks whether module parameters should be dropped from the patterns.@@ -699,8 +801,8 @@ -- | Removes implicit arguments that are not needed, that is, that don't bind --   any variables that are actually used and doesn't do pattern matching. --   Doesn't strip any arguments that were written explicitly by the user.-stripImplicits :: A.Patterns -> TCM A.Patterns-stripImplicits ps = do+stripImplicits :: A.Patterns -> A.Patterns -> TCM A.Patterns+stripImplicits params ps = do   -- if --show-implicit we don't need the names   ifM showImplicitArguments (return $ map (unnamed . namedThing <$>) ps) $ do     reportSLn "reify.implicit" 30 $ unlines@@ -715,7 +817,7 @@     where       -- Replace variables in dot patterns by an underscore _ if they are hidden       -- in the pattern. This is slightly nicer than making the implicts explicit.-      blankDots ps = blank (varsBoundIn ps) ps+      blankDots ps = blank (varsBoundIn $ params ++ ps) ps        strip ps = stripArgs True ps         where@@ -736,6 +838,7 @@           stripName True  = fmap (unnamed . namedThing)           stripName False = id +          -- TODO: vars appearing in EqualPs shouldn't be stripped.           canStrip a = and             [ notVisible a             , getOrigin a `notElem` [ UserWritten , CaseSplit ]@@ -758,6 +861,7 @@             A.AsP i x p   -> A.AsP i x $ stripPat p             A.PatternSynP _ _ _ -> __IMPOSSIBLE__ -- p             A.RecP i fs   -> A.RecP i $ map (fmap stripPat) fs  -- TODO Andreas: is this right?+            A.EqualP{}    -> p -- EqualP cannot be blanked.             A.WithP i p   -> A.WithP i $ stripPat p -- TODO #2822: right?            varOrDot A.VarP{}      = True@@ -781,7 +885,7 @@ instance BlankVars a => BlankVars (Arg a)              where instance BlankVars a => BlankVars (Named s a)          where instance BlankVars a => BlankVars [a]                  where-instance BlankVars a => BlankVars (A.Pattern' a)       where+-- instance BlankVars a => BlankVars (A.Pattern' a)       where  -- see case EqualP ! instance BlankVars a => BlankVars (FieldAssignment' a) where  instance (BlankVars a, BlankVars b) => BlankVars (a, b) where@@ -810,6 +914,22 @@   blank bound (A.LHSProj p b ps) = uncurry (A.LHSProj p) $ blank bound (b, ps)   blank bound (A.LHSWith h wps ps) = uncurry (uncurry A.LHSWith) $ blank bound ((h, wps), ps) +instance BlankVars A.Pattern where+  blank bound p = case p of+    A.VarP _      -> p   -- do not blank pattern vars+    A.ConP c i ps -> A.ConP c i $ blank bound ps+    A.ProjP{}     -> p+    A.DefP i f ps -> A.DefP i f $ blank bound ps+    A.DotP i e    -> A.DotP i $ blank bound e+    A.WildP _     -> p+    A.AbsurdP _   -> p+    A.LitP _      -> p+    A.AsP i n p   -> A.AsP i n $ blank bound p+    A.PatternSynP _ _ _ -> __IMPOSSIBLE__+    A.RecP i fs   -> A.RecP i $ blank bound fs+    A.EqualP{}    -> p+    A.WithP i p   -> A.WithP i (blank bound p)+ instance BlankVars A.Expr where   blank bound e = case e of     A.ScopedExpr i e       -> A.ScopedExpr i $ blank bound e@@ -830,9 +950,10 @@     A.ExtendedLam i d f cs -> A.ExtendedLam i d f $ blank bound cs     A.Pi i tel e           -> let bound' = varsBoundIn tel `Set.union` bound                               in  uncurry (A.Pi i) $ blank bound' (tel, e)+    A.Generalized {}       -> __IMPOSSIBLE__     A.Fun i a b            -> uncurry (A.Fun i) $ blank bound (a, b)     A.Set _ _              -> e-    A.Prop _               -> e+    A.Prop _ _             -> e     A.Let _ _ _            -> __IMPOSSIBLE__     A.Rec i es             -> A.Rec i $ blank bound es     A.RecUpdate i e es     -> uncurry (A.RecUpdate i) $ blank bound (e, es)@@ -860,9 +981,6 @@   blank bound b@A.DomainFree{} = b   blank bound (A.DomainFull bs) = A.DomainFull $ blank bound bs -instance BlankVars TypedBindings where-  blank bound (TypedBindings r bs) = TypedBindings r $ blank bound bs- instance BlankVars TypedBinding where   blank bound (TBind r n e) = TBind r n $ blank bound e   blank bound (TLet _ _)    = __IMPOSSIBLE__ -- Since the internal syntax has no let bindings left@@ -886,8 +1004,8 @@  instance Binder A.Pattern where   varsBoundIn = foldAPattern $ \case-    A.VarP x            -> singleton $ unBind x-    A.AsP _ x _         -> empty+    A.VarP x            -> varsBoundIn x+    A.AsP _ x _         -> empty    -- Not x because of #2414 (?)     A.ConP _ _ _        -> empty     A.ProjP{}           -> empty     A.DefP _ _ _        -> empty@@ -897,32 +1015,27 @@     A.LitP{}            -> empty     A.PatternSynP _ _ _ -> empty     A.RecP _ _          -> empty+    A.EqualP{}          -> empty     A.WithP _ _         -> empty  instance Binder A.LamBinding where-  varsBoundIn (A.DomainFree _ x) = singleton $ unBind x-  varsBoundIn (A.DomainFull b)   = varsBoundIn b--instance Binder TypedBindings where-  varsBoundIn (TypedBindings _ b) = varsBoundIn b+  varsBoundIn (A.DomainFree x) = varsBoundIn x+  varsBoundIn (A.DomainFull b) = varsBoundIn b  instance Binder TypedBinding where   varsBoundIn (TBind _ xs _) = varsBoundIn xs   varsBoundIn (TLet _ bs)    = varsBoundIn bs +instance Binder BindName where+  varsBoundIn x = singleton (unBind x)+ instance Binder LetBinding where-  varsBoundIn (LetBind _ _ x _ _) = singleton $ unBind x+  varsBoundIn (LetBind _ _ x _ _) = varsBoundIn x   varsBoundIn (LetPatBind _ p _)  = varsBoundIn p   varsBoundIn LetApply{}          = empty   varsBoundIn LetOpen{}           = empty   varsBoundIn LetDeclaredVariable{} = empty -instance Binder (WithHiding Name) where-  varsBoundIn (WithHiding _ x) = singleton x--instance Binder (WithHiding BindName) where-  varsBoundIn (WithHiding _ x) = singleton $ unBind x- instance Binder a => Binder (FieldAssignment' a) where instance Binder a => Binder (Arg a)              where instance Binder a => Binder (Named x a)          where@@ -935,13 +1048,19 @@ -- | Assumes that pattern variables have been added to the context already. --   Picks pattern variable names from context. reifyPatterns :: MonadTCM tcm => [NamedArg I.DeBruijnPattern] -> tcm [NamedArg A.Pattern]-reifyPatterns = mapM $ stripNameFromExplicit <.> traverse (traverse reifyPat)+reifyPatterns = mapM $ (stripNameFromExplicit . stripHidingFromPostfixProj) <.>+                       traverse (traverse reifyPat)   where     stripNameFromExplicit :: NamedArg p -> NamedArg p     stripNameFromExplicit a       | visible a = fmap (unnamed . namedThing) a       | otherwise = a +    stripHidingFromPostfixProj :: IsProjP p => NamedArg p -> NamedArg p+    stripHidingFromPostfixProj a = case isProjP a of+      Just (o, _) | o /= ProjPrefix -> setHiding NotHidden a+      _                             -> a+     reifyPat :: MonadTCM tcm => I.DeBruijnPattern -> tcm A.Pattern     reifyPat p = do      liftTCM $ reportSLn "reify.pat" 80 $ "reifying pattern " ++ show p@@ -956,7 +1075,7 @@       I.DotP (PatOVar x) v@(I.Var i []) -> do         x' <- nameOfBV i         if nameConcrete x == nameConcrete x' then-          return $ A.VarP (BindName x')+          return $ A.VarP $ BindName x'         else           reifyDotP v       I.DotP o v -> reifyDotP v@@ -966,19 +1085,27 @@         Just PatOWild   -> return $ A.WildP patNoRange         Just PatOAbsurd -> return $ A.AbsurdP patNoRange         _               -> reifyConP c cpi ps+      I.DefP o f ps  -> case o of+        PatOWild   -> return $ A.WildP patNoRange+        PatOAbsurd -> return $ A.AbsurdP patNoRange+        _ -> A.DefP patNoRange (unambiguous f) <$> reifyPatterns ps+      I.IApplyP PatODot _ _ x -> reifyDotP $ var $ dbPatVarIndex x+      I.IApplyP PatOWild _ _ x -> return $ A.WildP patNoRange+      I.IApplyP PatOAbsurd _ _ x -> return $ A.AbsurdP patNoRange+      I.IApplyP _ _ _ x -> reifyVarP x      reifyVarP :: MonadTCM tcm => DBPatVar -> tcm A.Pattern     reifyVarP x = do       n <- liftTCM $ nameOfBV $ dbPatVarIndex x       case dbPatVarName x of-        "_"  -> return $ A.VarP $ A.BindName n+        "_"  -> return $ A.VarP $ BindName n         -- Andreas, 2017-09-03: TODO for #2580         -- Patterns @VarP "()"@ should have been replaced by @AbsurdP@, but the         -- case splitter still produces them.-        y    -> if prettyShow (nameConcrete n) == "()" then return $ A.VarP $ A.BindName n else+        y    -> if prettyShow (nameConcrete n) == "()" then return $ A.VarP (BindName n) else           -- Andreas, 2017-09-03, issue #2729           -- Restore original pattern name.  AbstractToConcrete picks unique names.-          return $ A.VarP $ A.BindName n { nameConcrete = C.Name noRange [ C.Id y ] }+          return $ A.VarP $ BindName n { nameConcrete = C.Name noRange C.InScope [ C.Id y ] }      reifyDotP :: MonadTCM tcm => Term -> tcm A.Pattern     reifyDotP v = do@@ -991,7 +1118,7 @@     reifyConP c cpi ps = do       tryRecPFromConP =<< do A.ConP ci (unambiguous (conName c)) <$> reifyPatterns ps       where-        ci = ConPatInfo origin patNoRange False+        ci = ConPatInfo origin patNoRange ConPatEager         origin = fromConPatternInfo cpi  @@ -1030,10 +1157,10 @@     -- (e.g. for extended lambdas). We still get here with toDrop = True and     -- pattern lambdas when doing make-case, so take care to drop the right     -- number of parameters.-    lhs <- if not toDrop then return lhs else do+    (params , lhs) <- if not toDrop then return ([] , lhs) else do       nfv <- (size <.> lookupSection =<< getDefModule f) `catchError` \_ -> return 0-      return $ dropParams nfv lhs-    lhs <- stripImps lhs+      return $ splitParams nfv lhs+    lhs <- stripImps params lhs     reportSLn "reify.clause" 60 $ "reifying NamedClause, lhs = " ++ show lhs     rhs <- caseMaybe (clauseBody cl) (return AbsurdRHS) $ \ e -> do        RHS <$> reify e <*> pure Nothing@@ -1042,10 +1169,31 @@     reportSLn "reify.clause" 60 $ "reified NamedClause, result = " ++ show result     return result     where-      dropParams n (SpineLHS i f ps) = SpineLHS i f $ drop n ps-      stripImps :: SpineLHS -> TCM SpineLHS-      stripImps (SpineLHS i f ps) =  SpineLHS i f <$> stripImplicits ps+      splitParams n (SpineLHS i f ps) =+        let (params , pats) = splitAt n ps+        in  (params , SpineLHS i f pats)+      stripImps :: [NamedArg A.Pattern] -> SpineLHS -> TCM SpineLHS+      stripImps params (SpineLHS i f ps) =  SpineLHS i f <$> stripImplicits params ps +instance Reify (QNamed System) [A.Clause] where+  reify (QNamed f (System tel sys)) = addContext tel $ do+    reportSLn "reify.system" 40 $ unlines $ show tel : map show sys+    unview <- intervalUnview'+    forM sys $ \ (alpha,u) -> do+      rhs <- RHS <$> reify u <*> pure Nothing+      ep <- fmap (A.EqualP patNoRange) . forM alpha $ \ (phi,b) -> do+        let+            d True = unview IOne+            d False = unview IZero+        reify (phi, d b)++      ps <- reifyPatterns $ teleNamedArgs tel+      ps <- stripImplicits [] $ ps ++ [defaultNamedArg ep]+      let+        lhs = SpineLHS (LHSRange noRange) f ps+        result = A.Clause (spineToLhs lhs) [] rhs A.noWhereDecls False+      return result+ instance Reify Type Expr where     reifyWhen = reifyWhenE     reify (I.El _ t) = reify t@@ -1060,8 +1208,14 @@         I.Type a -> do           a <- reify a           return $ A.App defaultAppInfo_ (A.Set noExprInfo 0) (defaultNamedArg a)-        I.Prop       -> return $ A.Prop noExprInfo-        I.Inf       -> A.Var <$> freshName_ ("Setω" :: String)+        I.Prop (I.Max [])                -> return $ A.Prop noExprInfo 0+        I.Prop (I.Max [I.ClosedLevel n]) -> return $ A.Prop noExprInfo n+        I.Prop a -> do+          a <- reify a+          return $ A.App defaultAppInfo_ (A.Prop noExprInfo 0) (defaultNamedArg a)+        I.Inf       -> do+          I.Def inf [] <- primSetOmega+          return $ A.Def inf         I.SizeUniv  -> do           I.Def sizeU [] <- primSizeUniv           return $ A.Def sizeU@@ -1075,6 +1229,8 @@           e <- reify s           return $ A.App defaultAppInfo_ (A.Var univs) $ defaultNamedArg e         I.MetaS x es -> reify $ I.MetaV x es+        I.DefS d es -> reify $ I.Def d es+        I.DummyS s -> return $ A.Lit $ LitString noRange s  instance Reify Level Expr where   reifyWhen = reifyWhenE@@ -1101,12 +1257,13 @@   reify EmptyTel = return []   reify (ExtendTel arg tel) = do     Arg info e <- reify arg-    (x,bs)  <- reify tel-    let r = getRange e-    return $ TypedBindings r (Arg info (TBind r [pure $ BindName x] e)) : bs+    (x, bs)  <- reify tel+    let r    = getRange e+        name = domName arg+    return $ TBind r [Arg info $ Named name $ BindName x] e : bs  instance Reify i a => Reify (Dom i) (Arg a) where-    reify (Dom info i) = Arg info <$> reify i+    reify (Dom{domInfo = info, unDom = i}) = Arg info <$> reify i  instance Reify i a => Reify (I.Elim' i) (I.Elim' a) where   reify = traverse reify
src/full/Agda/Syntax/Translation/ReflectedToAbstract.hs view
@@ -65,10 +65,10 @@ instance ToAbstract [Arg Term] [NamedArg Expr] where   toAbstract = traverse toAbstract -instance ToAbstract r Expr => ToAbstract (Dom r, Name) (A.TypedBindings) where-  toAbstract (Dom i x, name) = do+instance ToAbstract r Expr => ToAbstract (Dom r, Name) (A.TypedBinding) where+  toAbstract (Dom{domInfo = i,unDom = x}, name) = do     dom <- toAbstract x-    return $ TypedBindings noRange $ Arg i $ TBind noRange [pure $ BindName name] dom+    return $ TBind noRange [unnamedArg i $ BindName name] dom  instance ToAbstract (Expr, Elim) Expr where   toAbstract (f, Apply arg) = do@@ -105,7 +105,7 @@     R.Lam h t  -> do       (e, name) <- toAbstract t       let info  = setHiding h $ setOrigin Reflected defaultArgInfo-      return $ A.Lam exprNoRange (DomainFree info $ BindName name) e+      return $ A.Lam exprNoRange (DomainFree $ unnamedArg info $ BindName name) e     R.ExtLam cs es -> do       name <- freshName_ extendedLambdaName       m    <- lift $ getCurrentModule@@ -142,7 +142,7 @@   toAbstract pat = case pat of     R.ConP c args -> do       (names, args) <- toAbstractPats args-      return (names, A.ConP (ConPatInfo ConOCon patNoRange False) (unambiguous $ killRange c) args)+      return (names, A.ConP (ConPatInfo ConOCon patNoRange ConPatEager) (unambiguous $ killRange c) args)     R.DotP    -> return ([], A.WildP patNoRange)     R.VarP s | isNoName s -> withName "z" $ \ name -> return ([name], A.VarP $ BindName name)         -- Ulf, 2016-08-09: Also bind noNames (#2129). This to make the
src/full/Agda/Syntax/Treeless.hs view
@@ -27,6 +27,12 @@   , cArgUsage :: [Bool] }   deriving (Data, Show, Eq, Ord) +-- | The treeless compiler can behave differently depending on the target+--   language evaluation strategy. For instance, more aggressive erasure for+--   lazy targets.+data EvaluationStrategy = LazyEvaluation | EagerEvaluation+  deriving (Eq, Show)+ type Args = [TTerm]  -- this currently assumes that TApp is translated in a lazy/cbn fashion.
src/full/Agda/Termination/CallMatrix.hs view
@@ -209,4 +209,4 @@  instance Pretty cinfo => Pretty (CMSet cinfo) where   pretty = vcat . punctuate newLine . map pretty . toList-    where newLine = text "\n"+    where newLine = "\n"
src/full/Agda/Termination/Inlining.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP #-}+{-# LANGUAGE NondecreasingIndentation #-}  -- Author:  Ulf Norell -- Created: 2013-11-09@@ -77,38 +78,54 @@   -- Clauses are relative to the empty context, so we operate @inTopContext@.   let noInline = return Nothing   -- The de Bruijn indices of @body@ are relative to the @clauseTel cl@.-  body <- traverse instantiate $ clauseBody cl+  body <- fmap stripDontCare <$> instantiate (clauseBody cl)   case body of-    Just (Def wf els) ->-      caseMaybeM (isWithFunction wf) noInline $ \ f' ->+    Just (Def wf els) -> do+      isWith <- isWithFunction wf+      reportSDoc "term.with.inline" 20 $ sep+        [ "inlineWithClauses: isWithFunction ="+        , maybe "<none>" prettyTCM isWith+        ]+      caseMaybe isWith noInline $ \ f' -> do       if f /= f' then noInline else do         -- The clause body is a with-function call @wf args@.         -- @f@ is the function the with-function belongs to.         let args = fromMaybe __IMPOSSIBLE__ . allApplyElims $ els          reportSDoc "term.with.inline" 70 $ sep-          [ text "Found with (raw):", nest 2 $ text $ show cl ]+          [ "Found with (raw):", nest 2 $ text $ show cl ]         reportSDoc "term.with.inline" 20 $ sep-          [ text "Found with:", nest 2 $ prettyTCM $ QNamed f cl ]+          [ "Found with:", nest 2 $ prettyTCM $ QNamed f cl ]          t   <- defType <$> getConstInfo wf         cs1 <- withExprClauses cl t args          reportSDoc "term.with.inline" 70 $ vcat $-          text "withExprClauses (raw)" : map (nest 2 . text . show) cs1+          "withExprClauses (raw)" : map (nest 2 . text . show) cs1         reportSDoc "term.with.inline" 20 $ vcat $-          text "withExprClauses" : map (nest 2 . prettyTCM . QNamed f) cs1+          "withExprClauses" : map (nest 2 . prettyTCM . QNamed f) cs1          cs2 <- inlinedClauses f cl t wf          reportSDoc "term.with.inline" 70 $ vcat $-          text "inlinedClauses (raw)" : map (nest 2 . text . show) cs2+          "inlinedClauses (raw)" : map (nest 2 . text . show) cs2         reportSDoc "term.with.inline" 20 $ vcat $-          text "inlinedClauses" : map (nest 2 . prettyTCM . QNamed f) cs2+          "inlinedClauses" : map (nest 2 . prettyTCM . QNamed f) cs2          return $ Just $ cs1 ++ cs2-    _ -> noInline +    Just d -> do+      reportSLn "term.with.inline" 20 $ "inlineWithClauses: clause body is not a Def"+      reportSDoc "term.with.inline" 70 $ sep+        [ "inlineWithClauses: clause body is not a Def but "+        , (text . show) d+        ]+      noInline++    Nothing -> do+      reportSLn "term.with.inline" 20 $ "inlineWithClauses: no clause body"+      noInline+ -- | Returns the original clause if no inlining happened, otherwise, --   the new clauses. @@ -155,7 +172,7 @@   -- @wf@ might define a with-function itself, so we first construct   -- the with-inlined clauses @wcs@ of @wf@ recursively.   wcs <- concat <$> (mapM (inlineWithClauses' wf) =<< defClauses <$> getConstInfo wf)-  reportSDoc "term.with.inline" 30 $ vcat $ text "With-clauses to inline" :+  reportSDoc "term.with.inline" 30 $ vcat $ "With-clauses to inline" :                                        map (nest 2 . prettyTCM . QNamed wf) wcs   mapM (inline f cl t wf) wcs @@ -169,10 +186,10 @@   -- of the arguments to the parent function. Fortunately we have already   -- figured out how to turn an application of the with-function into an   -- application of the parent function in the display form.-  reportSDoc "term.with.inline" 70 $ text "inlining (raw) =" <+> text (show wcl)+  reportSDoc "term.with.inline" 70 $ "inlining (raw) =" <+> text (show wcl)   Just disp <- displayForm wf $ clauseElims wcl-  reportSDoc "term.with.inline" 70 $ text "display form (raw) =" <+> text (show disp)-  reportSDoc "term.with.inline" 40 $ text "display form =" <+> prettyTCM disp+  reportSDoc "term.with.inline" 70 $ "display form (raw) =" <+> text (show disp)+  reportSDoc "term.with.inline" 40 $ "display form =" <+> prettyTCM disp   (pats, perm) <- dispToPats disp    -- Jesper, 2016-07-28: Since the with-clause and the inlined clause both@@ -201,6 +218,7 @@      ePatToPat :: Elim' Pattern -> NamedArg Pattern     ePatToPat (Apply p) = fmap unnamed p+    ePatToPat (IApply x y p) = defaultNamedArg p     ePatToPat (Proj o d) = defaultNamedArg $ ProjP o d      dtermToPat :: DisplayTerm -> StateT (Int, [(Int, Int)]) TCM Pattern
src/full/Agda/Termination/Monad.hs view
@@ -13,6 +13,11 @@ import Prelude hiding (null)  import Control.Applicative hiding (empty)++#if __GLASGOW_HASKELL__ >= 800+import qualified Control.Monad.Fail as Fail+#endif+ import Control.Monad.Reader import Control.Monad.State @@ -81,9 +86,6 @@    { terUseDotPatterns :: Bool     -- ^ Are we mining dot patterns to find evindence of structal descent?-  , terGuardingTypeConstructors :: Bool-    -- ^ Do we assume that record and data type constructors-    --   preserve guardedness?   , terInlineWithFunctions :: Bool     -- ^ Do we inline with functions to enhance termination checking of with?   , terSizeSuc :: Maybe QName@@ -156,7 +158,6 @@ defaultTerEnv :: TerEnv defaultTerEnv = TerEnv   { terUseDotPatterns           = False -- must be False initially!-  , terGuardingTypeConstructors = False   , terInlineWithFunctions      = True   , terSizeSuc                  = Nothing   , terSharp                    = Nothing@@ -189,7 +190,24 @@ -- | Termination monad.  newtype TerM a = TerM { terM :: ReaderT TerEnv TCM a }-  deriving (Functor, Applicative, Monad, MonadBench Phase, HasOptions, MonadDebug)+  deriving ( Functor+           , Applicative+           , Monad+#if __GLASGOW_HASKELL__ >= 800+           , Fail.MonadFail+#endif+           , MonadError TCErr+           , MonadBench Phase+           , HasOptions+           , MonadDebug+           , HasConstInfo+           , MonadIO+           , MonadTCEnv+           , MonadTCState+           , MonadTCM+           , ReadTCState+           , MonadReduce+           )  instance MonadTer TerM where   terAsk     = TerM $ ask@@ -214,16 +232,12 @@   -- The name of sharp (if available).   sharp <- fmap nameOfSharp <$> coinductionKit -  guardingTypeConstructors <--    optGuardingTypeConstructors <$> pragmaOptions-   -- Andreas, 2014-08-28   -- We do not inline with functions if --without-K.-  inlineWithFunctions <- not . optWithoutK <$> pragmaOptions+  inlineWithFunctions <- not <$> withoutKOption    let tenv = defaultTerEnv-        { terGuardingTypeConstructors = guardingTypeConstructors-        , terInlineWithFunctions      = inlineWithFunctions+        { terInlineWithFunctions      = inlineWithFunctions         , terSizeSuc                  = suc         , terSharp                    = sharp         , terCutOff                   = cutoff@@ -231,30 +245,12 @@    runTer tenv cont --- * Termination monad is a 'MonadTCM'.--instance MonadReader TCEnv TerM where-  ask       = TerM $ lift $ ask-  local f m = TerM $ ReaderT $ local f . runReaderT (terM m)--instance MonadState TCState TerM where-  get     = TerM $ lift $ get-  put     = TerM . lift . put--instance MonadIO TerM where-  liftIO = TerM . liftIO--instance MonadTCM TerM where-  liftTCM = TerM . lift--instance MonadError TCErr TerM where-  throwError = liftTCM . throwError-  catchError m handler = TerM $ ReaderT $ \ tenv -> do-    runTer tenv m `catchError` (\ err -> runTer tenv $ handler err)+-- -- * Termination monad is a 'MonadTCM'. -instance HasConstInfo TerM where-  getConstInfo       = liftTCM . getConstInfo-  getRewriteRulesFor = liftTCM . getRewriteRulesFor+-- instance MonadError TCErr TerM where+--   throwError = liftTCM . throwError+--   catchError m handler = TerM $ ReaderT $ \ tenv -> do+--     runTer tenv m `catchError` (\ err -> runTer tenv $ handler err)  instance Semigroup m => Semigroup (TerM m) where   (<>) = liftA2 (<>)@@ -266,9 +262,6 @@  -- * Modifiers and accessors for the termination environment in the monad. -terGetGuardingTypeConstructors :: TerM Bool-terGetGuardingTypeConstructors = terAsks terGuardingTypeConstructors- terGetInlineWithFunctions :: TerM Bool terGetInlineWithFunctions = terAsks terInlineWithFunctions @@ -353,10 +346,6 @@ terUnguarded :: TerM a -> TerM a terUnguarded = terSetGuarded unknown --- | Should the codomain part of a function type preserve guardedness?-terPiGuarded :: TerM a -> TerM a-terPiGuarded m = ifM terGetGuardingTypeConstructors m $ terUnguarded m- -- | Lens for '_terSizeDepth'.  terSizeDepth :: Lens' Int TerEnv@@ -389,8 +378,8 @@ withUsableVars pats m = do   vars <- usableSizeVars pats   reportSLn "term.size" 70 $ "usableSizeVars = " ++ show vars-  reportSDoc "term.size" 20 $ if null vars then text "no usuable size vars" else-    text "the size variables amoung these variables are usable: " <+>+  reportSDoc "term.size" 20 $ if null vars then "no usuable size vars" else+    "the size variables amoung these variables are usable: " <+>       sep (map (prettyTCM . var) $ VarSet.toList vars)   terSetUsableVars vars $ m @@ -419,7 +408,7 @@ isProjectionButNotCoinductive qn = liftTCM $ do   b <- isProjectionButNotCoinductive' qn   reportSDoc "term.proj" 60 $ do-    text "identifier" <+> prettyTCM qn <+> do+    "identifier" <+> prettyTCM qn <+> do       text $         if b then "is an inductive projection"           else "is either not a projection or coinductive"@@ -473,17 +462,17 @@                 -- A (2017-01-13): Yes, since we also normalize during positivity check?                 -- See issue #1899.                 reportSDoc "term.guardedness" 40 $ inTopContext $ sep-                  [ text "looking for recursive occurrences of"+                  [ "looking for recursive occurrences of"                   , sep (map prettyTCM mut)-                  , text "in"+                  , "in"                   , addContext pars $ prettyTCM (telFromList tel')-                  , text "and"+                  , "and"                   , addContext tel $ prettyTCM core                   ]                 when (null mut) __IMPOSSIBLE__                 names <- anyDefs mut =<< normalise (map (snd . unDom) tel', core)                 reportSDoc "term.guardedness" 40 $-                  text "found" <+> if null names then text "none" else sep (map prettyTCM names)+                  "found" <+> if null names then "none" else sep (map prettyTCM names)                 return $ not $ null names       _ -> do         reportSLn "term.guardedness" 40 $ prettyShow q ++ " is not a proper projection"@@ -541,6 +530,8 @@     LitP{}     -> none     DotP{}     -> none     ProjP{}    -> none+    IApplyP{}  -> none+    DefP{} -> none     where none _ = return mempty  instance UsableSizeVars [DeBruijnPattern] where@@ -558,6 +549,8 @@     LitP{}     -> none     DotP{}     -> none     ProjP{}    -> none+    IApplyP{}  -> none+    DefP{}     -> none     where none _ = return mempty  instance UsableSizeVars MaskedDeBruijnPatterns where@@ -611,7 +604,7 @@     P.hsep (map (\ ci -> arrow P.<+> P.pretty ci) cis) P.<+> arrow     where       cis   = init cis0-      arrow = P.text "-->"+      arrow = "-->"  -- * Size depth estimation 
src/full/Agda/Termination/Order.hs view
@@ -208,10 +208,10 @@ isDecr o = decreasing o  instance Pretty Order where-  pretty (Decr u 0) = text "="+  pretty (Decr u 0) = "="   pretty (Decr u k) = mparens (not u) $ text $ show (0 - k)-  pretty Unknown    = text "?"-  pretty (Mat m)    = text "Mat" <+> pretty m+  pretty Unknown    = "?"+  pretty (Mat m)    = "Mat" <+> pretty m   -- | Multiplication of 'Order's.
src/full/Agda/Termination/RecCheck.hs view
@@ -18,16 +18,20 @@     )  where -import Data.Graph+import Control.Applicative +import Data.Graph import Data.List (nub) import qualified Data.Map as Map+import qualified Data.IntMap as IntMap  import Agda.Syntax.Internal import Agda.Syntax.Internal.Defs  import Agda.TypeChecking.Monad +import Agda.Utils.Pretty (prettyShow)+ #include "undefined.h" import Agda.Utils.Impossible @@ -43,22 +47,34 @@   where g' = map (\ (n, ns) -> ((), n, ns)) g  -- | @recDef names name@ returns all definitions from @names@---   that are used in the body of @name@.+--   that are used in the type and body of @name@. recDef :: [QName] -> QName -> TCM [QName] recDef names name = do   -- Retrieve definition   def <- getConstInfo name-  case theDef def of++  -- Get names in type+  ns1 <- anyDefs names (defType def)++  -- Get names in body+  ns2 <- case theDef def of     Function{ funClauses = cls } -> anyDefs names cls     _ -> return [] +  reportSLn "rec.graph" 20 $ unlines+    [ "recDef " ++ prettyShow name+    , "  names in the type: " ++ show ns1+    , "  names in the def:  " ++ show ns2+    ]+  return $ ns1 `mappend` ns2+ -- | @anysDef names a@ returns all definitions from @names@ --   that are used in @a@. anyDefs :: GetDefs a => [QName] -> a -> TCM [QName] anyDefs names a = do   -- Prepare function to lookup metas outside of TCM   st <- getMetaStore-  let lookup x = case mvInstantiation <$> Map.lookup x st of+  let lookup (MetaId x) = case mvInstantiation <$> IntMap.lookup x st of         Just (InstV _ v) -> Just v    -- TODO: ignoring the lambdas might be bad?         _                -> Nothing       -- we collect only those used definitions that are in @names@
src/full/Agda/Termination/TermCheck.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE BangPatterns               #-} {-# LANGUAGE CPP                        #-} {-# LANGUAGE GADTs                      #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}@@ -75,7 +76,7 @@  import Agda.Utils.Either import Agda.Utils.Function-import Agda.Utils.Functor (($>), (<.>))+import Agda.Utils.Functor import Agda.Utils.List import Agda.Utils.Size import Agda.Utils.Maybe@@ -114,9 +115,6 @@     A.Axiom {}            -> return mempty     A.Field {}            -> return mempty     A.Primitive {}        -> return mempty-    A.Mutual _ ds-      | [A.RecSig{}, A.RecDef _ _ _ _ _ _ _ rds] <- unscopeDefs ds-                          -> termDecls rds     A.Mutual i ds         -> termMutual $ getNames ds     A.Section _ _ _ ds    -> termDecls ds         -- section structure can be ignored as we are termination checking@@ -126,11 +124,12 @@     A.Pragma {}           -> return mempty     A.Open {}             -> return mempty     A.PatternSynDef {}    -> return mempty-        -- open and pattern synonym defs are just artifacts from the concrete syntax+    A.Generalize {}       -> return mempty+        -- open, pattern synonym and generalize defs are just artifacts from the concrete syntax     A.ScopedDecl scope ds -> {- withScope_ scope $ -} termDecls ds         -- scope is irrelevant as we are termination checking Syntax.Internal     A.RecSig{}            -> return mempty-    A.RecDef _ r _ _ _ _ _ ds -> termDecls ds+    A.RecDef _ r _ _ _ _ _ _ ds -> termDecls ds     -- These should all be wrapped in mutual blocks     A.FunDef{}      -> __IMPOSSIBLE__     A.DataSig{}     -> __IMPOSSIBLE__@@ -149,7 +148,7 @@     -- for symbols that need to be termination-checked.     getNames = concatMap getName     getName (A.FunDef i x delayed cs)   = [x]-    getName (A.RecDef _ _ _ _ _ _ _ ds) = getNames ds+    getName (A.RecDef _ _ _ _ _ _ _ _ ds) = getNames ds     getName (A.Mutual _ ds)             = getNames ds     getName (A.Section _ _ _ ds)        = getNames ds     getName (A.ScopedDecl _ ds)         = getNames ds@@ -166,14 +165,14 @@      --   (For error-reporting only.)   -> TCM Result termMutual names0 = ifNotM (optTerminationCheck <$> pragmaOptions) (return mempty) $ {-else-}- inTopContext $ disableDestructiveUpdate $ do+ inTopContext $ do    -- Get set of mutually defined names from the TCM.   -- This includes local and auxiliary functions introduced   -- during type-checking.-  mid <- fromMaybe __IMPOSSIBLE__ <$> asks envMutualBlock+  mid <- fromMaybe __IMPOSSIBLE__ <$> asksTC envMutualBlock   mutualBlock <- lookupMutualBlock mid-  let allNames = Set.elems $ mutualNames mutualBlock+  let allNames = filter (not . isAbsurdLambdaName) $ Set.elems $ mutualNames mutualBlock       names    = if null names0 then allNames else names0       i        = mutualInfo mutualBlock       -- Andreas, 2014-03-26@@ -194,6 +193,10 @@   -- We set the range to avoid panics when printing error messages.   setCurrentRange i $ do +  -- The following debug statement is part of a test case for Issue+  -- #3590.+  reportSLn "term.mutual.id" 40 $+    "Termination checking mutual block " ++ show mid   reportSLn "term.mutual" 10 $ "Termination checking " ++ prettyShow allNames    -- NO_TERMINATION_CHECK@@ -337,7 +340,7 @@     --   ]     reportSDoc "term.matrices" 30 $ vcat       [ text $ "Idempotent call matrices (" ++ no ++ "dot patterns):\n"-      , nest 2 $ vcat $ punctuate (text "\n") $ map pretty idems+      , nest 2 $ vcat $ punctuate "\n" $ map pretty idems       ]     -- reportSDoc "term.matrices" 30 $ vcat     --   [ text $ "Other call matrices (" ++ no ++ "dot patterns):"@@ -411,7 +414,7 @@ -- | To process the target type. typeEndsInDef :: MonadTCM tcm => Type -> tcm (Maybe QName) typeEndsInDef t = liftTCM $ do-  TelV _ core <- telView t+  TelV _ core <- telViewPath t   case unEl core of     Def d vs -> return $ Just d     _        -> return Nothing@@ -433,14 +436,21 @@   let t = defType def    liftTCM $ reportSDoc "term.def.fun" 5 $-    sep [ text "termination checking body of" <+> prettyTCM name-        , nest 2 $ text ":" <+> prettyTCM t+    sep [ "termination checking type of" <+> prettyTCM name+        , nest 2 $ ":" <+> prettyTCM t         ] +  termType t `mappend` do++  liftTCM $ reportSDoc "term.def.fun" 5 $+    sep [ "termination checking body of" <+> prettyTCM name+        , nest 2 $ ":" <+> prettyTCM t+        ]+   -- If --without-K, we disregard all arguments (and result)   -- which are not of data or record type. -  withoutKEnabled <- liftTCM $ optWithoutK <$> pragmaOptions+  withoutKEnabled <- liftTCM withoutKOption   applyWhen withoutKEnabled (setMasks t) $ do      -- If the result should be disregarded, set all calls to unguarded.@@ -448,26 +458,66 @@        case theDef def of         Function{ funClauses = cls, funDelayed = delayed } ->-          terSetDelayed delayed $ forM' cls $ termClause+          terSetDelayed delayed $ forM' cls $ \ cl -> do+            if hasDefP (namedClausePats cl) -- generated hcomp clause, should be safe.+                                            -- TODO find proper strategy.+              then return empty+              else termClause cl          _ -> return empty+  where+    hasDefP :: [NamedArg DeBruijnPattern] -> Bool+    hasDefP ps = getAny $ flip foldPattern ps $ \ (x :: DeBruijnPattern) ->+                  case x of+                    DefP{} -> Any True+                    _      -> Any False ++-- | Collect calls in type signature @f : (x1:A1)...(xn:An) -> B@.+--   It is treated as if there were the additional function clauses.+--   @@+--      f = A1+--      f x1 = A2+--      f x1 x2 = A3+--      ...+--      f x1 ... xn = B+--   @@++termType :: Type -> TerM Calls+termType = return mempty+-- termType = loop 0  -- Andreas, 2019-04-10 deactivate for backwards-compatibility in 2.6.0 #1556+  where+  loop n t = do+    ps <- mkPats n+    reportSDoc "term.type" 60 $ vcat+      [ text $ "termType " ++ show n ++ " with " ++ show (length ps) ++ " patterns"+      , nest 2 $ "looking at type " <+> prettyTCM t+      ]+    tel <- getContextTelescope  -- Andreas, 2018-11-15, issue #3394, forgotten initialization of terSizeDepth+    terSetPatterns ps $ terSetSizeDepth tel $ do+      ifNotPiType t {-then-} extract {-else-} $ \ dom absB -> do+        extract dom `mappend` underAbstractionAbs dom absB (loop $! n + 1)++  -- create n variable patterns+  mkPats n  = zipWith mkPat (downFrom n) <$> getContextNames+  mkPat i x = notMasked $ VarP PatOSystem $ DBPatVar (prettyShow x) i+ -- | Mask arguments and result for termination checking --   according to type of function. --   Only arguments of types ending in data/record or Size are counted in. setMasks :: Type -> TerM a -> TerM a setMasks t cont = do   (ds, d) <- liftTCM $ do-    TelV tel core <- telView t+    TelV tel core <- telViewPath t     -- Check argument types     ds <- forM (telToList tel) $ \ t -> do-      TelV _ t <- telView $ snd $ unDom t+      TelV _ t <- telViewPath $ snd $ unDom t       d <- (isNothing <$> isDataOrRecord (unEl t)) `or2M` (isJust <$> isSizeType t)       when d $         reportSDoc "term.mask" 20 $ do-          text "argument type "+          "argument type "             <+> prettyTCM t-            <+> text " is not data or record type, ignoring structural descent for --without-K"+            <+> " is not data or record type, ignoring structural descent for --without-K"       return d     -- Check result types     d  <- isNothing <.> isDataOrRecord . unEl $ core@@ -536,6 +586,7 @@     -- Leaves.     Var i []    -> varP . (`DBPatVar` i) . prettyShow <$> nameOfBV i     Lit l       -> return $ LitP l+    Dummy s     -> __IMPOSSIBLE_VERBOSE__ s     t           -> return $ dotP t  @@ -575,9 +626,9 @@ termClause' clause = do   Clause{ clauseTel = tel, namedClausePats = ps, clauseBody = body } <- etaExpandClause clause   liftTCM $ reportSDoc "term.check.clause" 25 $ vcat-    [ text "termClause"-    , nest 2 $ text "tel =" <+> prettyTCM tel-    , nest 2 $ text "ps  =" <+> do addContext tel $ prettyTCMPatternList ps+    [ "termClause"+    , nest 2 $ "tel =" <+> prettyTCM tel+    , nest 2 $ "ps  =" <+> do addContext tel $ prettyTCMPatternList ps     ]   forM' body $ \ v -> addContext tel $ do     -- TODO: combine the following two traversals, avoid full normalisation.@@ -613,8 +664,8 @@                     (if delayed == Delayed then "delayed " else "") ++                     "clause of")                 <+> prettyTCM f-            , nest 2 $ text "lhs:" <+> sep (map prettyTCM pats)-            , nest 2 $ text "rhs:" <+> prettyTCM v+            , nest 2 $ "lhs:" <+> sep (map prettyTCM pats)+            , nest 2 $ "rhs:" <+> prettyTCM v             ]  @@ -635,6 +686,7 @@ instance ExtractCalls a => ExtractCalls (Elim' a) where   extract Proj{}    = return empty   extract (Apply a) = extract $ unArg a+  extract (IApply x y a) = extract (x,(y,a)) -- TODO Andrea: conservative  instance ExtractCalls a => ExtractCalls [a] where   extract = mapM' extract@@ -651,17 +703,19 @@   extract s = do     liftTCM $ do       reportSDoc "term.sort" 20 $-        text "extracting calls from sort" <+> prettyTCM s+        "extracting calls from sort" <+> prettyTCM s       reportSDoc "term.sort" 50 $         text ("s = " ++ show s)     case s of-      Prop       -> return empty       Inf        -> return empty       SizeUniv   -> return empty       Type t     -> terUnguarded $ extract t  -- no guarded levels+      Prop t     -> terUnguarded $ extract t       PiSort s1 s2 -> extract (s1, s2)       UnivSort s -> extract s       MetaS x es -> return empty+      DefS d es  -> return empty+      DummyS{}   -> return empty  -- | Extract recursive calls from a type. @@ -690,26 +744,6 @@              (False, _)           -> const Order.unknown     terModifyGuarded g' $ extract arg --- | Handle guardedness preserving type constructor.--guardPresTyCon :: QName -> Elims -> (QName -> Elims -> TerM Calls) -> TerM Calls-guardPresTyCon g es cont = do-  ifNotM (terGetGuardingTypeConstructors) (cont g es) $ {- else -} do--    def <- liftTCM $ getConstInfo g-    let occs = defArgOccurrences def-        preserves = (StrictPos <=)-        -- Data or record type constructor.-        con = constructor g Inductive $   -- guardedness preserving-                zip (argsFromElims es)-                    (map preserves occs ++ repeat False)--    case theDef def of-      Datatype{} -> con-      Record{}   -> con-      _          -> cont g es-- -- | Extract calls from with function application.  withFunction :: QName -> Elims -> TerM Calls@@ -717,7 +751,7 @@   v <- liftTCM $ -- billTo [Benchmark.Termination, Benchmark.With] $  -- 0ms          expandWithFunctionCall g es   liftTCM $ reportSDoc "term.with.call" 30 $-    text "termination checking expanded with-function call:" <+> prettyTCM v+    "termination checking expanded with-function call:" <+> prettyTCM v   extract v  -- | Handles function applications @g es@.@@ -732,7 +766,7 @@      -- let gArgs = Def g es0     liftTCM $ reportSDoc "term.function" 30 $-      text "termination checking function call " <+> prettyTCM (Def g es0)+      "termination checking function call " <+> prettyTCM (Def g es0)      -- First, look for calls in the arguments of the call gArgs. @@ -760,8 +794,8 @@     -- Then, consider call gArgs itself.      liftTCM $ reportSDoc "term.found.call" 20 $-      sep [ text "found call from" <+> prettyTCM f-          , nest 2 $ text "to" <+> prettyTCM g+      sep [ "found call from" <+> prettyTCM f+          , nest 2 $ "to" <+> prettyTCM g           ]      -- insert this call into the call list@@ -773,7 +807,6 @@        -- call is to one of the mutally recursive functions        Just gInd -> do          delayed <- terGetDelayed-         pats    <- terGetPatterns          -- Andreas, 2017-02-14, issue #2458:          -- If we have inlined with-functions, we could be illtyped,          -- hence, do not reduce anything.@@ -800,7 +833,7 @@            --  reportSLn "term.reduce" 90 $ "normalizing call arguments"            --  modifyAllowedReductions (List.\\ [UnconfirmedReductions,RecursiveReductions]) $            --    forM es0 $ \ e -> do-           --      reportSDoc "term.reduce" 95 $ text "normalizing " <+> prettyTCM e+           --      reportSDoc "term.reduce" 95 $ "normalizing " <+> prettyTCM e            --      etaContract =<< normalise e           -- Compute the call matrix.@@ -833,7 +866,11 @@          -- otherwise its free variables with be prepended to the call          -- in the error message.          doc <- liftTCM $ withCurrentModule (qnameModule g) $ buildClosure $-           Def g $ filter ((/= Inserted) . getOrigin) es0+           Def g $ reverse $ dropWhile ((Inserted ==) . getOrigin) $ reverse es0+           -- Andreas, 2018-07-22, issue #3136+           -- Dropping only inserted arguments at the end, since+           -- dropping arguments in the middle might make the printer crash.+           -- Def g $ filter ((/= Inserted) . getOrigin) es0            -- Andreas, 2017-01-05, issue #2376            -- Remove arguments inserted by etaExpandClause. @@ -845,13 +882,15 @@                       , callInfoRange  = getRange g                       , callInfoCall   = doc                       }]-         liftTCM $ reportSDoc "term.kept.call" 5 $ vcat-           [ text "kept call from" <+> text (prettyShow f) <+> hsep (map prettyTCM pats)-           , nest 2 $ text "to" <+> text (prettyShow g) <+>-                       hsep (map (parens . prettyTCM) args)-           , nest 2 $ text "call matrix (with guardedness): "-           , nest 2 $ pretty cm-           ]+         verboseS "term.kept.call" 5 $ do+           pats <- terGetPatterns+           reportSDoc "term.kept.call" 5 $ vcat+             [ "kept call from" <+> text (prettyShow f) <+> hsep (map prettyTCM pats)+             , nest 2 $ "to" <+> text (prettyShow g) <+>+                         hsep (map (parens . prettyTCM) args)+             , nest 2 $ "call matrix (with guardedness): "+             , nest 2 $ pretty cm+             ]          return $ CallGraph.insert src tgt cm info calls  -- | Extract recursive calls from a term.@@ -859,7 +898,7 @@ instance ExtractCalls Term where   extract t = do     liftTCM $ reportSDoc "term.check.term" 50 $ do-      text "looking for calls in" <+> prettyTCM t+      "looking for calls in" <+> prettyTCM t      -- Instantiate top-level MetaVar.     t <- liftTCM $ instantiate t@@ -884,7 +923,7 @@         constructor c ind argsg        -- Function, data, or record type.-      Def g es -> guardPresTyCon g es function+      Def g es -> function g es        -- Abstraction. Preserves guardedness.       Lam h b -> extract b@@ -892,15 +931,17 @@       -- Neutral term. Destroys guardedness.       Var i es -> terUnguarded $ extract es -      -- Dependent function space.-      Pi a (Abs x b) -> CallGraph.union <$> (terUnguarded $ extract a) <*> do-         a <- maskSizeLt a  -- OR: just do not add a to the context!-         terPiGuarded $ addContext (x, a) $ terRaise $ extract b+      -- Dependent function space. Destroys guardedness.+      Pi a (Abs x b) ->+        terUnguarded $+        CallGraph.union <$>+        extract a <*> do+          a <- maskSizeLt a  -- OR: just do not add a to the context!+          addContext (x, a) $ terRaise $ extract b -      -- Non-dependent function space.-      Pi a (NoAbs _ b) -> CallGraph.union-         <$> terUnguarded (extract a)-         <*> terPiGuarded (extract b)+      -- Non-dependent function space. Destroys guardedness.+      Pi a (NoAbs _ b) ->+        terUnguarded $ CallGraph.union <$> extract a <*> extract b        -- Literal.       Lit l -> return empty@@ -920,6 +961,9 @@         -- Andreas, 2014-03-26 Benchmark discontinued, < 0.3% spent on levels.         extract l +      -- Dummy.+      Dummy{} -> return empty+ -- | Extract recursive calls from level expressions.  deriving instance ExtractCalls Level@@ -936,7 +980,8 @@  -- | Rewrite type @tel -> Size< u@ to @tel -> Size@. maskSizeLt :: MonadTCM tcm => Dom Type -> tcm (Dom Type)-maskSizeLt dom@(Dom info a) = liftTCM $ do+maskSizeLt !dom = liftTCM $ do+  let a = unDom dom   (msize, msizelt) <- getBuiltinSize   case (msize, msizelt) of     (_ , Nothing) -> return dom@@ -944,8 +989,8 @@     (Just size, Just sizelt) -> do       TelV tel c <- telView a       case a of-        El s (Def d [v]) | d == sizelt -> return $ Dom info $-          abstract tel $ El s $ Def size []+        El s (Def d [v]) | d == sizelt -> return $+          (abstract tel $ El s $ Def size []) <$ dom         _ -> return dom  {- | @compareArgs es@@@ -959,13 +1004,13 @@  -} compareArgs :: [Elim] -> TerM (Int, Int, [[Order]]) compareArgs es = do+  pats <- terGetPatterns   liftTCM $ reportSDoc "term.compareArgs" 90 $ vcat-    [ text $ "comparing " ++ show (length es) ++ " args"+    [ text $ "comparing " ++ show (length es) ++ " args to " ++ show (length pats) ++ " patterns"     ]-  pats <- terGetPatterns   -- apats <- annotatePatsWithUseSizeLt pats   -- reportSDoc "term.compare" 20 $-  --   text "annotated patterns = " <+> sep (map prettyTCM apats)+  --   "annotated patterns = " <+> sep (map prettyTCM apats)   -- matrix <- forM es $ \ e -> forM apats $ \ (b, p) -> terSetUseSizeLt b $ compareElim e p   matrix <- withUsableVars pats $ forM es $ \ e -> forM pats $ \ p -> compareElim e p @@ -977,14 +1022,18 @@     filterM (isCoinductiveProjection True) $ mapMaybe (fmap snd . isProjElim) es   cutoff <- terGetCutOff   let ?cutoff = cutoff-  let guardedness = decr True $ projsCaller - projsCallee+  useGuardedness <- liftTCM guardednessOption+  let guardedness =+        if useGuardedness+        then decr True $ projsCaller - projsCallee+        else Order.Unknown   liftTCM $ reportSDoc "term.guardedness" 30 $ sep-    [ text "compareArgs:"+    [ "compareArgs:"     , nest 2 $ text $ "projsCaller = " ++ prettyShow projsCaller     , nest 2 $ text $ "projsCallee = " ++ prettyShow projsCallee     , nest 2 $ text $ "guardedness of call: " ++ prettyShow guardedness     ]-  return $ addGuardedness guardedness (size es) (size pats) matrix+  return $ addGuardedness guardedness (size es, size pats, matrix)  -- | Traverse patterns from left to right. --   When we come to a projection pattern,@@ -1006,9 +1055,9 @@ compareElim e p = do   liftTCM $ do     reportSDoc "term.compare" 30 $ sep-      [ text "compareElim"-      , nest 2 $ text "e = " <> prettyTCM e-      , nest 2 $ text "p = " <> prettyTCM p+      [ "compareElim"+      , nest 2 $ "e = " <> prettyTCM e+      , nest 2 $ "p = " <> prettyTCM p       ]     reportSDoc "term.compare" 50 $ sep       [ nest 2 $ text $ "e = " ++ show e@@ -1028,6 +1077,9 @@     (Proj{}, _)            -> return Order.unknown     (Apply{}, ProjP{})     -> return Order.unknown     (Apply arg, _)         -> compareTerm (unArg arg) p+    -- TODO Andrea: making sense?+    (IApply{}, ProjP{})  -> return Order.unknown+    (IApply _ _ arg, _)    -> compareTerm arg p  -- | In dependent records, the types of later fields may depend on the --   values of earlier fields.  Thus when defining an inhabitant of a@@ -1068,15 +1120,10 @@ makeCM ncols nrows matrix = CallMatrix $   Matrix.fromLists (Matrix.Size nrows ncols) matrix -{- To turn off guardedness, restore this code.--- | 'addGuardedness' does nothing.-addGuardedness :: Integral n => Order -> n -> n -> [[Order]] -> (n, n, [[Order]])-addGuardedness g nrows ncols m = (nrows, ncols, m)--}---- | 'addGuardedness' adds guardedness flag in the upper left corner (0,0).-addGuardedness :: Order -> Int -> Int -> [[Order]] -> (Int, Int, [[Order]])-addGuardedness o nrows ncols m =+-- | 'addGuardedness' adds guardedness flag in the upper left corner+-- (0,0).+addGuardedness :: Order -> (Int, Int, [[Order]]) -> (Int, Int, [[Order]])+addGuardedness o (nrows, ncols, m) =   (nrows + 1, ncols + 1,    (o : replicate ncols Order.unknown) : map (Order.unknown :) m) @@ -1096,22 +1143,24 @@ subPatterns :: DeBruijnPattern -> [DeBruijnPattern] subPatterns = foldPattern $ \case   ConP _ _ ps -> map namedArg ps+  DefP _ _ ps -> map namedArg ps -- TODO check semantics   VarP _ _    -> mempty   LitP _      -> mempty   DotP _ _    -> mempty   ProjP _ _   -> mempty+  IApplyP{}   -> mempty   compareTerm :: Term -> Masked DeBruijnPattern -> TerM Order compareTerm t p = do --   reportSDoc "term.compare" 25 $---     text " comparing term " <+> prettyTCM t <+>---     text " to pattern " <+> prettyTCM p+--     " comparing term " <+> prettyTCM t <+>+--     " to pattern " <+> prettyTCM p   t <- liftTCM $ stripAllProjections t   o <- compareTerm' t p   liftTCM $ reportSDoc "term.compare" 25 $-    text " comparing term " <+> prettyTCM t <+>-    text " to pattern " <+> prettyTCM p <+>+    " comparing term " <+> prettyTCM t <+>+    " to pattern " <+> prettyTCM p <+>     text (" results in " ++ prettyShow o)   return o @@ -1119,6 +1168,7 @@ -- | Remove all non-coinductive projections from an algebraic term --   (not going under binders). --   Also, remove 'DontCare's.+-- class StripAllProjections a where   stripAllProjections :: a -> TCM a @@ -1131,6 +1181,12 @@       []             -> return []       (Apply a : es) -> do         (:) <$> (Apply <$> stripAllProjections a) <*> stripAllProjections es+      (IApply x y a : es) -> do+        -- TODO Andrea: are we doind extra work?+        (:) <$> (IApply <$> stripAllProjections x+                        <*> stripAllProjections y+                        <*> stripAllProjections a)+            <*> stripAllProjections es       (Proj o p  : es) -> do         isP <- isProjectionButNotCoinductive p         applyUnless isP (Proj o p :) <$> stripAllProjections es@@ -1142,11 +1198,22 @@   stripAllProjections t = do     case t of       Var i es   -> Var i <$> stripAllProjections es-      Con c ci ts -> Con c ci <$> stripAllProjections ts+      Con c ci ts -> do+        -- Andreas, 2019-02-23, re #2613.  This is apparently not necessary:+        -- c <- fromRightM (\ err -> return c) $ getConForm (conName c)+        Con c ci <$> stripAllProjections ts       Def d es   -> Def d <$> stripAllProjections es       DontCare t -> stripAllProjections t       _ -> return t +-- | Normalize outermost constructor name in a pattern.++reduceConPattern :: DeBruijnPattern -> TCM DeBruijnPattern+reduceConPattern = \case+  ConP c i ps -> fromRightM (\ err -> return c) (getConForm (conName c)) <&> \ c' ->+    ConP c' i ps+  p -> return p+ -- | @compareTerm' t dbpat@  compareTerm' :: Term -> Masked DeBruijnPattern -> TerM Order@@ -1155,6 +1222,7 @@   cutoff <- terGetCutOff   let ?cutoff = cutoff   v <- liftTCM (instantiate v)+  p <- liftTCM $ reduceConPattern p   case (v, p) of      -- Andreas, 2013-11-20 do not drop projections,@@ -1283,6 +1351,7 @@   let no = return Order.unknown   case p of     ProjP{}   -> no+    IApplyP _ _ _ x  -> compareVarVar i (Masked m x)     LitP{}    -> no     DotP{}   -> no     VarP _ x  -> compareVarVar i (Masked m x)@@ -1293,6 +1362,10 @@     ConP c _ ps -> if m then no else setUsability True <$> do       decrease <$> offsetFromConstructor (conName c)                <*> (Order.supremum <$> mapM (compareVar i . notMasked . namedArg) ps)+    DefP _ c ps -> if m then no else setUsability True <$> do+      decrease <$> offsetFromConstructor c+               <*> (Order.supremum <$> mapM (compareVar i . notMasked . namedArg) ps)+      -- This should be fine for c == hcomp  -- | Compare two variables. --
src/full/Agda/TypeChecking/Abstract.hs view
@@ -41,13 +41,13 @@ piAbstractTerm v a b = do   fun <- mkPi (defaultDom ("w", a)) <$> abstractType a v b   reportSDoc "tc.abstract" 50 $-    sep [ text "piAbstract" <+> sep [ prettyTCM v <+> text ":", nest 2 $ prettyTCM a ]-        , nest 2 $ text "from" <+> prettyTCM b-        , nest 2 $ text "-->" <+> prettyTCM fun ]+    sep [ "piAbstract" <+> sep [ prettyTCM v <+> ":", nest 2 $ prettyTCM a ]+        , nest 2 $ "from" <+> prettyTCM b+        , nest 2 $ "-->" <+> prettyTCM fun ]   reportSDoc "tc.abstract" 70 $-    sep [ text "piAbstract" <+> sep [ (text . show) v <+> text ":", nest 2 $ (text . show) a ]-        , nest 2 $ text "from" <+> (text . show) b-        , nest 2 $ text "-->" <+> (text . show) fun ]+    sep [ "piAbstract" <+> sep [ (text . show) v <+> ":", nest 2 $ (text . show) a ]+        , nest 2 $ "from" <+> (text . show) b+        , nest 2 $ "-->" <+> (text . show) fun ]   return fun  -- | @piAbstract (v, a) b[v] = (w : a) -> b[w]@@@ -63,7 +63,8 @@   let prfTy = equalityUnview eqt       vTy   = El s a   b <- abstractType prfTy prf b-  b <- addContext ("w", defaultDom prfTy) $ abstractType (raise 1 vTy) (unArg $ raise 1 v) b+  b <- addContext ("w" :: String, defaultDom prfTy) $+         abstractType (raise 1 vTy) (unArg $ raise 1 v) b   return . funType vTy . funType eqTy' . swap01 $ b   where     funType a = mkPi $ defaultDom ("w", a)@@ -100,17 +101,17 @@ abstractTerm :: Type -> Term -> Type -> Term -> TCM Term abstractTerm a u@Con{} b v = do   reportSDoc "tc.abstract" 50 $-    sep [ text "Abstracting"-        , nest 2 $ sep [ prettyTCM u <+> text ":", nest 2 $ prettyTCM a ]-        , text "over"-        , nest 2 $ sep [ prettyTCM v <+> text ":", nest 2 $ prettyTCM b ] ]+    sep [ "Abstracting"+        , nest 2 $ sep [ prettyTCM u <+> ":", nest 2 $ prettyTCM a ]+        , "over"+        , nest 2 $ sep [ prettyTCM v <+> ":", nest 2 $ prettyTCM b ] ]   reportSDoc "tc.abstract" 70 $-    sep [ text "Abstracting"-        , nest 2 $ sep [ (text . show) u <+> text ":", nest 2 $ (text . show) a ]-        , text "over"-        , nest 2 $ sep [ (text . show) v <+> text ":", nest 2 $ (text . show) b ] ]+    sep [ "Abstracting"+        , nest 2 $ sep [ (text . show) u <+> ":", nest 2 $ (text . show) a ]+        , "over"+        , nest 2 $ sep [ (text . show) v <+> ":", nest 2 $ (text . show) b ] ] -  hole <- qualify <$> currentModule <*> freshName_ "hole"+  hole <- qualify <$> currentModule <*> freshName_ ("hole" :: String)   noMutualBlock $ addConstant hole $ defaultDefn defaultArgInfo hole a Axiom    args <- map Apply <$> getContextArgs@@ -122,14 +123,14 @@         case isPrefixOf u' v of           Nothing -> return v           Just es -> do -- Check that the types match.-            s <- get-            do  disableDestructiveUpdate (noConstraints $ equalType a' b)-                put s+            s <- getTC+            do  noConstraints $ equalType a' b+                putTC s                 return $ Def hole (raise (m - n) args ++ es)               `catchError` \ _ -> do                 reportSDoc "tc.abstract.ill-typed" 50 $-                  sep [ text "Skipping ill-typed abstraction"-                      , nest 2 $ sep [ prettyTCM v <+> text ":", nest 2 $ prettyTCM b ] ]+                  sep [ "Skipping ill-typed abstraction"+                      , nest 2 $ sep [ prettyTCM v <+> ":", nest 2 $ prettyTCM b ] ]                 return v    -- #2763: This can fail if the user is with-abstracting incorrectly (for@@ -139,9 +140,9 @@   -- the error message.   res <- catchError_ (checkInternal' (defaultAction { preAction = abstr }) v b) $ \ err -> do         reportSDoc "tc.abstract.ill-typed" 40 $-          text "Skipping typed abstraction over ill-typed term" <?> (prettyTCM v <?> (text ":" <+> prettyTCM b))+          "Skipping typed abstraction over ill-typed term" <?> (prettyTCM v <?> (":" <+> prettyTCM b))         return v-  reportSDoc "tc.abstract" 50 $ text "Resulting abstraction" <?> prettyTCM res+  reportSDoc "tc.abstract" 50 $ "Resulting abstraction" <?> prettyTCM res   modifySignature $ updateDefinitions $ HMap.delete hole   return $ absTerm (Def hole args) res @@ -167,6 +168,7 @@       Sort s      -> Sort $ absT s       MetaV m vs  -> MetaV m $ absT vs       DontCare mv -> DontCare $ absT mv+      Dummy s     -> Dummy s       where         absT x = absTerm u x @@ -176,12 +178,14 @@ instance AbsTerm Sort where   absTerm u s = case s of     Type n     -> Type $ absS n-    Prop       -> Prop+    Prop n     -> Prop $ absS n     Inf        -> Inf     SizeUniv   -> SizeUniv     PiSort s1 s2 -> PiSort (absS s1) (absS s2)     UnivSort s -> UnivSort $ absS s     MetaS x es -> MetaS x $ absS es+    DefS d es  -> DefS d $ absS es+    DummyS{}   -> s     where absS x = absTerm u x  instance AbsTerm Level where@@ -193,7 +197,7 @@  instance AbsTerm LevelAtom where   absTerm u l = case l of-    MetaLevel m vs   -> MetaLevel m    $ absTerm u vs+    MetaLevel m vs   -> UnreducedLevel $ absTerm u (MetaV m vs)     NeutralLevel r v -> NeutralLevel r $ absTerm u v     BlockedLevel _ v -> UnreducedLevel $ absTerm u v -- abstracting might remove the blockage     UnreducedLevel v -> UnreducedLevel $ absTerm u v
src/full/Agda/TypeChecking/CheckInternal.hs view
@@ -10,11 +10,14 @@  module Agda.TypeChecking.CheckInternal   ( checkType+  , checkType'+  , checkSort   , checkInternal   , checkInternal'   , Action(..), defaultAction, eraseUnusedAction   , infer   , inferSort+  , shouldBeSort   ) where  import Control.Arrow ((&&&), (***), first, second)@@ -29,6 +32,7 @@ import Agda.TypeChecking.Monad import Agda.TypeChecking.Monad.Builtin import Agda.TypeChecking.Pretty+import Agda.TypeChecking.Primitive import Agda.TypeChecking.ProjectionLike (elimView) import Agda.TypeChecking.Records (getDefType) import Agda.TypeChecking.Reduce@@ -36,6 +40,7 @@ import Agda.TypeChecking.Sort import Agda.TypeChecking.Telescope + import Agda.Utils.Functor (($>)) import Agda.Utils.Monad import Agda.Utils.Size@@ -66,7 +71,7 @@ checkType' :: Type -> TCM Sort checkType' t = do   reportSDoc "tc.check.internal" 20 $ sep-    [ text "checking internal type "+    [ "checking internal type "     , prettyTCM t     ]   v <- elimView True $ unEl t -- bring projection-like funs in post-fix form@@ -95,6 +100,7 @@     v@Lit{}    -> typeError $ InvalidType v     v@Level{}  -> typeError $ InvalidType v     DontCare v -> checkType' $ t $> v+    Dummy s    -> __IMPOSSIBLE_VERBOSE__ s  checkTypeSpine :: Type -> Term -> Elims -> TCM Sort checkTypeSpine a self es = shouldBeSort =<< do snd <$> inferSpine a self es@@ -144,8 +150,8 @@ checkInternal' :: Action -> Term -> Type -> TCM Term checkInternal' action v t = do   reportSDoc "tc.check.internal" 20 $ sep-    [ text "checking internal "-    , nest 2 $ sep [ prettyTCM v <+> text ":"+    [ "checking internal "+    , nest 2 $ sep [ prettyTCM v <+> ":"                    , nest 2 $ prettyTCM t ] ]   -- Bring projection-like funs in post-fix form,   -- even lone ones (True).@@ -169,7 +175,7 @@           $ Con c ci $ take (length vs) vs2     Lit l      -> Lit l <$ ((`subtype` t) =<< litType l)     Lam ai vb  -> do-      (a, b) <- shouldBePi t+      (a, b) <- maybe (shouldBePi t) return =<< isPath t       ai <- checkArgInfo action ai $ domInfo a       addContext (suggest vb b, a) $ do         Lam ai . Abs (absName vb) <$> checkInternal' action (absBody vb) (absBody b)@@ -194,6 +200,7 @@       l <- checkLevel action l       Level l <$ ((`subtype` t) =<< levelType)     DontCare v -> DontCare <$> checkInternal' action v t+    Dummy s -> __IMPOSSIBLE_VERBOSE__ s  -- | Make sure a constructor is fully applied --   and infer the type of the constructor.@@ -232,10 +239,10 @@   -> TCM Term  -- ^ The application after modification by the @Action@. checkSpine action a self es t = do   reportSDoc "tc.check.internal" 20 $ sep-    [ text "checking spine "-    , nest 2 $ sep [ parens (sep [ prettyTCM self <+> text ":"+    [ "checking spine "+    , nest 2 $ sep [ parens (sep [ prettyTCM self <+> ":"                                  , nest 2 $ prettyTCM a ])-                   , nest 4 $ prettyTCM es <+> text ":"+                   , nest 4 $ prettyTCM es <+> ":"                    , nest 2 $ prettyTCM t ] ]   ((v, v'), t') <- inferSpine' action a self self es   t' <- reduce t'@@ -317,13 +324,21 @@ inferSpine' action t self self' [] = return ((self, self'), t) inferSpine' action t self self' (e : es) = do   reportSDoc "tc.infer.internal" 30 $ sep-    [ text "inferSpine': "-    , text "type t = " <+> prettyTCM t-    , text "self  = " <+> prettyTCM self-    , text "self' = " <+> prettyTCM self'-    , text "eliminated by e = " <+> prettyTCM e+    [ "inferSpine': "+    , "type t = " <+> prettyTCM t+    , "self  = " <+> prettyTCM self+    , "self' = " <+> prettyTCM self'+    , "eliminated by e = " <+> prettyTCM e     ]   case e of+    IApply x y r -> do+      (a, b) <- shouldBePath t+      r' <- checkInternal' action r (unDom a)+      izero <- primIZero+      ione  <- primIOne+      x' <- checkInternal' action x (b `absApp` izero)+      y' <- checkInternal' action y (b `absApp` ione)+      inferSpine' action (b `absApp` r) (self `applyE` [e]) (self' `applyE` [IApply x' y' r']) es     Apply (Arg ai v) -> do       (a, b) <- shouldBePi t       ai <- checkArgInfo action ai $ domInfo a@@ -344,6 +359,13 @@   where failure = typeError $ ShouldBeRecordType t     -- TODO: more accurate error that makes sense also for proj.-like funs. +shouldBePath :: Type -> TCM (Dom Type, Abs Type)+shouldBePath t = do+  m <- isPath t+  case m of+    Just p  -> return p+    Nothing -> typeError $ ShouldBePath t+ shouldBePi :: Type -> TCM (Dom Type, Abs Type) shouldBePi t = ifPiType t (\ a b -> return (a, b)) $ const $ typeError $ ShouldBePi t @@ -363,8 +385,7 @@ checkSort action s =   case s of     Type l   -> Type <$> checkLevel action l-    Prop     -> __IMPOSSIBLE__-      -- the dummy Prop should not be part of a term we check+    Prop l   -> Prop <$> checkLevel action l     Inf      -> return Inf     SizeUniv -> return SizeUniv     PiSort a b -> do@@ -379,7 +400,18 @@       case v of         Sort s     -> return s         MetaV x es -> return $ MetaS x es+        Def d es   -> return $ DefS d es         _          -> __IMPOSSIBLE__+    DefS d es -> do+      a <- defType <$> getConstInfo d+      let self = Sort $ DefS d []+      ((_,v),_) <- inferSpine' action a self self es+      case v of+        Sort s     -> return s+        MetaV x es -> return $ MetaS x es+        Def d es   -> return $ DefS d es+        _          -> __IMPOSSIBLE__+    DummyS s -> __IMPOSSIBLE_VERBOSE__ s  -- | Check if level is well-formed. checkLevel :: Action -> Level -> TCM Level@@ -406,7 +438,6 @@   ifIsSort t1 (\ s1 -> (s1 `leqSort`) =<< shouldBeSort t2) $ do     -- Andreas, 2017-03-09, issue #2493     -- Only check subtyping, do not solve any metas!-    -- TODO: NEED? disableDestructiveUpdate     dontAssignMetas $ leqType t1 t2  -- | Compute the sort of a type.@@ -432,17 +463,20 @@     Lam{}      -> __IMPOSSIBLE__     Level{}    -> __IMPOSSIBLE__     DontCare{} -> __IMPOSSIBLE__+    Dummy s    -> __IMPOSSIBLE_VERBOSE__ s  -- | @eliminate t self es@ eliminates value @self@ of type @t@ by spine @es@ --   and returns the remaining value and its type. eliminate :: Term -> Type -> Elims -> TCM (Term, Type) eliminate self t [] = return (self, t) eliminate self t (e : es) = case e of-    Apply (Arg _ v) -> do-      (_, b) <- shouldBePi t-      eliminate (self `apply1` v) (b `absApp` v) es+    Apply (Arg _ v) -> ifNotPiType t __IMPOSSIBLE__ {-else-} $ \ _ b ->+      eliminate (self `applyE` [e]) (b `absApp` v) es+    IApply _ _ v -> do+      (_, b) <- shouldBePath t+      eliminate (self `applyE` [e]) (b `absApp` v) es     -- case: projection or projection-like     Proj o f -> do-      (Dom ai _, b) <- shouldBePi =<< shouldBeProjectible t f+      (Dom{domInfo = ai}, b) <- shouldBePi =<< shouldBeProjectible t f       u  <- applyDef o f $ Arg ai self       eliminate u (b `absApp` self) es
src/full/Agda/TypeChecking/CheckInternal.hs-boot view
@@ -9,6 +9,9 @@ eraseUnusedAction :: Action  checkType :: Type -> TCM ()+checkType' :: Type -> TCM Sort+checkSort :: Action -> Sort -> TCM Sort checkInternal :: Term -> Type -> TCM () checkInternal' :: Action -> Term -> Type -> TCM Term infer :: Term -> TCM Type+shouldBeSort :: Type -> TCM Sort
src/full/Agda/TypeChecking/CompiledClause.hs view
@@ -51,6 +51,8 @@     -- ^ Map from literal to case subtree.   , catchAllBranch :: Maybe c     -- ^ (Possibly additional) catch-all clause.+  , fallThrough :: Maybe Bool+    -- ^ (if True) In case of non-canonical argument use catchAllBranch.   , lazyMatch :: Bool     -- ^ Lazy pattern match. Requires single (non-copattern) branch with no lit     --   branches and no catch-all.@@ -77,19 +79,19 @@ type CompiledClauses = CompiledClauses' Term  litCase :: Literal -> c -> Case c-litCase l x = Branches False Map.empty Nothing (Map.singleton l x) Nothing False+litCase l x = Branches False Map.empty Nothing (Map.singleton l x) Nothing (Just False) False -conCase :: QName -> WithArity c -> Case c-conCase c x = Branches False (Map.singleton c x) Nothing Map.empty Nothing False+conCase :: QName -> Bool -> WithArity c -> Case c+conCase c b x = Branches False (Map.singleton c x) Nothing Map.empty Nothing (Just b) False  etaCase :: ConHead -> WithArity c -> Case c-etaCase c x = Branches False Map.empty (Just (c, x)) Map.empty Nothing True+etaCase c x = Branches False Map.empty (Just (c, x)) Map.empty Nothing (Just False) True  projCase :: QName -> c -> Case c-projCase c x = Branches True (Map.singleton c $ WithArity 0 x) Nothing Map.empty Nothing False+projCase c x = Branches True (Map.singleton c $ WithArity 0 x) Nothing Map.empty Nothing (Just False) False  catchAll :: c -> Case c-catchAll x = Branches False Map.empty Nothing Map.empty (Just x) False+catchAll x = Branches False Map.empty Nothing Map.empty (Just x) (Just True) False  -- | Check that the requirements on lazy matching (single inductive case) are --   met, and set lazy to False otherwise.@@ -130,24 +132,30 @@   mappend = (<>)  instance Semigroup m => Semigroup (Case m) where-  Branches cop cs eta ls m lazy <> Branches cop' cs' eta' ls' m' lazy' = checkLazyMatch $+  Branches cop cs eta ls m b lazy <> Branches cop' cs' eta' ls' m' b' lazy' = checkLazyMatch $     Branches (cop || cop') -- for @projCase <> mempty@              (Map.unionWith (<>) cs cs')              (unionEta eta eta')              (Map.unionWith (<>) ls ls')              (m <> m')+             (combine b b')              (lazy && lazy')-    where unionEta Nothing b = b-          unionEta b Nothing = b-          unionEta Just{} Just{} = __IMPOSSIBLE__+   where+     combine Nothing  b'        = b+     combine b        Nothing   = b+     combine (Just b) (Just b') = Just $ b && b' +     unionEta Nothing b = b+     unionEta b Nothing = b+     unionEta Just{} Just{} = __IMPOSSIBLE__+ instance (Semigroup m, Monoid m) => Monoid (Case m) where   mempty  = empty   mappend = (<>)  instance Null (Case m) where-  empty = Branches False Map.empty Nothing Map.empty Nothing True-  null (Branches _cop cs eta ls mcatch _lazy) = null cs && null eta && null ls && null mcatch+  empty = Branches False Map.empty Nothing Map.empty Nothing Nothing True+  null (Branches _cop cs eta ls mcatch _b _lazy) = null cs && null eta && null ls && null mcatch  -- * Pretty instances. @@ -155,26 +163,26 @@   pretty = pretty . content  instance Pretty a => Pretty (Case a) where-  prettyPrec p (Branches _cop cs eta ls m lazy) =+  prettyPrec p (Branches _cop cs eta ls m b lazy) =     mparens (p > 0) $ prLazy lazy <+> vcat (prettyMap cs ++ prEta eta ++ prettyMap ls ++ prC m)     where-      prLazy True  = text "~"+      prLazy True  = "~"       prLazy False = empty       prC Nothing = []-      prC (Just x) = [text "_ ->" <+> pretty x]+      prC (Just x) = ["_ ->" <+> pretty x]       prEta Nothing = []-      prEta (Just (c, cc)) = [(text "eta" <+> pretty c <+> text "->") <?> pretty cc]+      prEta (Just (c, cc)) = [("eta" <+> pretty c <+> "->") <?> pretty cc]  prettyMap :: (Pretty k, Pretty v) => Map k v -> [Doc]-prettyMap m = [ sep [ pretty k <+> text "->"+prettyMap m = [ sep [ pretty k <+> "->"                     , nest 2 $ pretty v ]               | (k, v) <- Map.toList m ]  instance Pretty CompiledClauses where-  pretty (Done hs t) = text ("done" ++ show hs) <?> pretty t-  pretty Fail        = text "fail"+  pretty (Done hs t) = ("done" <> pretty hs) <?> pretty t+  pretty Fail        = "fail"   pretty (Case n bs) | projPatterns bs =-    sep [ text "record"+    sep [ "record"         , nest 2 $ pretty bs         ]   pretty (Case n bs) =@@ -186,12 +194,12 @@   killRange = fmap killRange  instance KillRange c => KillRange (Case c) where-  killRange (Branches cop con eta lit all lazy) = Branches cop+  killRange (Branches cop con eta lit all b lazy) = Branches cop     (killRangeMap con)     (killRange eta)     (killRangeMap lit)     (killRange all)-    lazy+    b lazy  instance KillRange CompiledClauses where   killRange (Case i br) = killRange2 Case i br
src/full/Agda/TypeChecking/CompiledClause/Compile.hs view
@@ -45,8 +45,8 @@ data RunRecordPatternTranslation = RunRecordPatternTranslation | DontRunRecordPatternTranslation   deriving (Eq) -compileClauses' :: RunRecordPatternTranslation -> [Clause] -> TCM CompiledClauses-compileClauses' recpat cs = do+compileClauses' :: RunRecordPatternTranslation -> [Clause] -> Maybe SplitTree -> TCM CompiledClauses+compileClauses' recpat cs mSplitTree = do   -- Apply forcing translation. This only shuffles the deBruijn variables   -- so doesn't affect the right hand side.   cs <- sequence [ forcingTranslation ps <&> \ qs -> c{ namedClausePats = qs }@@ -59,7 +59,8 @@   let translate | recpat == RunRecordPatternTranslation = translateCompiledClauses                 | otherwise                             = return -  translate $ compile cs+  translate $ caseMaybe mSplitTree (compile cs) $ \splitTree ->+    compileWithSplitTree splitTree cs  -- | Process function clauses into case tree. --   This involves:@@ -70,15 +71,20 @@ --   Phases 1. and 2. are skipped if @Nothing@. compileClauses ::   Maybe (QName, Type) -- ^ Translate record patterns and coverage check with given type?-  -> [Clause] -> TCM CompiledClauses+  -> [Clause] -> TCM (Maybe SplitTree, CompiledClauses) compileClauses mt cs = do   -- Construct clauses with pattern variables bound in left-to-right order.   -- Discard de Bruijn indices in patterns.   case mt of-    Nothing -> compile . map unBruijn <$> normaliseProjP cs+    Nothing -> (Nothing,) . compile . map unBruijn <$> normaliseProjP cs     Just (q, t)  -> do       splitTree <- coverageCheck q t cs +      reportSDoc "tc.cc.tree" 20 $ vcat+        [ "split tree from coverage check "+        , return $ P.pretty splitTree+        ]+       -- The coverage checker might have added some clauses (#2288)!       -- Throw away the unreachable clauses (#2723).       let notUnreachable = (Just True /=) . clauseUnreachable@@ -87,17 +93,21 @@       let cls = map unBruijn cs        reportSDoc "tc.cc" 30 $ sep $ do-        (text "clauses patterns  before compilation") : do+        "clauses patterns  before compilation" : do           map (prettyTCM . map unArg . clPats) cls       reportSDoc "tc.cc" 50 $-        text "clauses before compilation" <?> pretty cs+        "clauses before compilation" <?> pretty cs       let cc = compileWithSplitTree splitTree cls-      reportSDoc "tc.cc" 12 $ sep-        [ text "compiled clauses (still containing record splits)"+      reportSDoc "tc.cc" 20 $ sep+        [ "compiled clauses (still containing record splits)"         , nest 2 $ return $ P.pretty cc         ]       cc <- translateCompiledClauses cc-      return (fmap precomputeFreeVars_ cc)+      reportSDoc "tc.cc" 12 $ sep+        [ "compiled clauses"+        , nest 2 $ return $ P.pretty cc+        ]+      return (Just splitTree, fmap precomputeFreeVars_ cc)  -- | Stripped-down version of 'Agda.Syntax.Internal.Clause' --   used in clause compiler.@@ -108,7 +118,7 @@   } deriving (Show)  instance P.Pretty Cl where-  pretty (Cl ps b) = P.prettyList ps P.<+> P.text "->" P.<+> maybe (P.text "_|_") P.pretty b+  pretty (Cl ps b) = P.prettyList ps P.<+> "->" P.<+> maybe "_|_" P.pretty b  type Cls = [Cl] @@ -135,10 +145,12 @@                            , conBranches = cons                            , etaBranch   = Nothing                            , litBranches = lits+                           , fallThrough = fT                            , catchAllBranch = catchAll }       = br{ conBranches    = updCons cons           , etaBranch      = Nothing           , litBranches    = updLits lits+          , fallThrough    = fT           , catchAllBranch = updCatchall catchAll           }       where@@ -165,8 +177,10 @@     name (VarP _ x) = x     name (DotP _ _) = underscore     name ConP{}  = __IMPOSSIBLE__+    name DefP{}  = __IMPOSSIBLE__     name LitP{}  = __IMPOSSIBLE__     name ProjP{} = __IMPOSSIBLE__+    name (IApplyP _ _ _ x) = x  -- | Get the index of the next argument we need to split on. --   This the number of the first pattern that does a (non-lazy) match in the first clause.@@ -189,23 +203,27 @@     getCon _                = Nothing  -- | Is is not a variable pattern?---   And if yes, is it a record pattern?+--   And if yes, is it a record pattern and/or a fallThrough one? properSplit :: Pattern' a -> Maybe Bool-properSplit (ConP _ cpi _) = Just (Just PatORec == conPRecord cpi)-properSplit LitP{}  = Just False-properSplit ProjP{} = Just False-properSplit VarP{}  = Nothing-properSplit DotP{}  = Nothing+properSplit (ConP _ cpi _) = Just (Just PatORec == conPRecord cpi || conPFallThrough cpi)+properSplit DefP{}    = Just False+properSplit LitP{}    = Just False+properSplit ProjP{}   = Just False+properSplit IApplyP{} = Nothing+properSplit VarP{}    = Nothing+properSplit DotP{}    = Nothing  -- | Is this a variable pattern? -- --   Maintain invariant: @isVar = isNothing . properSplit@! isVar :: Pattern' a -> Bool-isVar VarP{}  = True-isVar DotP{}  = True-isVar ConP{}  = False-isVar LitP{}  = False-isVar ProjP{} = False+isVar IApplyP{} = True+isVar VarP{}    = True+isVar DotP{}    = True+isVar ConP{}    = False+isVar DefP{}    = False+isVar LitP{}    = False+isVar ProjP{}   = False  -- | @splitOn single n cs@ will force expansion of catch-alls --   if @single@.@@ -217,8 +235,11 @@ splitC :: Int -> Cl -> Case Cl splitC n (Cl ps b) = caseMaybe mp fallback $ \case   ProjP _ d   -> projCase d $ Cl (ps0 ++ ps1) b-  ConP c i qs -> (conCase (conName c) $ WithArity (length qs) $+  IApplyP{}   -> fallback+  ConP c i qs -> (conCase (conName c) (conPFallThrough i) $ WithArity (length qs) $                    Cl (ps0 ++ map (fmap namedThing) qs ++ ps1) b) { lazyMatch = conPLazy i }+  DefP o q qs -> (conCase q False $ WithArity (length qs) $+                   Cl (ps0 ++ map (fmap namedThing) qs ++ ps1) b) { lazyMatch = False }   LitP l      -> litCase l $ Cl (ps0 ++ ps1) b   VarP{}      -> fallback   DotP{}      -> fallback@@ -280,6 +301,22 @@ --       false -> b --     false -> a -- @+--+-- Example from issue #3628:+-- @+--   f i j k (i = i0)(k = i1) = base+--   f i j k (j = i1)         = base+-- @+-- case tree:+-- @+--   f i j k o = case i of+--     i0 -> case k of+--             i1 -> base+--             _  -> case j of+--                     i1 -> base+--     _  -> case j of+--             i1 -> base+-- @ expandCatchAlls :: Bool -> Int -> Cls -> Cls expandCatchAlls single n cs =   -- Andreas, 2013-03-22@@ -307,7 +344,8 @@     exCatchAllNth ps = any (isVar . unArg) $ take 1 $ drop n ps      classify (LitP l)     = Left l-    classify (ConP c _ _) = Right c+    classify (ConP c _ _) = Right (Left c)+    classify (DefP _ q _) = Right (Right q)     classify _            = __IMPOSSIBLE__      -- All non-catch-all patterns following this one (at position n).@@ -333,9 +371,17 @@             ci       = fromConPatternInfo mt             m        = length qs'             -- replace all direct subpatterns of q by _+            -- TODO Andrea: might need these to sometimes be IApply?             conPArgs = map (fmap ($> varP "_")) qs'             conArgs  = zipWith (\ q' i -> q' $> var i) qs' $ downFrom m         LitP l -> Cl (ps0 ++ [q $> LitP l] ++ ps1) (substBody n' 0 (Lit l) b)+        DefP o d qs' -> Cl (ps0 ++ [q $> DefP o d conPArgs] ++ ps1)+                            (substBody n' m (Def d (map Apply conArgs)) b)+          where+            m        = length qs'+            -- replace all direct subpatterns of q by _+            conPArgs = map (fmap ($> varP "_")) qs'+            conArgs  = zipWith (\ q' i -> q' $> var i) qs' $ downFrom m         _ -> __IMPOSSIBLE__       where         -- Andreas, 2016-09-19 issue #2168
src/full/Agda/TypeChecking/CompiledClause/Compile.hs-boot view
@@ -2,6 +2,7 @@  import Agda.Syntax.Internal import Agda.TypeChecking.CompiledClause+import Agda.TypeChecking.Coverage.SplitTree import Agda.TypeChecking.Monad.Base -compileClauses :: Maybe (QName, Type) -> [Clause] -> TCM CompiledClauses+compileClauses :: Maybe (QName, Type) -> [Clause] -> TCM (Maybe SplitTree, CompiledClauses)
src/full/Agda/TypeChecking/CompiledClause/Match.hs view
@@ -6,12 +6,14 @@  import qualified Data.List as List import qualified Data.Map as Map+import qualified Data.Set as Set  import Agda.Syntax.Internal import Agda.Syntax.Common  import Agda.TypeChecking.CompiledClause import Agda.TypeChecking.Monad+import Agda.TypeChecking.Monad.Builtin (getBuiltinName', builtinIZero, builtinIOne) import Agda.TypeChecking.Pretty import Agda.TypeChecking.Reduce import Agda.TypeChecking.Reduce.Monad as RedM@@ -27,7 +29,7 @@   r <- matchCompiledE c $ map (fmap Apply) args   case r of     YesReduction simpl v -> return $ YesReduction simpl v-    NoReduction bes      -> return $ NoReduction $ fmap (map argFromElim) bes+    NoReduction bes      -> return $ NoReduction $ fmap (map (fromMaybe __IMPOSSIBLE__ . isApplyElim)) bes  -- | @matchCompiledE c es@ takes a function given by case tree @c@ and --   and a spine @es@ and tries to apply the function to @es@.@@ -64,7 +66,7 @@ match' :: Stack -> ReduceM (Reduced (Blocked Elims) Term) match' ((c, es, patch) : stack) = do   let no blocking es = return $ NoReduction $ blocking $ patch $ map ignoreReduced es-      yes t          = flip YesReduction t <$> asks envSimplification+      yes t          = flip YesReduction t <$> asksTC envSimplification    do @@ -85,7 +87,7 @@           m              = length es           -- at least the first @n@ elims must be @Apply@s, so we can           -- turn them into a subsitution-          toSubst        = parallelS . reverse . map (unArg . argFromElim . ignoreReduced)+          toSubst        = parallelS . reverse . map (unArg . fromMaybe __IMPOSSIBLE__ . isApplyElim . ignoreReduced)           (es0, es1)     = splitAt n es           lam x t        = Lam (argInfo x) (Abs (unArg x) t) @@ -94,7 +96,7 @@         case splitAt n es of           (_, []) -> no (NotBlocked Underapplied) es           (es0, MaybeRed _ e@(Apply (Arg _ v0)) : es1) ->-              let projs = [ MaybeRed NotReduced $ Apply $ defaultArg $ v0 `applyE` [Proj ProjSystem f] | f <- fs ]+              let projs = [ MaybeRed NotReduced $ Apply $ Arg ai $ relToDontCare ai $ v0 `applyE` [Proj ProjSystem f] | Arg ai f <- fs ]                   catchAllFrame stack = maybe stack (\c -> (c, es, patch) : stack) ca in               match' $ (content cc, es0 ++ projs ++ es1, patchEta) : catchAllFrame stack             where@@ -128,12 +130,13 @@                     Just cc -> (cc, es0 ++ es1, patchLit) : stack                 -- If our argument (or its constructor form) is @Con c ci vs@                 -- we push @conFrame c vs@ onto the stack.-                conFrame c ci vs stack =-                  case Map.lookup (conName c) (conBranches bs) of+                conFrame c ci vs stack = conFrame' (conName c) (Con c ci) vs stack+                conFrame' q f vs stack =+                  case Map.lookup q (conBranches bs) of                     Nothing -> stack                     Just cc -> ( content cc                                , es0 ++ map (MaybeRed NotReduced) vs ++ es1-                               , patchCon c ci (length vs)+                               , patchCon f (length vs)                                ) : stack                 -- If our argument is @Proj p@, we push @projFrame p@ onto the stack.                 projFrame p stack =@@ -146,17 +149,26 @@                   where (es0, es1) = splitAt n es                 -- In case we matched constructor @c@ with @m@ arguments,                 -- contract these @m@ arguments @vs@ to @Con c ci vs@.-                patchCon c ci m es = patch (es0 ++ [Con c ci vs <$ e] ++ es2)+--                patchCon c ci m es = patch (es0 ++ [Con c ci vs <$ e] ++ es2)+                patchCon f m es = patch (es0 ++ [f vs <$ e] ++ es2)                   where (es0, rest) = splitAt n es                         (es1, es2)  = splitAt m rest                         vs          = es1+            -- zo <- do+            --    mi <- getBuiltinName' builtinIZero+            --    mo <- getBuiltinName' builtinIOne+            --    return $ Set.fromList $ catMaybes [mi,mo] +            fallThrough <- return $ fromMaybe False (fallThrough bs) && isJust (catchAllBranch bs)++            let+              isCon b =+                case ignoreBlocking b of+                 Apply a | c@Con{} <- unArg a -> Just c+                 _                            -> Nothing             -- Now do the matching on the @n@ths argument:             id $              case eb of-              Blocked x _            -> no (Blocked x) es'-              NotBlocked _ (Apply (Arg info (MetaV x _))) -> no (Blocked x) es'-               -- In case of a literal, try also its constructor form               NotBlocked _ (Apply (Arg info v@(Lit l))) -> performedSimplification $ do                 cv <- constructorForm v@@ -165,8 +177,11 @@                       _        -> stack                 match' $ litFrame l $ cFrame $ catchAllFrame stack +              NotBlocked _ (Apply (Arg info v@(Def q vs))) | Just{} <- Map.lookup q (conBranches bs) -> performedSimplification $ do+                match' $ conFrame' q (Def q) vs $ catchAllFrame $ stack+               -- In case of a constructor, push the conFrame-              NotBlocked _ (Apply (Arg info (Con c ci vs))) -> performedSimplification $+              b | Just (Con c ci vs) <- isCon b -> performedSimplification $                 match' $ conFrame c ci vs $ catchAllFrame $ stack                -- In case of a projection, push the projFrame@@ -174,13 +189,19 @@                 match' $ projFrame p $ stack -- catchAllFrame $ stack                 -- Issue #1986: no catch-all for copattern matching! +              _ | fallThrough -> match' $ catchAllFrame $ stack++              Blocked x _            -> no (Blocked x) es'+              NotBlocked _ (Apply (Arg info (MetaV x _))) -> no (Blocked x) es'+               -- Otherwise, we are stuck.  If we were stuck before,               -- we keep the old reason, otherwise we give reason StuckOn here.               NotBlocked blocked e -> no (NotBlocked $ stuckOn e blocked) es' + -- If we reach the empty stack, then pattern matching was incomplete match' [] = {- new line here since __IMPOSSIBLE__ does not like the ' in match' -}-  caseMaybeM (asks envAppDef) __IMPOSSIBLE__ $ \ f -> do+  caseMaybeM (asksTC envAppDef) __IMPOSSIBLE__ $ \ f -> do     pds <- getPartialDefs     if f `elem` pds     then return (NoReduction $ NotBlocked MissingClauses [])
src/full/Agda/TypeChecking/Constraints.hs view
@@ -14,6 +14,7 @@ import Agda.Syntax.Internal  import Agda.TypeChecking.Monad+import Agda.TypeChecking.Monad.Caching import Agda.TypeChecking.InstanceArguments import Agda.TypeChecking.Pretty import Agda.TypeChecking.Reduce@@ -55,9 +56,9 @@  addConstraint :: Constraint -> TCM () addConstraint c = do-    pids <- asks envActiveProblems+    pids <- asksTC envActiveProblems     reportSDoc "tc.constr.add" 20 $ hsep-      [ text "adding constraint"+      [ "adding constraint"       , text (show $ Set.toList pids)       , prettyTCM c ]     -- Need to reduce to reveal possibly blocking metas@@ -65,21 +66,17 @@     cs <- simpl c     if ([c] /= cs)       then do-        reportSDoc "tc.constr.add" 20 $ text "  simplified:" <+> prettyList (map prettyTCM cs)+        reportSDoc "tc.constr.add" 20 $ "  simplified:" <+> prettyList (map prettyTCM cs)         mapM_ solveConstraint_ cs       else mapM_ addConstraint' cs-    -- the added constraint can cause IFS constraints to be solved (but only+    -- the added constraint can cause instance constraints to be solved (but only     -- the constraints which aren’t blocked on an uninstantiated meta)-    unless (isIFSConstraint c) $-       wakeConstraints (isWakeableIFSConstraint . clValue . theConstraint)+    unless (isInstanceConstraint c) $+       wakeConstraints' (isWakeableInstanceConstraint . clValue . theConstraint)   where-    isWakeableIFSConstraint :: Constraint -> TCM Bool-    isWakeableIFSConstraint (FindInScope _ b _) = caseMaybe b (return True) (\m -> isInstantiatedMeta m)-    isWakeableIFSConstraint _ = return False--    isIFSConstraint :: Constraint -> Bool-    isIFSConstraint FindInScope{} = True-    isIFSConstraint _             = False+    isWakeableInstanceConstraint :: Constraint -> TCM Bool+    isWakeableInstanceConstraint (FindInstance _ b _) = caseMaybe b (return True) (\m -> isInstantiatedMeta m)+    isWakeableInstanceConstraint _ = return False      isLvl LevelCmp{} = True     isLvl _          = False@@ -90,11 +87,11 @@       cs <- map theConstraint <$> getAllConstraints       lvls <- instantiateFull $ List.filter (isLvl . clValue) cs       when (not $ null lvls) $ do-        reportSDoc "tc.constr.lvl" 40 $ text "simplifying level constraint" <+> prettyTCM c-                                        $$ nest 2 (hang (text "using") 2 (prettyTCM lvls))+        reportSDoc "tc.constr.lvl" 40 $ "simplifying level constraint" <+> prettyTCM c+                                        $$ nest 2 (hang "using" 2 (prettyTCM lvls))       return $ simplifyLevelConstraint c $ map clValue lvls --- | Don't allow the argument to produce any constraints.+-- | Don't allow the argument to produce any blocking constraints. noConstraints :: TCM a -> TCM a noConstraints problem = liftTCM $ do   (pid, x) <- newProblem problem@@ -131,7 +128,7 @@ --   to the @blocker@-generated constraints @cs@. guardConstraint :: Constraint -> TCM () -> TCM () guardConstraint c blocker =-  ifNoConstraints_ blocker (solveConstraint_ c) (addConstraint . Guarded c)+  ifNoConstraints_ blocker (solveConstraint c) (addConstraint . Guarded c)  whenConstraints :: TCM () -> TCM () -> TCM () whenConstraints action handler =@@ -139,35 +136,47 @@     stealConstraints pid     handler +-- | Wake constraints matching the given predicate (and aren't instance+--   constraints if 'isConsideringInstance').+wakeConstraints' :: (ProblemConstraint -> TCM Bool) -> TCM ()+wakeConstraints' p = do+  skipInstance <- isConsideringInstance+  wakeConstraints (\ c -> (&&) (not $ skipInstance && isInstanceConstraint (clValue $ theConstraint c)) <$> p c)+ -- | Wake up the constraints depending on the given meta. wakeupConstraints :: MetaId -> TCM () wakeupConstraints x = do-  wakeConstraints (return . mentionsMeta x)+  wakeConstraints' (return . mentionsMeta x)   solveAwakeConstraints  -- | Wake up all constraints. wakeupConstraints_ :: TCM () wakeupConstraints_ = do-  wakeConstraints (return . const True)+  wakeConstraints' (return . const True)   solveAwakeConstraints  solveAwakeConstraints :: TCM () solveAwakeConstraints = solveAwakeConstraints' False  solveAwakeConstraints' :: Bool -> TCM ()-solveAwakeConstraints' force = do+solveAwakeConstraints' = solveSomeAwakeConstraints (const True)++-- | Solve awake constraints matching the predicate. If the second argument is+--   True solve constraints even if already 'isSolvingConstraints'.+solveSomeAwakeConstraints :: (ProblemConstraint -> Bool) -> Bool -> TCM ()+solveSomeAwakeConstraints solveThis force = do     verboseS "profile.constraints" 10 $ liftTCM $ tickMax "max-open-constraints" . List.genericLength =<< getAllConstraints     whenM ((force ||) . not <$> isSolvingConstraints) $ nowSolvingConstraints $ do      -- solveSizeConstraints -- Andreas, 2012-09-27 attacks size constrs too early      -- Ulf, 2016-12-06: Don't inherit problems here! Stored constraints      -- already contain all their dependencies.-     locally eActiveProblems (const Set.empty) solve+     locallyTC eActiveProblems (const Set.empty) solve   where     solve = do-      reportSDoc "tc.constr.solve" 10 $ hsep [ text "Solving awake constraints."+      reportSDoc "tc.constr.solve" 10 $ hsep [ "Solving awake constraints."                                              , text . show . length =<< getAwakeConstraints-                                             , text "remaining." ]-      whenJustM takeAwakeConstraint $ \ c -> do+                                             , "remaining." ]+      whenJustM (takeAwakeConstraint' solveThis) $ \ c -> do         withConstraint solveConstraint c         solve @@ -175,12 +184,13 @@ solveConstraint c = do     verboseS "profile.constraints" 10 $ liftTCM $ tick "attempted-constraints"     verboseBracket "tc.constr.solve" 20 "solving constraint" $ do-      pids <- asks envActiveProblems-      reportSDoc "tc.constr.solve" 20 $ text (show $ Set.toList pids) <+> prettyTCM c+      pids <- asksTC envActiveProblems+      reportSDoc "tc.constr.solve.constr" 20 $ text (show $ Set.toList pids) <+> prettyTCM c       solveConstraint_ c  solveConstraint_ :: Constraint -> TCM () solveConstraint_ (ValueCmp cmp a u v)       = compareTerm cmp a u v+solveConstraint_ (ValueCmpOnFace cmp p a u v) = compareTermOnFace cmp p a u v solveConstraint_ (ElimCmp cmp fs a e u v)   = compareElims cmp fs a e u v solveConstraint_ (TypeCmp cmp a b)          = compareType cmp a b solveConstraint_ (TelCmp a b cmp tela telb) = compareTel a b cmp tela telb@@ -194,8 +204,9 @@     {-else-} $ do       reportSLn "tc.constr.solve" 50 $ "Guarding problem " ++ show pid ++ " is still unsolved."       addConstraint c0-solveConstraint_ (IsEmpty r t)              = isEmptyType r t+solveConstraint_ (IsEmpty r t)              = ensureEmptyType r t solveConstraint_ (CheckSizeLtSat t)         = checkSizeLtSat t+solveConstraint_ (UnquoteTactic _ tac hole goal) = unquoteTactic tac hole goal solveConstraint_ (UnBlock m)                =   ifM (isFrozen m) (addConstraint $ UnBlock m) $ do     inst <- mvInstantiation <$> lookupMeta m@@ -224,24 +235,29 @@       InstV{} -> __IMPOSSIBLE__       -- Open (whatever that means)       Open -> __IMPOSSIBLE__-      OpenIFS -> __IMPOSSIBLE__-solveConstraint_ (FindInScope m b cands)      = findInScope m cands-solveConstraint_ (CheckFunDef d i q cs)       = checkFunDef d i q cs+      OpenInstance -> __IMPOSSIBLE__+solveConstraint_ (FindInstance m b cands)     = findInstance m cands+solveConstraint_ (CheckFunDef d i q cs)       = withoutCache $+  -- re #3498: checking a fundef would normally be cached, but here it's+  -- happening out of order so it would only corrupt the caching log.+  checkFunDef d i q cs solveConstraint_ (HasBiggerSort a)            = hasBiggerSort a solveConstraint_ (HasPTSRule a b)             = hasPTSRule a b  checkTypeCheckingProblem :: TypeCheckingProblem -> TCM Term checkTypeCheckingProblem p = case p of-  CheckExpr e t                  -> checkExpr e t+  CheckExpr cmp e t              -> checkExpr' cmp e t   CheckArgs eh r args t0 t1 k    -> checkArguments eh r args t0 t1 k-  CheckLambda args body target   -> checkPostponedLambda args body target-  UnquoteTactic tac hole t       -> unquoteTactic tac hole t $ return hole+  CheckProjAppToKnownPrincipalArg cmp e o ds args t k v0 pt ->+    checkProjAppToKnownPrincipalArg cmp e o ds args t k v0 pt+  CheckLambda cmp args body target -> checkPostponedLambda cmp args body target+  DoQuoteTerm cmp et t           -> doQuoteTerm cmp et t  debugConstraints :: TCM () debugConstraints = verboseS "tc.constr" 50 $ do-  awake    <- use stAwakeConstraints-  sleeping <- use stSleepingConstraints-  reportSDoc "" 0 $ vcat-    [ text "Current constraints"-    , nest 2 $ vcat [ text "awake " <+> vcat (map prettyTCM awake)-                    , text "asleep" <+> vcat (map prettyTCM sleeping) ] ]+  awake    <- useTC stAwakeConstraints+  sleeping <- useTC stSleepingConstraints+  reportSDoc "tc.constr" 50 $ vcat+    [ "Current constraints"+    , nest 2 $ vcat [ "awake " <+> vcat (map prettyTCM awake)+                    , "asleep" <+> vcat (map prettyTCM sleeping) ] ]
src/full/Agda/TypeChecking/Constraints.hs-boot view
@@ -6,7 +6,9 @@ catchConstraint        :: Constraint -> TCM () -> TCM () solveConstraint        :: Constraint -> TCM () solveAwakeConstraints' :: Bool -> TCM ()+solveSomeAwakeConstraints :: (ProblemConstraint -> Bool) -> Bool -> TCM () noConstraints          :: TCM a -> TCM a ifNoConstraints_       :: TCM () -> TCM a -> (ProblemId -> TCM a) -> TCM a+ifNoConstraints        :: TCM a -> (a -> TCM b) -> (ProblemId -> a -> TCM b) -> TCM b guardConstraint        :: Constraint -> TCM () -> TCM () debugConstraints       :: TCM ()
src/full/Agda/TypeChecking/Conversion.hs view
@@ -8,8 +8,14 @@ import Control.Monad.State  import qualified Data.List as List-import Data.Traversable hiding (mapM, sequence)+import qualified Data.Map as Map+import qualified Data.Set as Set+import qualified Data.IntSet as IntSet +#if __GLASGOW_HASKELL__ <= 708+import Data.Traversable ( traverse )+#endif+ import Agda.Syntax.Abstract.Views (isSet) import Agda.Syntax.Common import Agda.Syntax.Internal@@ -19,7 +25,8 @@ import Agda.TypeChecking.Monad.Builtin import Agda.TypeChecking.CompiledClause (CompiledClauses'(Fail)) import Agda.TypeChecking.MetaVars-import Agda.TypeChecking.MetaVars.Occurs (killArgs,PruneResult(..))+import Agda.TypeChecking.MetaVars.Occurs (killArgs,PruneResult(..),rigidVarsNotContainedIn)+import Agda.TypeChecking.Names import Agda.TypeChecking.Reduce import Agda.TypeChecking.Substitute import qualified Agda.TypeChecking.SyntacticEquality as SynEq@@ -39,7 +46,7 @@ import Agda.TypeChecking.Implicit (implicitArgs) import Agda.TypeChecking.Irrelevance import Agda.TypeChecking.ProjectionLike (elimView)-+import Agda.TypeChecking.Primitive import Agda.Interaction.Options  import Agda.Utils.Except ( MonadError(catchError, throwError) )@@ -64,7 +71,7 @@ --   Return 'Just' the result upon success. --   Return 'Nothing' and restore state upon failure. tryConversion' :: TCM a -> TCM (Maybe a)-tryConversion' m = tryMaybe $ disableDestructiveUpdate $ noConstraints m+tryConversion' m = tryMaybe $ noConstraints m  -- | Check if to lists of arguments are the same (and all variables). --   Precondition: the lists have the same length.@@ -103,7 +110,7 @@ -- convError ::  MonadTCM tcm => TypeError -> tcm a -- | Ignore errors in irrelevant context. convError :: TypeError -> TCM ()-convError err = ifM ((==) Irrelevant <$> asks envRelevance) (return ()) $ typeError err+convError err = ifM ((==) Irrelevant <$> asksTC envRelevance) (return ()) $ typeError err  -- | Type directed equality on values. --@@ -112,22 +119,22 @@   -- Andreas, 2012-02-14: This is UNSOUND for subtyping! compareTerm cmp a u v = do   reportSDoc "tc.conv.term" 10 $ sep-    [ text "compareTerm"+    [ "compareTerm"     , nest 2 $ prettyTCM u <+> prettyTCM cmp <+> prettyTCM v-    , nest 2 $ text ":" <+> prettyTCM a+    , nest 2 $ ":" <+> prettyTCM a     ]   -- Check syntactic equality. This actually saves us quite a bit of work.-  ((u, v), equal) <- runReduceM $ SynEq.checkSyntacticEquality u v+  ((u, v), equal) <- SynEq.checkSyntacticEquality u v   -- OLD CODE, traverses the *full* terms u v at each step, even if they   -- are different somewhere.  Leads to infeasibility in issue 854.   -- (u, v) <- instantiateFull (u, v)   -- let equal = u == v-  unifyPointers cmp u v $ if equal then verboseS "profile.sharing" 20 $ tick "equal terms" else do+  if equal then verboseS "profile.sharing" 20 $ tick "equal terms" else do       verboseS "profile.sharing" 20 $ tick "unequal terms"       reportSDoc "tc.conv.term" 15 $ sep-        [ text "compareTerm (not syntactically equal)"+        [ "compareTerm (not syntactically equal)"         , nest 2 $ prettyTCM u <+> prettyTCM cmp <+> prettyTCM v-        , nest 2 $ text ":" <+> prettyTCM a+        , nest 2 $ ":" <+> prettyTCM a         ]       -- If we are at type Size, we cannot short-cut comparison       -- against metas by assignment.@@ -158,37 +165,17 @@     assign dir x es v = do       -- Andreas, 2013-10-19 can only solve if no projections       reportSDoc "tc.conv.term.shortcut" 20 $ sep-        [ text "attempting shortcut"-        , nest 2 $ prettyTCM (MetaV x es) <+> text ":=" <+> prettyTCM v+        [ "attempting shortcut"+        , nest 2 $ prettyTCM (MetaV x es) <+> ":=" <+> prettyTCM v         ]       ifM (isInstantiatedMeta x) patternViolation {-else-} $ do         assignE dir x es v $ compareTermDir dir a       reportSDoc "tc.conv.term.shortcut" 50 $-        text "shortcut successful" $$ nest 2 (text "result:" <+> (pretty =<< instantiate (MetaV x es)))+        "shortcut successful" $$ nest 2 ("result:" <+> (pretty =<< instantiate (MetaV x es)))     -- Should be ok with catchError_ but catchError is much safer since we don't     -- rethrow errors.     orelse m h = catchError m (\_ -> h) -unifyPointers :: Comparison -> Term -> Term -> TCM () -> TCM ()-unifyPointers _ _ _ action = action--- unifyPointers cmp _ _ action | cmp /= CmpEq = action--- unifyPointers _ u v action = do---   reportSLn "tc.ptr.unify" 50 $ "Maybe unifying pointers\n  u = " ++ show u ++ "\n  v = " ++ show v---   old <- use stDirty---   stDirty .= False---   action---   reportSLn "tc.ptr.unify" 50 $ "Finished comparison\n  u = " ++ show u ++ "\n  v = " ++ show v---   (u, v) <- instantiate (u, v)---   reportSLn "tc.ptr.unify" 50 $ "After instantiation\n  u = " ++ show u ++ "\n  v = " ++ show v---   dirty <- use stDirty---   stDirty .= old---   if dirty then verboseS "profile.sharing" 20 (tick "unifyPtr: dirty")---            else do---             verboseS "profile.sharing" 20 (tick "unifyPtr: clean")---             reportSLn "tc.ptr.unify" 80 $ "Unifying\n  u = " ++ show u ++ "\n  v = " ++ show v---             forceEqualTerms u v---             reportSLn "tc.ptr.unify" 80 $ "After unification\n  u = " ++ show u ++ "\n  v = " ++ show v- -- | Try to assign meta.  If meta is projected, try to eta-expand --   and run conversion check again. assignE :: CompareDirection -> MetaId -> Elims -> Term -> (Term -> Term -> TCM ()) -> TCM ()@@ -197,7 +184,7 @@     Just vs -> assignV dir x vs v     Nothing -> do       reportSDoc "tc.conv.assign" 30 $ sep-        [ text "assigning to projected meta "+        [ "assigning to projected meta "         , prettyTCM x <+> sep (map prettyTCM es) <+> text (":" ++ show dir) <+> prettyTCM v         ]       etaExpandMeta [Records] x@@ -205,7 +192,7 @@       case res of         Just u  -> do           reportSDoc "tc.conv.assign" 30 $ sep-            [ text "seems like eta expansion instantiated meta "+            [ "seems like eta expansion instantiated meta "             , prettyTCM x <+> text  (":" ++ show dir) <+> prettyTCM u             ]           let w = u `applyE` es@@ -223,25 +210,25 @@   a' <- reduce a   catchConstraint (ValueCmp cmp a' m n) $ do     reportSDoc "tc.conv.term" 30 $ fsep-      [ text "compareTerm", prettyTCM m, prettyTCM cmp, prettyTCM n, text ":", prettyTCM a' ]-    proofIrr <- proofIrrelevance+      [ "compareTerm", prettyTCM m, prettyTCM cmp, prettyTCM n, ":", prettyTCM a' ]+    propIrr  <- isPropEnabled     isSize   <- isJust <$> isSizeType a'     s        <- reduce $ getSort a'     mlvl     <- tryMaybe primLevel     reportSDoc "tc.conv.level" 60 $ nest 2 $ sep-      [ text "a'   =" <+> pretty a'-      , text "mlvl =" <+> pretty mlvl+      [ "a'   =" <+> pretty a'+      , "mlvl =" <+> pretty mlvl       , text $ "(Just (unEl a') == mlvl) = " ++ show (Just (unEl a') == mlvl)       ]     case s of-      Prop | proofIrr -> return ()+      Prop{} | propIrr -> compareIrrelevant a' m n       _    | isSize   -> compareSizes cmp m n       _               -> case unEl a' of         a | Just a == mlvl -> do           a <- levelView m           b <- levelView n           equalLevel a b-        a@Pi{}    -> equalFun a m n+        a@Pi{}    -> equalFun s a m n         Lam _ _   -> __IMPOSSIBLE__         Def r es  -> do           isrec <- isEtaRecord r@@ -262,7 +249,7 @@                   isMeta (NotBlocked _ MetaV{}) = True                   isMeta _                      = False -              reportSDoc "tc.conv.term" 30 $ prettyTCM a <+> text "is eta record type"+              reportSDoc "tc.conv.term" 30 $ prettyTCM a <+> "is eta record type"               m <- reduceB m               mNeutral <- isNeutral m               n <- reduceB n@@ -286,20 +273,57 @@                   -- No subtyping on record terms                   c <- getRecordConstructor r                   -- Record constructors are covariant (see test/succeed/CovariantConstructors).-                  compareArgs (repeat $ polFromCmp cmp) [] (telePi_ tel $ sort Prop) (Con c ConOSystem []) m' n'+                  compareArgs (repeat $ polFromCmp cmp) [] (telePi_ tel __DUMMY_TYPE__) (Con c ConOSystem []) m' n' -            else compareAtom cmp a' m n+            else (do pathview <- pathView a'+                     equalPath pathview a' m n)         _ -> compareAtom cmp a' m n   where     -- equality at function type (accounts for eta)-    equalFun :: Term -> Term -> Term -> TCM ()-    equalFun (Pi dom@(Dom info _) b) m n = do-        name <- freshName_ $ suggest (absName b) "x"+    equalFun :: Sort -> Term -> Term -> Term -> TCM ()+    equalFun s a@(Pi dom b) m n | domFinite dom = do+       mp <- fmap getPrimName <$> getBuiltin' builtinIsOne+       case unEl $ unDom dom of+          Def q [Apply phi]+              | Just q == mp -> compareTermOnFace cmp (unArg phi) (El s (Pi (dom {domFinite = False}) b)) m n+          _                  -> equalFun s (Pi (dom{domFinite = False}) b) m n+    equalFun _ (Pi dom@Dom{domInfo = info} b) m n | not $ domFinite dom = do+        name <- freshName_ $ suggest (absName b) ("x" :: String)         addContext (name, dom) $ compareTerm cmp (absBody b) m' n'       where         (m',n') = raise 1 (m,n) `apply` [Arg info $ var 0]-    equalFun _ _ _ = __IMPOSSIBLE__+    equalFun _ _ _ _ = __IMPOSSIBLE__ +    equalPath :: PathView -> Type -> Term -> Term -> TCM ()+    equalPath (PathType s _ l a x y) _ m n = do+        name <- freshName_ ("i" :: String)+        interval <- el primInterval+        let (m',n') = raise 1 (m, n) `applyE` [IApply (raise 1 $ unArg x) (raise 1 $ unArg y) (var 0)]+        addContext (name, defaultDom interval) $ compareTerm cmp (El (raise 1 s) $ (raise 1 $ unArg a) `apply` [argN $ var 0]) m' n'+    equalPath OType{} a' m n = cmpDef a' m n++    cmpDef a'@(El s ty) m n = do+       mI     <- getBuiltinName'   builtinInterval+       mIsOne <- getBuiltinName'   builtinIsOne+       mGlue  <- getPrimitiveName' builtinGlue+       mSub   <- getBuiltinName' builtinSub+       case ty of+         Def q es | Just q == mIsOne -> return ()+         Def q es | Just q == mGlue, Just args@(l:_:a:phi:_) <- allApplyElims es -> do+              ty <- el' (pure $ unArg l) (pure $ unArg a)+              unglue <- prim_unglue+              let mkUnglue m = apply unglue $ map (setHiding Hidden) args ++ [argN m]+              reportSDoc "conv.glue" 20 $ prettyTCM (ty,mkUnglue m,mkUnglue n)+              compareTermOnFace cmp (unArg phi) ty m n+              compareTerm cmp ty (mkUnglue m) (mkUnglue n)+         Def q es | Just q == mSub, Just args@(l:a:_) <- allApplyElims es -> do+              ty <- el' (pure $ unArg l) (pure $ unArg a)+              out <- primSubOut+              let mkOut m = apply out $ map (setHiding Hidden) args ++ [argN m]+              compareTerm cmp ty (mkOut m) (mkOut n)+         Def q [] | Just q == mI -> compareInterval cmp a' m n+         _ -> compareAtom cmp a' m n+ -- | @compareTel t1 t2 cmp tel1 tel1@ checks whether pointwise --   @tel1 \`cmp\` tel2@ and complains that @t2 \`cmp\` t1@ failed if --   not.@@ -311,7 +335,7 @@     (EmptyTel, EmptyTel) -> return ()     (EmptyTel, _)        -> bad     (_, EmptyTel)        -> bad-    (ExtendTel dom1@(Dom i1 a1) tel1, ExtendTel dom2@(Dom i2 a2) tel2) -> do+    (ExtendTel dom1{-@(Dom i1 a1)-} tel1, ExtendTel dom2{-@(Dom i2 a2)-} tel2) -> do       compareDom cmp dom1 dom2 tel1 tel2 bad bad $         compareTel t1 t2 cmp (absBody tel1) (absBody tel2)   where@@ -335,9 +359,9 @@   let inequal  = typeError $ UnequalTerms cmp m n t       dontKnow = do         reportSDoc "tc.conv.inequal" 20 $ hsep-          [ text "etaInequal: postponing "+          [ "etaInequal: postponing "           , prettyTCM m-          , text " != "+          , " != "           , prettyTCM n           ]         patternViolation@@ -369,10 +393,10 @@               _ -> __IMPOSSIBLE__     -- Infer its type.     reportSDoc "tc.conv.infer" 30 $-      text "inferring type of internal arg: " <+> prettyTCM arg+      "inferring type of internal arg: " <+> prettyTCM arg     targ <- infer $ unArg arg     reportSDoc "tc.conv.infer" 30 $-      text "inferred type: " <+> prettyTCM targ+      "inferred type: " <+> prettyTCM targ     -- getDefType wants the argument type reduced.     -- Andreas, 2016-02-09, Issue 1825: The type of arg might be     -- a meta-variable, e.g. in interactive development.@@ -387,12 +411,12 @@   -- if a PatternErr is thrown, rebuild constraint!   catchConstraint (ValueCmp cmp t m n) $ do     reportSDoc "tc.conv.atom" 50 $-      text "compareAtom" <+> fsep [ prettyTCM m <+> prettyTCM cmp+      "compareAtom" <+> fsep [ prettyTCM m <+> prettyTCM cmp                                   , prettyTCM n-                                  , text ":" <+> prettyTCM t ]+                                  , ":" <+> prettyTCM t ]     -- Andreas: what happens if I cut out the eta expansion here?     -- Answer: Triggers issue 245, does not resolve 348-    (mb',nb') <- ifM (asks envCompareBlocked) ((notBlocked -*- notBlocked) <$> reduce (m,n)) $ do+    (mb',nb') <- ifM (asksTC envCompareBlocked) ((notBlocked -*- notBlocked) <$> reduce (m,n)) $ do       mb' <- etaExpandBlocked =<< reduceB m       nb' <- etaExpandBlocked =<< reduceB n       return (mb', nb')@@ -412,7 +436,8 @@          postpone = addConstraint $ ValueCmp cmp t m n -        checkSyntacticEquality = do+        checkSyntacticEquality =+          ifNotM (optSyntacticEquality <$> pragmaOptions) postpone $ do           n <- normalise n    -- is this what we want?           m <- normalise m           if m == n@@ -424,104 +449,162 @@          assign dir x es v = assignE dir x es v $ compareAtomDir dir t -    unifyPointers cmp (ignoreBlocking mb') (ignoreBlocking nb') $ do    -- this needs to go after eta expansion to avoid creating infinite terms+    reportSDoc "tc.conv.atom" 30 $+      "compareAtom" <+> fsep [ prettyTCM mb <+> prettyTCM cmp+                                  , prettyTCM nb+                                  , ":" <+> prettyTCM t ]+    reportSDoc "tc.conv.atom" 80 $+      "compareAtom" <+> fsep [ (text . show) mb <+> prettyTCM cmp+                                  , (text . show) nb+                                  , ":" <+> (text . show) t ]+    case (mb, nb) of+      -- equate two metas x and y.  if y is the younger meta,+      -- try first y := x and then x := y+      (NotBlocked _ (MetaV x xArgs), NotBlocked _ (MetaV y yArgs))+          | x == y ->+            case intersectVars xArgs yArgs of+              -- all relevant arguments are variables+              Just kills -> do+                -- kills is a list with 'True' for each different var+                killResult <- killArgs kills x+                case killResult of+                  NothingToPrune   -> return ()+                  PrunedEverything -> return ()+                  PrunedNothing    -> postpone+                  PrunedSomething  -> postpone+              -- not all relevant arguments are variables+              Nothing -> checkSyntacticEquality -- Check syntactic equality on meta-variables+                              -- (same as for blocked terms)+          | otherwise -> do+              [p1, p2] <- mapM getMetaPriority [x,y]+              -- First try the one with the highest priority. If that doesn't+              -- work, try the low priority one.+              let (solve1, solve2)+                    | (p1, x) > (p2, y) = (l1, r2)+                    | otherwise         = (r1, l2)+                    where l1 = assign dir x xArgs n+                          r1 = assign rid y yArgs m+                          -- Careful: the first attempt might prune the low+                          -- priority meta! (Issue #2978)+                          l2 = ifM (isInstantiatedMeta x) (compareTermDir dir t m n) l1+                          r2 = ifM (isInstantiatedMeta y) (compareTermDir rid t n m) r1 -      reportSDoc "tc.conv.atom" 30 $-        text "compareAtom" <+> fsep [ prettyTCM mb <+> prettyTCM cmp-                                    , prettyTCM nb-                                    , text ":" <+> prettyTCM t ]-      case (mb, nb) of-        -- equate two metas x and y.  if y is the younger meta,-        -- try first y := x and then x := y-        (NotBlocked _ (MetaV x xArgs), NotBlocked _ (MetaV y yArgs))-            | x == y ->-              case intersectVars xArgs yArgs of-                -- all relevant arguments are variables-                Just kills -> do-                  -- kills is a list with 'True' for each different var-                  killResult <- killArgs kills x-                  case killResult of-                    NothingToPrune   -> return ()-                    PrunedEverything -> return ()-                    PrunedNothing    -> postpone-                    PrunedSomething  -> postpone-                -- not all relevant arguments are variables-                Nothing -> checkSyntacticEquality -- Check syntactic equality on meta-variables-                                -- (same as for blocked terms)-            | otherwise -> do-                [p1, p2] <- mapM getMetaPriority [x,y]-                -- First try the one with the highest priority. If that doesn't-                -- work, try the low priority one.-                let (solve1, solve2)-                      | (p1, x) > (p2, y) = (l1, r2)-                      | otherwise         = (r1, l2)-                      where l1 = assign dir x xArgs n-                            r1 = assign rid y yArgs m-                            -- Careful: the first attempt might prune the low-                            -- priority meta! (Issue #2978)-                            l2 = ifM (isInstantiatedMeta x) (compareTermDir dir t m n) l1-                            r2 = ifM (isInstantiatedMeta y) (compareTermDir rid t n m) r1+                  try m h = m `catchError_` \err -> case err of+                    PatternErr{} -> h+                    _            -> throwError err -                    try m h = m `catchError_` \err -> case err of-                      PatternErr{} -> h-                      _            -> throwError err+              try solve1 solve2 -                try solve1 solve2+      -- one side a meta, the other an unblocked term+      (NotBlocked _ (MetaV x es), _) -> assign dir x es n+      (_, NotBlocked _ (MetaV x es)) -> assign rid x es m+      (Blocked{}, Blocked{})  -> checkSyntacticEquality+      (Blocked{}, _)  -> useInjectivity (fromCmp cmp) t m n   -- The blocked term goes first+      (_, Blocked{})  -> useInjectivity (flipCmp $ fromCmp cmp) t n m+      _ -> do+        -- -- Andreas, 2013-10-20 put projection-like function+        -- -- into the spine, to make compareElims work.+        -- -- 'False' means: leave (Def f []) unchanged even for+        -- -- proj-like funs.+        -- m <- elimView False m+        -- n <- elimView False n+        -- Andreas, 2015-07-01, actually, don't put them into the spine.+        -- Polarity cannot be communicated properly if projection-like+        -- functions are post-fix.+        case (m, n) of+          (Pi{}, Pi{}) -> equalFun m n -        -- one side a meta, the other an unblocked term-        (NotBlocked _ (MetaV x es), _) -> assign dir x es n-        (_, NotBlocked _ (MetaV x es)) -> assign rid x es m-        (Blocked{}, Blocked{})  -> checkSyntacticEquality-        (Blocked{}, _)  -> useInjectivity (fromCmp cmp) t m n   -- The blocked term goes first-        (_, Blocked{})  -> useInjectivity (flipCmp $ fromCmp cmp) t n m-        _ -> do-          -- -- Andreas, 2013-10-20 put projection-like function-          -- -- into the spine, to make compareElims work.-          -- -- 'False' means: leave (Def f []) unchanged even for-          -- -- proj-like funs.-          -- m <- elimView False m-          -- n <- elimView False n-          -- Andreas, 2015-07-01, actually, don't put them into the spine.-          -- Polarity cannot be communicated properly if projection-like-          -- functions are post-fix.-          case (m, n) of-            (Pi{}, Pi{}) -> equalFun m n+          (Sort s1, Sort s2) -> compareSort CmpEq s1 s2 -            (Sort s1, Sort Inf) -> return ()-            (Sort s1, Sort s2) -> compareSort CmpEq s1 s2+          (Lit l1, Lit l2) | l1 == l2 -> return ()+          (Var i es, Var i' es') | i == i' -> do+              a <- typeOfBV i+              -- Variables are invariant in their arguments+              compareElims [] [] a (var i) es es' -            (Lit l1, Lit l2) | l1 == l2 -> return ()-            (Var i es, Var i' es') | i == i' -> do-                a <- typeOfBV i-                -- Variables are invariant in their arguments-                compareElims [] [] a (var i) es es'-            (Def f [], Def f' []) | f == f' -> return ()-            (Def f es, Def f' es') | f == f' -> do-                a <- computeElimHeadType f es es'-                -- The polarity vector of projection-like functions-                -- does not include the parameters.-                pol <- getPolarity' cmp f-                compareElims pol [] a (Def f []) es es'-            (Def f es, Def f' es') ->+          -- The case of definition application:+          (Def f es, Def f' es') -> do++              -- 1. All absurd lambdas are equal.               unlessM (bothAbsurd f f') $ do-                trySizeUniv cmp t m n f es f' es'-            -- Due to eta-expansion, these constructors are fully applied.-            (Con x ci xArgs, Con y _ yArgs)-                | x == y -> do-                    -- Get the type of the constructor instantiated to the datatype parameters.-                    a' <- conType x t-                    forcedArgs <- getForcedArgs $ conName x-                    -- Constructors are covariant in their arguments-                    -- (see test/succeed/CovariantConstructors).-                    compareElims (repeat $ polFromCmp cmp) forcedArgs a' (Con x ci []) xArgs yArgs-            _ -> etaInequal cmp t m n -- fixes issue 856 (unsound conversion error)++              -- 2. If the heads are unequal, the only chance is subtyping between SIZE and SIZELT.+              if f /= f' then trySizeUniv cmp t m n f es f' es' else do++              -- 3. If the heads are equal:+              -- 3a. If there are no arguments, we are done.+              unless (null es && null es') $ do++              -- 3b. If some cubical magic kicks in, we are done.+              unlessM (compareEtaPrims f es es') $ do++              -- 3c. Oh no, we actually have to work and compare the eliminations!+               a <- computeElimHeadType f es es'+               -- The polarity vector of projection-like functions+               -- does not include the parameters.+               pol <- getPolarity' cmp f+               compareElims pol [] a (Def f []) es es'++          -- Due to eta-expansion, these constructors are fully applied.+          (Con x ci xArgs, Con y _ yArgs)+              | x == y -> do+                  -- Get the type of the constructor instantiated to the datatype parameters.+                  a' <- conType x t+                  forcedArgs <- getForcedArgs $ conName x+                  -- Constructors are covariant in their arguments+                  -- (see test/succeed/CovariantConstructors).+                  compareElims (repeat $ polFromCmp cmp) forcedArgs a' (Con x ci []) xArgs yArgs+          _ -> etaInequal cmp t m n -- fixes issue 856 (unsound conversion error)     where+        -- returns True in case we handled the comparison already.+        compareEtaPrims :: QName -> Elims -> Elims -> TCM Bool+        compareEtaPrims q es es' = do+          munglue <- getPrimitiveName' builtin_unglue+          msubout <- getPrimitiveName' builtinSubOut+          case () of+            _ | Just q == munglue -> compareUnglueApp q es es'+            _ | Just q == msubout -> compareSubApp q es es'+            _                     -> return False+        compareSubApp q es es' = do+          let (as,bs) = splitAt 5 es; (as',bs') = splitAt 5 es'+          case (allApplyElims as, allApplyElims as') of+            (Just [a,bA,phi,u,x], Just [a',bA',phi',u',x']) -> do+              tSub <- primSub+              -- Andrea, 28-07-16:+              -- comparing the types is most probably wasteful,+              -- since b and b' should be neutral terms, but it's a+              -- precondition for the compareAtom call to make+              -- sense.+              equalType (El Inf $ apply tSub $ [a] ++ map (setHiding NotHidden) [bA,phi,u])+                        (El Inf $ apply tSub $ [a] ++ map (setHiding NotHidden) [bA',phi',u'])+              compareAtom cmp (El Inf $ apply tSub $ [a] ++ map (setHiding NotHidden) [bA,phi,u])+                              (unArg x) (unArg x')+              compareElims [] [] (El (tmSort (unArg a)) (unArg bA)) (Def q as) bs bs'+              return True+            _  -> return False+        compareUnglueApp q es es' = do+          let (as,bs) = splitAt 7 es; (as',bs') = splitAt 7 es'+          case (allApplyElims as, allApplyElims as') of+            (Just [la,lb,bA,phi,bT,e,b], Just [la',lb',bA',phi',bT',e',b']) -> do+              tGlue <- getPrimitiveTerm builtinGlue+              -- Andrea, 28-07-16:+              -- comparing the types is most probably wasteful,+              -- since b and b' should be neutral terms, but it's a+              -- precondition for the compareAtom call to make+              -- sense.+              -- equalType (El (tmSort (unArg lb)) $ apply tGlue $ [la,lb] ++ map (setHiding NotHidden) [bA,phi,bT,e])+              --           (El (tmSort (unArg lb')) $ apply tGlue $ [la',lb'] ++ map (setHiding NotHidden) [bA',phi',bT',e'])+              compareAtom cmp (El (tmSort (unArg lb)) $ apply tGlue $ [la,lb] ++ map (setHiding NotHidden) [bA,phi,bT,e])+                              (unArg b) (unArg b')+              compareElims [] [] (El (tmSort (unArg la)) (unArg bA)) (Def q as) bs bs'+              return True+            _  -> return False         -- Andreas, 2013-05-15 due to new postponement strategy, type can now be blocked         conType c t = ifBlockedType t (\ _ _ -> patternViolation) $ \ _ t -> do           let impossible = do                 reportSDoc "impossible" 10 $-                  text "expected data/record type, found " <+> prettyTCM t-                reportSDoc "impossible" 70 $ nest 2 $ text "raw =" <+> pretty t+                  "expected data/record type, found " <+> prettyTCM t+                reportSDoc "impossible" 70 $ nest 2 $ "raw =" <+> pretty t                 -- __IMPOSSIBLE__                 -- Andreas, 2013-10-20:  in case termination checking fails                 -- we might get some unreduced types here.@@ -534,8 +617,8 @@           (Pi dom1 b1, Pi dom2 b2) -> do             verboseBracket "tc.conv.fun" 15 "compare function types" $ do               reportSDoc "tc.conv.fun" 20 $ nest 2 $ vcat-                [ text "t1 =" <+> prettyTCM t1-                , text "t2 =" <+> prettyTCM t2 ]+                [ "t1 =" <+> prettyTCM t1+                , "t2 =" <+> prettyTCM t2 ]               compareDom cmp dom2 dom1 b1 b2 errH errR $                 compareType cmp (absBody b1) (absBody b2)             where@@ -554,7 +637,7 @@   -> TCM ()     -- ^ Continuation if mismatch in 'Relevance'.   -> TCM ()     -- ^ Continuation if comparison is successful.   -> TCM ()-compareDom cmp dom1@(Dom i1 a1) dom2@(Dom i2 a2) b1 b2 errH errR cont+compareDom cmp dom1@(Dom{domInfo = i1, unDom = a1}) dom2@(Dom{domInfo = i2, unDom = a2}) b1 b2 errH errR cont   | not (sameHiding dom1 dom2) = errH   | not $ compareRelevance cmp (getRelevance dom1) (getRelevance dom2) = errR   | otherwise = do@@ -563,7 +646,7 @@           dependent = (r /= Irrelevant) && isBinderUsed b2       pid <- newProblem_ $ compareType cmp a1 a2       dom <- if dependent-             then Dom i1 <$> blockTypeOnProblem a1 pid+             then (\ a -> dom1 {unDom = a}) <$> blockTypeOnProblem a1 pid              else return dom1         -- We only need to require a1 == a2 if b2 is dependent         -- If it's non-dependent it doesn't matter what we add to the context.@@ -598,7 +681,7 @@ --   #2384. antiUnify :: ProblemId -> Type -> Term -> Term -> TCM Term antiUnify pid a u v = do-  ((u, v), eq) <- runReduceM (SynEq.checkSyntacticEquality u v)+  ((u, v), eq) <- SynEq.checkSyntacticEquality u v   if eq then return u else do   (u, v) <- reduce (u, v)   case (u, v) of@@ -662,14 +745,14 @@         -- Andreas, 2013-03-15 since one of the spines is empty, @a@         -- is the correct type here.   unless (null els01) $ do-    reportSDoc "tc.conv.elim" 25 $ text "compareElims" $$ do+    reportSDoc "tc.conv.elim" 25 $ "compareElims" $$ do      nest 2 $ vcat-      [ text "a     =" <+> prettyTCM a-      , text "pols0 (truncated to 10) =" <+> sep (map prettyTCM $ take 10 pols0)-      , text "fors0 (truncated to 10) =" <+> sep (map prettyTCM $ take 10 fors0)-      , text "v     =" <+> prettyTCM v-      , text "els01 =" <+> prettyTCM els01-      , text "els02 =" <+> prettyTCM els02+      [ "a     =" <+> prettyTCM a+      , "pols0 (truncated to 10) =" <+> sep (map prettyTCM $ take 10 pols0)+      , "fors0 (truncated to 10) =" <+> sep (map prettyTCM $ take 10 fors0)+      , "v     =" <+> prettyTCM v+      , "els01 =" <+> prettyTCM els01+      , "els02 =" <+> prettyTCM els02       ]   case (els01, els02) of     ([]         , []         ) -> return ()@@ -677,27 +760,60 @@     (Proj{}  : _, []         ) -> failure -- could be x.p =?= x for projection p     ([]         , Apply{} : _) -> failure -- not impossible, see issue 878     (Apply{} : _, []         ) -> failure+    ([]         , IApply{} : _) -> failure+    (IApply{} : _, []         ) -> failure     (Apply{} : _, Proj{}  : _) -> __IMPOSSIBLE__ <$ solveAwakeConstraints' True -- NB: popped up in issue 889     (Proj{}  : _, Apply{} : _) -> __IMPOSSIBLE__ <$ solveAwakeConstraints' True -- but should be impossible (but again in issue 1467)+    (IApply{} : _, Proj{}  : _) -> __IMPOSSIBLE__ <$ solveAwakeConstraints' True+    (Proj{}  : _, IApply{} : _) -> __IMPOSSIBLE__ <$ solveAwakeConstraints' True+    (IApply{} : _, Apply{}  : _) -> __IMPOSSIBLE__ <$ solveAwakeConstraints' True+    (Apply{}  : _, IApply{} : _) -> __IMPOSSIBLE__ <$ solveAwakeConstraints' True+    (e@(IApply x1 y1 r1) : els1, IApply x2 y2 r2 : els2) -> do+      reportSDoc "tc.conv.elim" 25 $ "compareElims IApply"+       -- Andrea: copying stuff from the Apply case..+      let (pol, pols) = nextPolarity pols0+      ifBlockedType a (\ m t -> patternViolation) $ \ _ a -> do+          va <- pathView a+          reportSDoc "tc.conv.elim.iapply" 60 $ "compareElims IApply" $$ do+            nest 2 $ "va =" <+> text (show (isPathType va))+          case va of+            PathType s path l bA x y -> do+              b <- elInf primInterval+              compareWithPol pol (flip compareTerm b)+                                  r1 r2+              -- TODO: compare (x1,x2) and (y1,y2) ?+              let r = r1 -- TODO Andrea:  do blocking+              codom <- el' (pure . unArg $ l) ((pure . unArg $ bA) <@> pure r)+              compareElims pols [] codom -- Path non-dependent (codom `lazyAbsApp` unArg arg)+                                (applyE v [e]) els1 els2+            -- We allow for functions (i : I) -> ... to also be heads of a IApply,+            -- because @etaContract@ can produce such terms+            OType t@(El _ Pi{}) -> compareElims pols0 fors0 t v (Apply (defaultArg r1) : els1) (Apply (defaultArg r2) : els2)++            OType{} -> patternViolation+     (Apply arg1 : els1, Apply arg2 : els2) ->       verboseBracket "tc.conv.elim" 20 "compare Apply" $ do       reportSDoc "tc.conv.elim" 10 $ nest 2 $ vcat-        [ text "a    =" <+> prettyTCM a-        , text "v    =" <+> prettyTCM v-        , text "arg1 =" <+> prettyTCM arg1-        , text "arg2 =" <+> prettyTCM arg2+        [ "a    =" <+> prettyTCM a+        , "v    =" <+> prettyTCM v+        , "arg1 =" <+> prettyTCM arg1+        , "arg2 =" <+> prettyTCM arg2         ]       reportSDoc "tc.conv.elim" 50 $ nest 2 $ vcat-        [ text "v    =" <+> pretty v-        , text "arg1 =" <+> pretty arg1-        , text "arg2 =" <+> pretty arg2-        , text ""+        [ "raw:"+        , "a    =" <+> pretty a+        , "v    =" <+> pretty v+        , "arg1 =" <+> pretty arg1+        , "arg2 =" <+> pretty arg2         ]       let (pol, pols) = nextPolarity pols0           (for, fors) = nextIsForced fors0       ifBlockedType a (\ m t -> patternViolation) $ \ _ a -> do+        reportSLn "tc.conv.elim" 90 $ "type is not blocked"         case unEl a of-          (Pi (Dom info b) codom) -> do+          (Pi (Dom{domInfo = info, unDom = b}) codom) -> do+            reportSLn "tc.conv.elim" 90 $ "type is a function type"             mlvl <- tryMaybe primLevel             let freeInCoDom (Abs _ c) = 0 `freeInIgnoringSorts` c                 freeInCoDom _         = False@@ -708,31 +824,34 @@                      -- creating a blocking and traversing a term for free variables.                      -- Apparently, it is believed that checking free vars is cheaper.                      -- Andreas, 2013-05-15-                r = getRelevance info  -- NEW, Andreas, 2013-05-15              -- compare arg1 and arg2-            pid <- newProblem_ $ applyRelevanceToContext r $+            pid <- newProblem_ $ applyModalityToContext info $                 if isForced for then-                  return ()-                else if isIrrelevant r then+                  reportSLn "tc.conv.elim" 90 $ "argument is forced"+                else if isIrrelevant info then do+                  reportSLn "tc.conv.elim" 90 $ "argument is irrelevant"                   compareIrrelevant b (unArg arg1) (unArg arg2)-                else+                else do+                  reportSLn "tc.conv.elim" 90 $ "argument has polarity " ++ show pol                   compareWithPol pol (flip compareTerm b)                     (unArg arg1) (unArg arg2)             -- if comparison got stuck and function type is dependent, block arg             solved <- isProblemSolved pid+            reportSLn "tc.conv.elim" 90 $ "solved = " ++ show solved             arg <- if dependent && not solved                    then do                     arg <- (arg1 $>) <$> antiUnify pid b (unArg arg1) (unArg arg2)-                    reportSDoc "tc.conv.elims" 30 $ hang (text "Anti-unification:") 2 (prettyTCM arg)-                    reportSDoc "tc.conv.elims" 70 $ nest 2 $ text "raw:" <+> pretty arg+                    reportSDoc "tc.conv.elims" 30 $ hang "Anti-unification:" 2 (prettyTCM arg)+                    reportSDoc "tc.conv.elims" 70 $ nest 2 $ "raw:" <+> pretty arg                     return arg                    else return arg1             -- continue, possibly with blocked instantiation             compareElims pols fors (codom `lazyAbsApp` unArg arg) (apply v [arg]) els1 els2-            -- any left over constraints of arg are associatd to the comparison+            -- any left over constraints of arg are associated to the comparison+            reportSLn "tc.conv.elim" 90 $ "stealing constraints from problem " ++ show pid             stealConstraints pid             {- Stealing solves this issue: @@ -743,8 +862,8 @@             -}           a -> do             reportSDoc "impossible" 10 $-              text "unexpected type when comparing apply eliminations " <+> prettyTCM a-            reportSDoc "impossible" 50 $ text "raw type:" <+> pretty a+              "unexpected type when comparing apply eliminations " <+> prettyTCM a+            reportSDoc "impossible" 50 $ "raw type:" <+> pretty a             patternViolation             -- Andreas, 2013-10-22             -- in case of disabled reductions (due to failing termination check)@@ -753,7 +872,7 @@      -- case: f == f' are projections     (Proj o f : els1, Proj _ f' : els2)-      | f /= f'   -> typeError . GenericError . show =<< prettyTCM f <+> text "/=" <+> prettyTCM f'+      | f /= f'   -> typeError . GenericError . show =<< prettyTCM f <+> "/=" <+> prettyTCM f'       | otherwise -> ifBlockedType a (\ m t -> patternViolation) $ \ _ a -> do         res <- projectTyped v a o f -- fails only if f is proj.like but parameters cannot be retrieved         case res of@@ -783,13 +902,13 @@ -} compareIrrelevant t v w = do   reportSDoc "tc.conv.irr" 20 $ vcat-    [ text "compareIrrelevant"-    , nest 2 $ text "v =" <+> prettyTCM v-    , nest 2 $ text "w =" <+> prettyTCM w+    [ "compareIrrelevant"+    , nest 2 $ "v =" <+> prettyTCM v+    , nest 2 $ "w =" <+> prettyTCM w     ]   reportSDoc "tc.conv.irr" 50 $ vcat-    [ nest 2 $ text "v =" <+> pretty v-    , nest 2 $ text "w =" <+> pretty w+    [ nest 2 $ "v =" <+> pretty v+    , nest 2 $ "w =" <+> pretty w     ]   try v w $ try w v $ return ()   where@@ -801,7 +920,7 @@                    _       -> False       reportSDoc "tc.conv.irr" 20 $ vcat         [ nest 2 $ text $ "rel  = " ++ show rel-        , nest 2 $ text "inst =" <+> pretty inst+        , nest 2 $ "inst =" <+> pretty inst         ]       if not (isIrrelevant rel) || inst         then fallback@@ -838,41 +957,37 @@     verboseBracket "tc.conv.type" 20 "compareType" $     catchConstraint (TypeCmp cmp ty1 ty2) $ do         reportSDoc "tc.conv.type" 50 $ vcat-          [ text "compareType" <+> sep [ prettyTCM ty1 <+> prettyTCM cmp+          [ "compareType" <+> sep [ prettyTCM ty1 <+> prettyTCM cmp                                        , prettyTCM ty2 ]-          , hsep [ text "   sorts:", prettyTCM s1, text " and ", prettyTCM s2 ]+          , hsep [ "   sorts:", prettyTCM s1, " and ", prettyTCM s2 ]           ] -- Andreas, 2011-4-27 should not compare sorts, but currently this is needed -- for solving sort and level metas         compareSort CmpEq s1 s2 `catchError` \err -> case err of           TypeError _ e -> do             reportSDoc "tc.conv.type" 30 $ vcat-              [ text "sort comparison failed"+              [ "sort comparison failed"               , nest 2 $ vcat-                [ text "s1 =" <+> prettyTCM s1-                , text "s2 =" <+> prettyTCM s2+                [ "s1 =" <+> prettyTCM s1+                , "s2 =" <+> prettyTCM s2                 ]               ]-            case clValue e of-              -- Issue 659: Better error message-              SetOmegaNotValidType -> typeError $ UnequalBecauseOfUniverseConflict cmp a1 a2-              _ -> do-                -- This error will probably be more informative-                compareTerm cmp (sort s1) a1 a2-                -- Throw the original error if the above doesn't-                -- give an error (for instance, due to pending-                -- constraints).-                -- Or just ignore it... We run into this with irrelevant levels-                -- which may show up in sort constraints, causing them to fail.-                -- In any case it's not safe to ignore the error, for instance-                -- a1 might be Set and a2 a meta of type Set, in which case we-                -- really need the sort comparison to fail, instead of silently-                -- instantiating the meta.-                -- Andreas, 2013-10-31 Maybe the error went away-                -- when we compared the types.  So we try the sort comparison-                -- again, this time not catching the error.  (see Issue 930)-                -- throwError err-                compareSort CmpEq s1 s2+            -- This error will probably be more informative+            compareTerm cmp (sort s1) a1 a2+            -- Throw the original error if the above doesn't+            -- give an error (for instance, due to pending+            -- constraints).+            -- Or just ignore it... We run into this with irrelevant levels+            -- which may show up in sort constraints, causing them to fail.+            -- In any case it's not safe to ignore the error, for instance+            -- a1 might be Set and a2 a meta of type Set, in which case we+            -- really need the sort comparison to fail, instead of silently+            -- instantiating the meta.+            -- Andreas, 2013-10-31 Maybe the error went away+            -- when we compared the types.  So we try the sort comparison+            -- again, this time not catching the error.  (see Issue 930)+            -- throwError err+            compareSort CmpEq s1 s2           _             -> throwError err         compareTerm cmp (sort s1) a1 a2         return ()@@ -887,22 +1002,24 @@ --   currently it only tries to fix problems with hidden function types. -- --   Precondition: @a@ and @b@ are reduced.-coerce :: Term -> Type -> Type -> TCM Term-coerce v t1 t2 = blockTerm t2 $ do+coerce :: Comparison -> Term -> Type -> Type -> TCM Term+coerce cmp v t1 t2 = blockTerm t2 $ do   verboseS "tc.conv.coerce" 10 $ do     (a1,a2) <- reify (t1,t2)     let dbglvl = if isSet a1 && isSet a2 then 50 else 10     reportSDoc "tc.conv.coerce" dbglvl $-      text "coerce" <+> vcat-        [ text "term      v  =" <+> prettyTCM v-        , text "from type t1 =" <+> prettyTCM a1-        , text "to type   t2 =" <+> prettyTCM a2+      "coerce" <+> vcat+        [ "term      v  =" <+> prettyTCM v+        , "from type t1 =" <+> prettyTCM a1+        , "to type   t2 =" <+> prettyTCM a2+        , "comparison   =" <+> prettyTCM cmp         ]     reportSDoc "tc.conv.coerce" 70 $-      text "coerce" <+> vcat-        [ text "term      v  =" <+> pretty v-        , text "from type t1 =" <+> pretty t1-        , text "to type   t2 =" <+> pretty t2+      "coerce" <+> vcat+        [ "term      v  =" <+> pretty v+        , "from type t1 =" <+> pretty t1+        , "to type   t2 =" <+> pretty t2+        , "comparison   =" <+> pretty cmp         ]   -- v <$ do workOnTypes $ leqType t1 t2   -- take off hidden/instance domains from t1 and t2@@ -918,9 +1035,9 @@     ifBlockedType b2 (\ _ _ -> fallback) $ \ _ _ -> do       (args, t1') <- implicitArgs n notVisible t1       let v' = v `apply` args-      v' <$ coerceSize leqType v' t1' t2+      v' <$ coerceSize (compareType cmp) v' t1' t2   where-    fallback = v <$ coerceSize leqType v t1 t2+    fallback = v <$ coerceSize (compareType cmp) v t1 t2  -- | Account for situations like @k : (Size< j) <= (Size< k + 1)@ --@@ -933,12 +1050,13 @@ -- --   Precondition: types are reduced. coerceSize :: (Type -> Type -> TCM ()) -> Term -> Type -> Type -> TCM ()-coerceSize leqType v t1 t2 = workOnTypes $ do-    reportSDoc "tc.conv.coerce" 70 $-      text "coerceSize" <+> vcat-        [ text "term      v  =" <+> pretty v-        , text "from type t1 =" <+> pretty t1-        , text "to type   t2 =" <+> pretty t2+coerceSize leqType v t1 t2 = verboseBracket "tc.conv.size.coerce" 45 "coerceSize" $+  workOnTypes $ do+    reportSDoc "tc.conv.size.coerce" 70 $+      "coerceSize" <+> vcat+        [ "term      v  =" <+> pretty v+        , "from type t1 =" <+> pretty t1+        , "to type   t2 =" <+> pretty t2         ]     let fallback = leqType t1 t2         done = caseMaybeM (isSizeType t1) fallback $ \ _ -> return ()@@ -955,7 +1073,7 @@       unlessM (tryConversion $ dontAssignMetas $ leqType t1 t2) $ do         -- A (most probably weaker) alternative is to just check syn.eq.         -- ifM (snd <$> checkSyntacticEquality t1 t2) (return v) $ {- else -} do-        reportSDoc "tc.conv.coerce" 20 $ text "coercing to a size type"+        reportSDoc "tc.conv.size.coerce" 20 $ "coercing to a size type"         case b2 of           -- @t2 = Size@.  We are done!           BoundedNo -> done@@ -1000,37 +1118,52 @@       no       = typeError $ NotLeqSort s1 s2       yes      = return ()   reportSDoc "tc.conv.sort" 30 $-    sep [ text "leqSort"-        , nest 2 $ fsep [ prettyTCM s1 <+> text "=<"+    sep [ "leqSort"+        , nest 2 $ fsep [ prettyTCM s1 <+> "=<"                         , prettyTCM s2 ]         ]+  propEnabled <- isPropEnabled++  let fvsRHS = IntSet.toList $ allFreeVars s2+  badRigid <- s1 `rigidVarsNotContainedIn` fvsRHS+   case (s1, s2) of+      -- Andreas, 2018-09-03: crash on dummy sort+      (DummyS s, _) -> impossibleSort s+      (_, DummyS s) -> impossibleSort s+       -- The most basic rule: @Set l =< Set l'@ iff @l =< l'@       (Type a  , Type b  ) -> leqLevel a b -      -- Prop is currently not supported-      (Prop    , _       ) -> __IMPOSSIBLE__-      (_       , Prop    ) -> __IMPOSSIBLE__+      -- Likewise for @Prop@+      (Prop a  , Prop b  ) -> leqLevel a b +      -- @Prop l@ is below @Set l@+      (Prop a  , Type b  ) -> leqLevel a b+      (Type a  , Prop b  ) -> no+       -- Setω is the top sort       (_       , Inf     ) -> yes       (Inf     , _       ) -> equalSort s1 s2 -      -- Set0 and SizeUniv are bottom sorts-      -- note: this ceases to hold if we add @Prop =< Set0@-      (_       , Type (Max [])) -> equalSort s1 s2+      -- @SizeUniv@ and @Prop0@ are bottom sorts.+      -- So is @Set0@ if @Prop@ is not enabled.       (_       , SizeUniv) -> equalSort s1 s2--      -- If we compare @univSort s@ against @Set (lsuc l)@,-      -- we can simplify the comparison.-      (UnivSort s, Type b    )-        | Just b' <- levelSucView b -> leqSort s (Type b')-      (Type a    , UnivSort s)-        | Just a' <- levelSucView a -> leqSort (Type a') s+      (_       , Prop (Max [])) -> equalSort s1 s2+      (_       , Type (Max []))+        | not propEnabled  -> equalSort s1 s2 -      -- SizeUniv is unrelated to any Set l+      -- SizeUniv is unrelated to any @Set l@ or @Prop l@       (SizeUniv, Type{}  ) -> no+      (SizeUniv, Prop{}  ) -> no +      -- If the first sort rigidly depends on a variable and the second+      -- sort does not mention this variable, the second sort must be Inf.+      (_       , _       ) | badRigid -> equalSort s2 Inf++      -- This shouldn't be necessary+      (UnivSort Inf , UnivSort Inf) -> yes+       -- PiSort, UnivSort and MetaS might reduce once we instantiate       -- more metas, so we postpone.       (PiSort{}, _       ) -> postpone@@ -1040,11 +1173,24 @@       (MetaS{} , _       ) -> postpone       (_       , MetaS{} ) -> postpone +      -- DefS are postulated sorts, so they do not reduce.+      (DefS d es , DefS d' es') | d == d' -> postpone+      (DefS{} , _     ) -> no+      (_      , DefS{}) -> no++  where+  impossibleSort s = do+    reportSLn "impossible" 10 $ unlines+      [ "leqSort: found dummy sort with description:"+      , s+      ]+    __IMPOSSIBLE__+ leqLevel :: Level -> Level -> TCM () leqLevel a b = liftTCM $ do   reportSDoc "tc.conv.nat" 30 $-    text "compareLevel" <+>-      sep [ prettyTCM a <+> text "=<"+    "compareLevel" <+>+      sep [ prettyTCM a <+> "=<"           , prettyTCM b ]   -- Andreas, 2015-12-28 Issue 1757   -- We normalize both sides to make the syntactic equality check (==) stronger.@@ -1057,8 +1203,8 @@     -- If we have to postpone a constraint, then its simplified form!     leqView a@(Max as) b@(Max bs) = catchConstraint (LevelCmp CmpLeq a b) $ do       reportSDoc "tc.conv.nat" 30 $-        text "compareLevelView" <+>-          sep [ pretty a <+> text "=<"+        "compareLevelView" <+>+          sep [ pretty a <+> "=<"               , pretty b ]       wrap $ case (as, bs) of @@ -1173,7 +1319,7 @@ -- | Precondition: levels are 'normalise'd. equalLevel' :: Level -> Level -> TCM () equalLevel' a b = do-  reportSDoc "tc.conv.level" 50 $ sep [ text "equalLevel", nest 2 $ parens $ pretty a, nest 2 $ parens $ pretty b ]+  reportSDoc "tc.conv.level" 50 $ sep [ "equalLevel", nest 2 $ parens $ pretty a, nest 2 $ parens $ pretty b ]   liftTCM $ catchConstraint (LevelCmp CmpEq a b) $     check a b   where@@ -1182,7 +1328,7 @@       -- to the maximum       as <- return $ [ a | a <- as, not $ a `isStrictlySubsumedBy` bs ]       bs <- return $ [ b | b <- bs, not $ b `isStrictlySubsumedBy` as ]-      -- Andreas, 2013-10-31 remove common terms (that don't contain metas!!)+      -- Andreas, 2013-10-31 remove common terms (that don't contain metas!)       -- THAT's actually UNSOUND when metas are instantiated, because       --     max a b == max a c  does not imply  b == c       -- as <- return $ Set.fromList $ closed0 as@@ -1193,19 +1339,19 @@       as <- return $ List.sort $ closed0 as       bs <- return $ List.sort $ closed0 bs       reportSDoc "tc.conv.level" 40 $-        sep [ text "equalLevel"-            , vcat [ nest 2 $ sep [ prettyTCM a <+> text "=="+        sep [ "equalLevel"+            , vcat [ nest 2 $ sep [ prettyTCM a <+> "=="                                   , prettyTCM b                                   ]-                   , text "reduced"-                   , nest 2 $ sep [ prettyTCM (Max as) <+> text "=="+                   , "reduced"+                   , nest 2 $ sep [ prettyTCM (Max as) <+> "=="                                   , prettyTCM (Max bs)                                   ]                    ]             ]       reportSDoc "tc.conv.level" 50 $         sep [ text "equalLevel"-            , vcat [ nest 2 $ sep [ pretty (Max as) <+> text "=="+            , vcat [ nest 2 $ sep [ pretty (Max as) <+> "=="                                   , pretty (Max bs)                                   ]                    ]@@ -1271,7 +1417,7 @@         notok    = unlessM typeInType notOk         notOk    = typeError $ UnequalSorts (Type a) (Type b)         postpone = do-          reportSDoc "tc.conv.level" 30 $ hang (text "postponing:") 2 $ hang (pretty a <+> text "==") 0 (pretty b)+          reportSDoc "tc.conv.level" 30 $ hang "postponing:" 2 $ hang (pretty a <+> "==") 0 (pretty b)           patternViolation          closed0 [] = [ClosedLevel 0]@@ -1280,7 +1426,7 @@         -- perform assignment (Plus n (MetaLevel x as)) := bs         meta n x as bs = do           reportSLn "tc.meta.level" 30 $ "Assigning meta level"-          reportSDoc "tc.meta.level" 50 $ text "meta" <+> sep [prettyList $ map pretty as, prettyList $ map pretty bs]+          reportSDoc "tc.meta.level" 50 $ "meta" <+> sep [prettyList $ map pretty as, prettyList $ map pretty bs]           bs' <- mapM (subtr n) bs           assignE DirEq x as (levelTm (Max bs')) (===) -- fallback: check equality as atoms @@ -1336,68 +1482,90 @@         (s1,s2) <- reduce (s1,s2)         let postpone = addConstraint (SortCmp CmpEq s1 s2)             yes      = return ()-            no       = unlessM typeInType $ typeError $ UnequalSorts s1 s2+            no       = typeError $ UnequalSorts s1 s2+            synEq    = ifNotM (optSyntacticEquality <$> pragmaOptions) postpone $ do+              ((s1,s2) , equal) <- SynEq.checkSyntacticEquality s1 s2+              if | equal     -> yes+                 | otherwise -> postpone          reportSDoc "tc.conv.sort" 30 $ sep-          [ text "equalSort"-          , vcat [ nest 2 $ fsep [ prettyTCM s1 <+> text "=="+          [ "equalSort"+          , vcat [ nest 2 $ fsep [ prettyTCM s1 <+> "=="                                  , prettyTCM s2 ]-                 , nest 2 $ fsep [ pretty s1 <+> text "=="+                 , nest 2 $ fsep [ pretty s1 <+> "=="                                  , pretty s2 ]                  ]           ] +        propEnabled <- isPropEnabled+        typeInTypeEnabled <- typeInType+         case (s1, s2) of -            -- before anything else, try syntactic equality-            _ | s1 == s2              -> return ()+            -- Andreas, 2018-09-03: crash on dummy sort+            (DummyS s, _) -> impossibleSort s+            (_, DummyS s) -> impossibleSort s              -- one side is a meta sort: try to instantiate             -- In case both sides are meta sorts, instantiate the             -- bigger (i.e. more recent) one.             (MetaS x es , MetaS y es')+              | x == y                 -> synEq               | x < y                  -> meta y es' s1               | otherwise              -> meta x es s2             (MetaS x es , _          ) -> meta x es s2             (_          , MetaS x es ) -> meta x es s1 +            -- Other blocked sorts: check syntactic equality+            (PiSort{}    , PiSort{}   ) -> synEq+            (UnivSort{}  , UnivSort{} ) -> synEq+             -- diagonal cases for rigid sorts             (Type a     , Type b     ) -> equalLevel a b             (SizeUniv   , SizeUniv   ) -> yes-            (Prop       , Prop       ) -> yes+            (Prop a     , Prop b     ) -> equalLevel a b             (Inf        , Inf        ) -> yes -            -- @UnivSort s == Set (lsuc l)@ iff @s == Set l@-            (Type a     , UnivSort s )-              | Just a' <- levelSucView a -> equalSort (Type a') s-            (UnivSort s , Type b     )-              | Just b' <- levelSucView b -> equalSort s (Type b')+            -- if --type-in-type is enabled, Setω is equal to any Set ℓ (see #3439)+            (Type{}     , Inf        )+              | typeInTypeEnabled      -> yes+            (Inf        , Type{}     )+              | typeInTypeEnabled      -> yes              -- if @PiSort a b == Set0@, then @b == Set0@             -- we use this fact to solve metas in @b@,             -- hopefully allowing the @PiSort@ to reduce.-            (Type (Max []) , PiSort a b   ) -> piSortEqualToSet0 a b-            (PiSort a b    , Type (Max [])) -> piSortEqualToSet0 a b+            (Type (Max []) , PiSort a b   )+              | not propEnabled             -> piSortEqualsBottom set0 a b+            (PiSort a b    , Type (Max []))+              | not propEnabled             -> piSortEqualsBottom set0 a b +            (Prop (Max []) , PiSort a b   ) -> piSortEqualsBottom prop0 a b+            (PiSort a b    , Prop (Max [])) -> piSortEqualsBottom prop0 a b+             -- @PiSort a b == SizeUniv@ iff @b == SizeUniv@             (SizeUniv   , PiSort a b ) ->               underAbstraction_ b $ equalSort SizeUniv             (PiSort a b , SizeUniv   ) ->               underAbstraction_ b $ equalSort SizeUniv -            -- Prop and SizeUniv don't contain any universes,+            -- @Prop0@ and @SizeUniv@ don't contain any universes,             -- so they cannot be a UnivSort-            (Prop       , UnivSort s ) -> no-            (UnivSort s , Prop       ) -> no-            (SizeUniv   , UnivSort s ) -> no-            (UnivSort s , SizeUniv   ) -> no+            (Prop (Max []) , UnivSort s )   -> no+            (UnivSort s    , Prop (Max [])) -> no+            (SizeUniv      , UnivSort s )   -> no+            (UnivSort s    , SizeUniv   )   -> no +             -- PiSort and UnivSort could compute later, so we postpone             (PiSort{}   , _          ) -> postpone             (_          , PiSort{}   ) -> postpone             (UnivSort{} , _          ) -> postpone             (_          , UnivSort{} ) -> postpone +            -- postulated sorts can only be equal if they have the same head+            (DefS d es  , DefS d' es') | d == d' -> synEq+             -- any other combinations of sorts are not equal             (_          , _          ) -> no @@ -1405,21 +1573,216 @@       -- perform assignment (MetaS x es) := s       meta x es s = do         reportSLn "tc.meta.sort" 30 $ "Assigning meta sort"-        reportSDoc "tc.meta.sort" 50 $ text "meta" <+> sep [pretty x, prettyList $ map pretty es, pretty s]+        reportSDoc "tc.meta.sort" 50 $ "meta" <+> sep [pretty x, prettyList $ map pretty es, pretty s]         assignE DirEq x es (Sort s) __IMPOSSIBLE__ -      -- equate @piSort a b@ to @Set0@-      -- note: this assumes @piSort a b == Set0@ implies @b == Set0@,-      -- which becomes invalid if we add Prop.-      piSortEqualToSet0 a b = do-        let set0 = Type $ Max []-        underAbstraction_ b $ equalSort set0+      set0 = Type $ Max []+      prop0 = Prop $ Max []++      -- equate @piSort a b@ to @s0@, which is assumed to be a (closed) bottom sort+      -- i.e. @piSort a b == s0@ implies @b == s0@.+      piSortEqualsBottom s0 a b = do+        underAbstraction_ b $ equalSort s0         -- we may have instantiated some metas, so @a@ could reduce         a <- reduce a-        case funSort' a set0 of-          Just s  -> equalSort s set0-          Nothing -> addConstraint $ SortCmp CmpEq (funSort a set0) set0+        case funSort' a s0 of+          Just s  -> equalSort s s0+          Nothing -> addConstraint $ SortCmp CmpEq (funSort a s0) s0+      impossibleSort s = do+        reportSLn "impossible" 10 $ unlines+          [ "equalSort: found dummy sort with description:"+          , s+          ]+        __IMPOSSIBLE__ ++-- -- This should probably represent face maps with a more precise type+-- toFaceMaps :: Term -> TCM [[(Int,Term)]]+-- toFaceMaps t = do+--   view <- intervalView'+--   iz <- primIZero+--   io <- primIOne+--   ineg <- (\ q t -> Def q [Apply $ Arg defaultArgInfo t]) <$> fromMaybe __IMPOSSIBLE__ <$> getPrimitiveName' "primINeg"++--   let f IZero = mzero+--       f IOne  = return []+--       f (IMin x y) = do xs <- (f . view . unArg) x; ys <- (f . view . unArg) y; return (xs ++ ys)+--       f (IMax x y) = msum $ map (f . view . unArg) [x,y]+--       f (INeg x)   = map (id -*- not) <$> (f . view . unArg) x+--       f (OTerm (Var i [])) = return [(i,True)]+--       f (OTerm _) = return [] -- what about metas? we should suspend? maybe no metas is a precondition?+--       isConsistent xs = all (\ xs -> length xs == 1) . map nub . Map.elems $ xs  -- optimize by not doing generate + filter+--       as = map (map (id -*- head) . Map.toAscList) . filter isConsistent . map (Map.fromListWith (++) . map (id -*- (:[]))) $ (f (view t))+--   xs <- mapM (mapM (\ (i,b) -> (,) i <$> intervalUnview (if b then IOne else IZero))) as+--   return xs++forallFaceMaps :: Term -> (Map.Map Int Bool -> MetaId -> Term -> TCM a) -> (Substitution -> TCM a) -> TCM [a]+forallFaceMaps t kb k = do+  reportSDoc "conv.forall" 20 $+      fsep ["forallFaceMaps"+           , prettyTCM t+           ]+  as <- decomposeInterval t+  boolToI <- do+    io <- primIOne+    iz <- primIZero+    return (\b -> if b then io else iz)+  forM as $ \ (ms,ts) -> do+   ifBlockeds ts (kb ms) $ \ _ _ -> do+    let xs = map (id -*- boolToI) $ Map.toAscList ms+    cxt <- getContext+    reportSDoc "conv.forall" 20 $+      fsep ["substContextN"+           , prettyTCM cxt+           , prettyTCM xs+           ]+    (cxt',sigma) <- substContextN cxt xs+    resolved <- forM xs (\ (i,t) -> (,) <$> lookupBV i <*> return (applySubst sigma t))+    updateContext sigma (const cxt') $+      addBindings resolved $ do+        cl <- buildClosure ()+        tel <- getContextTelescope+        m <- currentModule+        sub <- getModuleParameterSub m+        reportSLn "conv.forall" 10 $ unlines [replicate 10 '-'+                                             , show (envCurrentModule $ clEnv cl)+                                             , show (envLetBindings $ clEnv cl)+                                             , show tel -- (toTelescope $ envContext $ clEnv cl)+                                             , show sigma+                                             , show m+                                             , show sub]++        k sigma+  where+    -- TODO Andrea: inefficient because we try to reduce the ts which we know are in whnf+    ifBlockeds ts blocked unblocked = do+      and <- getPrimitiveTerm "primIMin"+      io  <- primIOne+      let t = foldr (\ x r -> and `apply` [argN x,argN r]) io ts+      ifBlocked t blocked unblocked+    addBindings [] m = m+    addBindings ((Dom{domInfo = info,unDom = (nm,ty)},t):bs) m = addLetBinding info nm t ty (addBindings bs m)++    substContextN :: Context -> [(Int,Term)] -> TCM (Context , Substitution)+    substContextN c [] = return (c, idS)+    substContextN c ((i,t):xs) = do+      (c', sigma) <- substContext i t c+      (c'', sigma')  <- substContextN c' (map (subtract 1 -*- applySubst sigma) xs)+      return (c'', applySubst sigma' sigma)+++    -- assumes the term can be typed in the shorter telescope+    -- the terms we get from toFaceMaps are closed.+    substContext :: Int -> Term -> Context -> TCM (Context , Substitution)+    substContext i t [] = __IMPOSSIBLE__+    substContext i t (x:xs) | i == 0 = return $ (xs , singletonS 0 t)+    substContext i t (x:xs) | i > 0 = do+                                  reportSDoc "conv.forall" 20 $+                                    fsep ["substContext"+                                        , text (show (i-1))+                                        , prettyTCM t+                                        , prettyTCM xs+                                        ]+                                  (c,sigma) <- substContext (i-1) t xs+                                  let e = applySubst sigma x+                                  return (e:c, liftS 1 sigma)+    substContext i t (x:xs) = __IMPOSSIBLE__++compareInterval :: Comparison -> Type -> Term -> Term -> TCM ()+compareInterval cmp i t u = do+  reportSDoc "tc.conv.interval" 15 $+    sep [ "{ compareInterval" <+> prettyTCM t <+> "=" <+> prettyTCM u ]+  tb <- reduceB t+  ub <- reduceB u+  let t = ignoreBlocking tb+      u = ignoreBlocking ub+  it <- decomposeInterval' t+  iu <- decomposeInterval' u+  case () of+    _ | blockedOrMeta tb || blockedOrMeta ub -> do+      -- in case of metas we wouldn't be able to make progress by how we deal with de morgan laws.+      -- (because the constraints generated by decomposition are sufficient but not necessary).+      -- but we could still prune/solve some metas by comparing the terms as atoms.+      -- also if blocked we won't find the terms conclusively unequal(?) so compareAtom+      -- won't report type errors when we should accept.+      interval <- elInf $ primInterval+      compareAtom CmpEq interval t u+    _ | otherwise -> do+      x <- leqInterval it iu+      y <- leqInterval iu it+      let final = isCanonical it && isCanonical iu+      if x && y then reportSDoc "tc.conv.interval" 15 $ "Ok! }" else+        if final then typeError $ UnequalTerms cmp t u i+                 else do+                   reportSDoc "tc.conv.interval" 15 $ "Giving up! }"+                   patternViolation+ where+   blockedOrMeta Blocked{} = True+   blockedOrMeta (NotBlocked _ (MetaV{})) = True+   blockedOrMeta _ = False+++type Conj = (Map.Map Int (Set.Set Bool),[Term])++isCanonical :: [Conj] -> Bool+isCanonical = all (null . snd)++-- | leqInterval r q = r ≤ q in the I lattice.+-- (∨ r_i) ≤ (∨ q_j)  iff  ∀ i. ∃ j. r_i ≤ q_j+leqInterval :: [Conj] -> [Conj] -> TCM Bool+leqInterval r q =+  and <$> forM r (\ r_i ->+   or <$> forM q (\ q_j -> leqConj r_i q_j))  -- TODO shortcut++-- | leqConj r q = r ≤ q in the I lattice, when r and q are conjuctions.+-- ' (∧ r_i)   ≤ (∧ q_j)               iff+-- ' (∧ r_i)   ∧ (∧ q_j)   = (∧ r_i)   iff+-- ' {r_i | i} ∪ {q_j | j} = {r_i | i} iff+-- ' {q_j | j} ⊆ {r_i | i}+leqConj :: Conj -> Conj -> TCM Bool+leqConj (rs,rst) (qs,qst) = do+  case toSet qs `Set.isSubsetOf` toSet rs of+    False -> return False+    True  -> do+      interval <- elInf $ primInterval++      -- we don't want to generate new constraints here because+      -- 1) in some situations the same constraint would get generated twice.+      -- 2) unless things are completely accepted we are going to+      --    throw patternViolation in compareInterval.+      let eqT t u = tryConversion (compareAtom CmpEq interval t u)++      let listSubset ts us = and <$> forM ts (\ t ->+                              or <$> forM us (\ u -> eqT t u)) -- TODO shortcut+      listSubset qst rst+  where+    toSet m = Set.fromList [ (i,b) | (i,bs) <- Map.toList m, b <- Set.toList bs]+++-- | equalTermOnFace φ A u v = _ , φ ⊢ u = v : A+equalTermOnFace :: Term -> Type -> Term -> Term -> TCM ()+equalTermOnFace = compareTermOnFace CmpEq++compareTermOnFace :: Comparison -> Term -> Type -> Term -> Term -> TCM ()+compareTermOnFace = compareTermOnFace' compareTerm++compareTermOnFace' :: (Comparison -> Type -> Term -> Term -> TCM ()) -> Comparison -> Term -> Type -> Term -> Term -> TCM ()+compareTermOnFace' k cmp phi ty u v = do+  phi <- reduce phi+  _ <- forallFaceMaps phi postponed+         $ \ alpha -> k cmp (applySubst alpha ty) (applySubst alpha u) (applySubst alpha v)+  return ()+ where+  postponed ms i psi = do+    phi <- runNamesT [] $ do+             imin <- cl $ getPrimitiveTerm "primIMin"+             ineg <- cl $ getPrimitiveTerm "primINeg"+             psi <- open psi+             let phi = foldr (\ (i,b) r -> do i <- open (var i); pure imin <@> (if b then i else pure ineg <@> i) <@> r)+                          psi (Map.toList ms) -- TODO Andrea: make a view?+             phi+    addConstraint (ValueCmpOnFace cmp phi ty u v)+ --------------------------------------------------------------------------- -- * Definitions ---------------------------------------------------------------------------@@ -1427,10 +1790,12 @@ bothAbsurd :: QName -> QName -> TCM Bool bothAbsurd f f'   | isAbsurdLambdaName f, isAbsurdLambdaName f' = do+      -- Double check we are really dealing with absurd lambdas:+      -- Their functions should not have bodies.       def  <- getConstInfo f       def' <- getConstInfo f'       case (theDef def, theDef def') of-        (Function{ funCompiled = Just Fail},-         Function{ funCompiled = Just Fail}) -> return True+        (Function{ funClauses = [Clause{ clauseBody = Nothing }] },+         Function{ funClauses = [Clause{ clauseBody = Nothing }] }) -> return True         _ -> return False   | otherwise = return False
src/full/Agda/TypeChecking/Conversion.hs-boot view
@@ -5,6 +5,7 @@ import Agda.TypeChecking.Monad  compareTerm  :: Comparison -> Type -> Term -> Term -> TCM ()+compareTermOnFace :: Comparison -> Term -> Type -> Term -> Term -> TCM () compareAtom  :: Comparison -> Type -> Term -> Term -> TCM () compareArgs  :: [Polarity] -> [IsForced] -> Type -> Term -> Args -> Args -> TCM () compareElims :: [Polarity] -> [IsForced] -> Type -> Term -> [Elim] -> [Elim] -> TCM ()@@ -13,6 +14,7 @@ compareSort  :: Comparison -> Sort -> Sort -> TCM () compareLevel :: Comparison -> Level -> Level -> TCM () equalTerm    :: Type -> Term -> Term -> TCM ()+equalTermOnFace :: Term -> Type -> Term -> Term -> TCM () equalType    :: Type -> Type -> TCM () equalSort    :: Sort -> Sort -> TCM () equalLevel   :: Level -> Level -> TCM ()
src/full/Agda/TypeChecking/Coverage.hs view
@@ -16,12 +16,16 @@   , normaliseProjP   ) where -import Prelude hiding (null)+import Prelude hiding (null, (!!))  -- do not use partial functions like !! +import Control.Arrow (second)+ import Control.Monad+import Control.Monad.Reader import Control.Monad.Trans ( lift )  import Data.Either (lefts)+import Data.Foldable (for_) import qualified Data.List as List import Data.Monoid (Any(..)) import Data.Map (Map)@@ -36,8 +40,11 @@ import Agda.Syntax.Internal import Agda.Syntax.Internal.Pattern +import Agda.TypeChecking.Names+import Agda.TypeChecking.Primitive hiding (Nat)+import Agda.TypeChecking.Primitive.Cubical import Agda.TypeChecking.Monad-import Agda.TypeChecking.Monad.Builtin (litType)+import Agda.TypeChecking.Monad.Builtin  import Agda.TypeChecking.Rules.LHS (checkSortOfSplitVar) import Agda.TypeChecking.Rules.LHS.Problem (allFlexVars)@@ -46,14 +53,18 @@ import Agda.TypeChecking.Coverage.Match import Agda.TypeChecking.Coverage.SplitTree -import Agda.TypeChecking.Conversion (tryConversion, equalType)+import Agda.TypeChecking.Conversion (tryConversion, equalType, equalTermOnFace) import Agda.TypeChecking.Datatypes (getConForm)+import {-# SOURCE #-} Agda.TypeChecking.Empty ( isEmptyTel, isEmptyType )+import Agda.TypeChecking.Free+import Agda.TypeChecking.Irrelevance import Agda.TypeChecking.Patterns.Internal (dotPatternsToPatterns) import Agda.TypeChecking.Pretty import Agda.TypeChecking.Substitute import Agda.TypeChecking.Reduce import Agda.TypeChecking.Records import Agda.TypeChecking.Telescope+import Agda.TypeChecking.Telescope.Path import Agda.TypeChecking.MetaVars import Agda.TypeChecking.Warnings @@ -65,6 +76,7 @@   , MonadError(catchError, throwError)   , runExceptT   )+import Agda.Utils.Function import Agda.Utils.Functor import Agda.Utils.List import Agda.Utils.Maybe@@ -73,7 +85,6 @@ import Agda.Utils.Permutation import Agda.Utils.Pretty (prettyShow) import Agda.Utils.Size-import Agda.Utils.Suffix (nameVariant) import Agda.Utils.Tuple import Agda.Utils.Lens @@ -125,7 +136,7 @@ -- | Create a split clause from a clause in internal syntax. Used by make-case. clauseToSplitClause :: Clause -> SplitClause clauseToSplitClause cl = SClause-  { scTel    = clauseTel  cl+  { scTel    = clauseTel cl   , scPats   = toSplitPatterns $ namedClausePats cl   , scSubst  = idS  -- Andreas, 2014-07-15  TODO: Is this ok?   , scCheckpoints = Map.empty -- #2996: not __IMPOSSIBLE__ for debug printing@@ -142,19 +153,33 @@ -- --   - Adds missing instances clauses to the signature. ---coverageCheck :: QName -> Type -> [Clause] -> TCM SplitTree+coverageCheck+  :: QName     -- ^ Name @f@ of definition.+  -> Type      -- ^ Absolute type (including the full parameter telescope).+  -> [Clause]  -- ^ Clauses of @f@.  These are the very clauses of @f@ in the signature.+  -> TCM SplitTree coverageCheck f t cs = do-  TelV gamma a <- telView t+  reportSLn "tc.cover.top" 30 $ "entering coverageCheck for " ++ show f+  reportSDoc "tc.cover.top" 75 $ "  of type (raw): " <+> (text . prettyShow) t+  reportSDoc "tc.cover.top" 45 $ "  of type: " <+> prettyTCM t+  TelV gamma a <- telViewUpTo (-1) t+  reportSLn "tc.cover.top" 30 $ "coverageCheck: computed telView"+   let -- n             = arity       -- xs            = variable patterns fitting lgamma       n            = size gamma       xs           =  map (setOrigin Inserted) $ teleNamedArgs gamma++  reportSLn "tc.cover.top" 30 $ "coverageCheck: getDefFreeVars"+       -- The initial module parameter substitutions need to be weakened by the       -- number of arguments that aren't module parameters.   fv           <- getDefFreeVars f +  reportSLn "tc.cover.top" 30 $ "coverageCheck: getting checkpoints"+   -- TODO: does this make sense? Why are we weakening by n - fv?-  checkpoints <- applySubst (raiseS (n - fv)) <$> view eCheckpoints+  checkpoints <- applySubst (raiseS (n - fv)) <$> viewTC eCheckpoints        -- construct the initial split clause   let sc = SClause gamma xs idS checkpoints $ Just $ defaultArg a@@ -169,16 +194,56 @@    -- used = actually used clauses for cover   -- pss  = uncovered cases-  CoverResult splitTree used pss noex <- cover f cs sc+  CoverResult splitTree used pss qss noex <- cover f cs sc++  -- Andreas, 2018-11-12, issue #378:+  -- some indices in @used@ and @noex@ point outside of @cs@,+  -- since missing hcomp clauses have been added during the course of @cover@.+  -- We simply delete theses indices from @noex@.+  noex <- return $ List.filter (< length cs) $ Set.toList noex+   reportSDoc "tc.cover.top" 10 $ vcat-    [ text "cover computed!"+    [ "cover computed!"     , text $ "used clauses: " ++ show used     , text $ "non-exact clauses: " ++ show noex     ]   reportSDoc "tc.cover.splittree" 10 $ vcat-    [ text "generated split tree for" <+> prettyTCM f+    [ "generated split tree for" <+> prettyTCM f     , text $ prettyShow splitTree     ]+  reportSDoc "tc.cover.covering" 10 $ vcat+    [ text $ "covering patterns for " ++ prettyShow f+    , nest 2 $ vcat $ map (\cl -> enterClosure cl $ \ cl -> addContext (clauseTel cl) $ prettyTCMPatternList $ namedClausePats cl) qss+    ]++  -- Storing the covering clauses so that checkIApplyConfluence_ can+  -- find them later.+  -- Andreas, 2019-03-27, only needed when --cubical+  whenM (optCubical <$> pragmaOptions) $ do+    modifySignature $ updateDefinition f $ updateTheDef $ updateCovering $ const qss+++  -- filter out the missing clauses that are absurd.+  pss <- flip filterM pss $ \(tel,ps) ->+    ifNotM (isEmptyTel tel) (return True) $ do+      -- Jesper, 2018-11-28, Issue #3407: if the clause is absurd,+      -- add the appropriate absurd clause to the definition.+      let cl = Clause { clauseLHSRange    = noRange+                      , clauseFullRange   = noRange+                      , clauseTel         = tel+                      , namedClausePats   = ps+                      , clauseBody        = Nothing+                      , clauseType        = Nothing+                      , clauseCatchall    = False+                      , clauseUnreachable = Just False+                      }+      reportSDoc "tc.cover.missing" 20 $ inTopContext $ do+        sep [ "adding missing absurd clause"+            , nest 2 $ prettyTCM $ QNamed f cl+            ]+      addClauses f [cl]+      return False+   -- report a warning if there are uncovered cases,   -- generate a catch-all clause with a metavariable as its body to avoid   -- internal errors in the reduction machinery.@@ -210,7 +275,7 @@   -- report a warning if there are clauses that are not preserved as   -- definitional equalities and --exact-split is enabled   unless (null noex) $ do-      let noexclauses = map (cs1 !!) $ Set.toList noex+      let noexclauses = map (indexWithDefault __IMPOSSIBLE__ cs1) noex       setCurrentRange (map clauseLHSRange noexclauses) $         warning $ CoverageNoExactSplit f $ noexclauses   return splitTree@@ -226,6 +291,9 @@   { coverSplitTree       :: SplitTree   , coverUsedClauses     :: Set Nat   , coverMissingClauses  :: [(Telescope, [NamedArg DeBruijnPattern])]+  , coverPatterns        :: [Closure Clause]+  -- ^ The set of patterns used as cover.+  -- Entering the closure puts you directly in the right context (and cps) for the RHS.   , coverNoExactClauses  :: Set Nat   } @@ -237,28 +305,29 @@ -- cover :: QName -> [Clause] -> SplitClause ->          TCM CoverResult-cover f cs sc@(SClause tel ps _ _ target) = do+cover f cs sc@(SClause tel ps _ _ target) = updateRelevance $ do   reportSDoc "tc.cover.cover" 10 $ inTopContext $ vcat-    [ text "checking coverage of pattern:"-    , nest 2 $ text "tel  =" <+> prettyTCM tel-    , nest 2 $ text "ps   =" <+> do addContext tel $ prettyTCMPatternList $ fromSplitPatterns ps-    ]-  reportSDoc "tc.cover.cover" 60 $ vcat-    [ nest 2 $ text "ps   =" <+> pretty ps+    [ "checking coverage of pattern:"+    , nest 2 $ "tel  =" <+> prettyTCM tel+    , nest 2 $ "ps   =" <+> do addContext tel $ prettyTCMPatternList $ fromSplitPatterns ps+    , nest 2 $ "target =" <+> do addContext tel $ maybe (text "<none>") prettyTCM target+    , nest 2 $ "target sort =" <+> do addContext tel $ maybe (text "<none>") (prettyTCM . getSort . unArg) target     ]-  cs' <- normaliseProjP cs-  ps <- (traverse . traverse . traverse) dotPatternsToPatterns ps-  case match cs' ps of+  match cs ps >>= \case     Yes (i,mps) -> do-      exact <- allM mps isTrivialPattern-      let noExactClause = if exact || clauseCatchall (cs !! i)+      exact <- allM (map snd mps) isTrivialPattern+      let cl0 = indexWithDefault __IMPOSSIBLE__ cs i+      let noExactClause = if exact || clauseCatchall (indexWithDefault __IMPOSSIBLE__ cs i)                           then Set.empty                           else Set.singleton i       reportSLn "tc.cover.cover" 10 $ "pattern covered by clause " ++ show i-      return $ CoverResult (SplittingDone (size tel)) (Set.singleton i) [] noExactClause+      reportSDoc "tc.cover.cover" 20 $ text "with mps = " <+> do addContext tel $ pretty $ mps+      cl <- applyCl sc cl0 mps+      return $ CoverResult (SplittingDone (size tel)) (Set.singleton i) [] [cl] noExactClause      No        ->  do       reportSLn "tc.cover" 20 $ "pattern is not covered"+      -- TODO Andrea: add hcomp clause!       case fmap getHiding target of         Just h | isInstance h -> do           -- Ulf, 2016-10-31: For now we only infer instance clauses. It would@@ -266,18 +335,16 @@           -- hidden clause is expected to be forced by later clauses, it's too           -- late to add it now. If it was inferrable we would have gotten a           -- type error before getting to this point.-          inferMissingClause f sc-          return $ CoverResult (SplittingDone (size tel)) Set.empty [] Set.empty+          cl <- inferMissingClause f sc+          return $ CoverResult (SplittingDone (size tel)) Set.empty [] [cl] Set.empty         _ -> do           let ps' = fromSplitPatterns ps-          return $ CoverResult (SplittingDone (size tel)) Set.empty [(tel, ps')] Set.empty+          return $ CoverResult (SplittingDone (size tel)) Set.empty [(tel, ps')] [] Set.empty      -- We need to split!     -- If all clauses have an unsplit copattern, we try that first.-    Block res bs -> tryIf res splitRes $ do-      let ps' = fromSplitPatterns ps-          done = return $ CoverResult (SplittingDone (size tel)) Set.empty [(tel, ps')] Set.empty-      if null bs then done else do+    Block res bs -> trySplitRes res (null bs) $ do+      when (null bs) __IMPOSSIBLE__       -- Otherwise, if there are variables to split, we try them       -- in the order determined by a split strategy.       reportSLn "tc.cover.strategy" 20 $ "blocking vars = " ++ prettyShow bs@@ -291,64 +358,142 @@         continue xs YesAllowPartialCover $ \ err -> do           typeError $ SplitError err   where+    applyCl :: SplitClause -> Clause -> [(Nat, SplitPattern)] -> TCM (Closure Clause)+    applyCl SClause{scTel = tel, scCheckpoints = cps} cl mps+      = addContext tel+        $ locallyTC eCheckpoints (const cps)+        $ checkpoint IdS $ do+        reportSDoc "tc.cover.applyCl" 40 $ "applyCl"+        reportSDoc "tc.cover.applyCl" 40 $ "tel    =" <+> prettyTCM tel+        reportSDoc "tc.cover.applyCl" 40 $ "ps     =" <+> pretty (namedClausePats cl)+        reportSDoc "tc.cover.applyCl" 40 $ "mps    =" <+> pretty mps+        reportSDoc "tc.cover.applyCl" 40 $ "s      =" <+> pretty s+        reportSDoc "tc.cover.applyCl" 40 $ "new ps =" <+> pretty (s `applySubst` namedClausePats cl)+        buildClosure $+             Clause { clauseLHSRange  = clauseLHSRange cl+                    , clauseFullRange = clauseFullRange cl+                    , clauseTel       = tel+                    , namedClausePats = s `applySubst` namedClausePats cl+                    , clauseBody      = (s `applyPatSubst`) <$> clauseBody cl+                    , clauseType      = (s `applyPatSubst`) <$> clauseType cl+                    , clauseCatchall  = clauseCatchall cl+                    , clauseUnreachable = clauseUnreachable cl+                    }+      where+        (vs,qs) = unzip mps+        mps' = zip vs $ map namedArg $ fromSplitPatterns $ map defaultNamedArg qs+        s = parallelS (for [0..maximum (-1:vs)] $ (\ i -> fromMaybe (deBruijnVar i) (List.lookup i mps')))++    updateRelevance :: TCM a -> TCM a+    updateRelevance cont =+      -- Don't do anything if there is no target type info.+      caseMaybe target cont $ \ b -> do+        -- TODO (2018-10-16): if proofs get erased in the compiler, also wake erased vars!+        let m = getModality b+        applyModalityToContext m cont+     continue       :: [BlockingVar]       -> AllowPartialCover       -> (SplitError -> TCM CoverResult)       -> TCM CoverResult     continue xs allowPartialCover handle = do-      r <- altM1 (split Inductive allowPartialCover sc) xs+      r <- altM1 (\ x -> fmap (,x) <$> split Inductive allowPartialCover sc x) xs       case r of         Left err -> handle err         -- If we get the empty covering, we have reached an impossible case         -- and are done.-        Right (Covering n []) ->-          return $ CoverResult (SplittingDone (size tel)) Set.empty [] Set.empty-        Right (Covering n scs) -> do+        Right (Covering n [], _) ->+         do+          -- TODO Andrea: I guess an empty pattern is not part of the cover?+          let qs = []+          return $ CoverResult (SplittingDone (size tel)) Set.empty [] qs Set.empty+        Right (Covering n scs, x) -> do+          cs <- do+            let fallback = return cs+            caseMaybeM (getPrimitiveName' builtinHComp) fallback $ \ comp -> do+            let isComp = \case+                  SplitCon c -> comp == c+                  _ -> False+            caseMaybe (List.find (isComp . fst) scs) fallback $ \ (_, newSc) -> do+            snoc cs <$> createMissingHCompClause f n x sc newSc           results <- mapM (cover f cs) (map snd scs)-          let trees = map coverSplitTree results-              useds = map coverUsedClauses results+          let trees = map coverSplitTree      results+              useds = map coverUsedClauses    results               psss  = map coverMissingClauses results+              qsss  = map coverPatterns results               noex  = map coverNoExactClauses results           -- Jesper, 2016-03-10  We need to remember which variables were           -- eta-expanded by the unifier in order to generate a correct split           -- tree (see Issue 1872).           reportSDoc "tc.cover.split.eta" 60 $ vcat-            [ text "etaRecordSplits"+            [ "etaRecordSplits"             , nest 2 $ vcat-              [ text "n   = " <+> text (show n)-              , text "scs = " <+> prettyTCM scs-              , text "ps  = " <+> text (show ps)+              [ "n   = " <+> text (show n)+              , "scs = " <+> prettyTCM scs+              , "ps  = " <+> prettyTCMPatternList (fromSplitPatterns ps)               ]             ]+          -- TODO Andrea: do something with etaRecordSplits and qsss?           let trees' = zipWith (etaRecordSplits (unArg n) ps) scs trees               tree   = SplitAt n trees'-          return $ CoverResult tree (Set.unions useds) (concat psss) (Set.unions noex)--    tryIf :: Monad m => Bool -> m (Either err a) -> m a -> m a-    tryIf True  me m = fromRightM (const m) me-    tryIf False me m = m+          return $ CoverResult tree (Set.unions useds) (concat psss) (concat qsss) (Set.unions noex)      -- Try to split result-    splitRes :: TCM (Either CosplitError CoverResult)-    splitRes = do+    trySplitRes+      :: BlockedOnResult -- ^ Are we blocked on the result?+      -> Bool            -- ^ Is this the last thing we try?+      -> TCM CoverResult -- ^ Continuation+      -> TCM CoverResult+    -- not blocked on result: try regular splits+    trySplitRes NotBlockedOnResult finalSplit cont+      | finalSplit = __IMPOSSIBLE__ -- there must be *some* reason we are blocked+      | otherwise  = cont+    -- blocked on arguments that are not yet introduced:++    -- we must split on a variable so that the target type becomes a pi type+    trySplitRes (BlockedOnApply IsApply) finalSplit cont+      | finalSplit = __IMPOSSIBLE__ -- already ruled out by lhs checker+      | otherwise  = cont+    -- ...or it was an IApply pattern, so we might just need to introduce the variable now.+    trySplitRes (BlockedOnApply IsIApply) finalSplit cont+       = do+         caseMaybeM (splitResultPath f sc) fallback $ \ sc ->+               cover f cs . snd =<< fixTarget sc+      where+        fallback | finalSplit = __IMPOSSIBLE__ -- already ruled out by lhs checker?+                 | otherwise  = cont+    -- blocked on result but there are catchalls:+    -- try regular splits if there are any, or else throw an error,+    -- this is nicer than continuing and reporting unreachable clauses+    -- (see issue #2833)+    trySplitRes (BlockedOnProj True) finalSplit cont+      | finalSplit = typeError $ SplitError CosplitCatchall+      | otherwise  = cont+    -- all clauses have an unsplit copattern: try to split+    trySplitRes (BlockedOnProj False) finalSplit cont = do       reportSLn "tc.cover" 20 $ "blocked by projection pattern"       -- forM is a monadic map over a Maybe here-      mcov <- splitResult f sc-      Trav.forM mcov $ \ (Covering n scs) -> do-        -- If result splitting was successful, continue coverage checking.-        (projs, results) <- unzip <$> do-          mapM (traverseF $ cover f cs <=< (snd <.> fixTarget)) scs-          -- OR:-          -- forM scs $ \ (proj, sc') -> (proj,) <$> do-          --   cover f cs =<< do-          --     snd <$> fixTarget sc'-        let trees = map coverSplitTree results-            useds = map coverUsedClauses results-            psss  = map coverMissingClauses results-            noex  = map coverNoExactClauses results-            tree  = SplitAt n $ zip projs trees-        return $ CoverResult tree (Set.unions useds) (concat psss) (Set.unions noex)+      mcov <- splitResultRecord f sc+      case mcov of+        Left err+          | finalSplit -> typeError $ SplitError err+          | otherwise  -> cont+        Right (Covering n scs) -> do+          -- If result splitting was successful, continue coverage checking.+          (projs, results) <- unzip <$> do+            mapM (traverseF $ cover f cs <=< (snd <.> fixTarget)) scs+            -- OR:+            -- forM scs $ \ (proj, sc') -> (proj,) <$> do+            --   cover f cs =<< do+            --     snd <$> fixTarget sc'+          let trees = map coverSplitTree results+              useds = map coverUsedClauses results+              psss  = map coverMissingClauses results+              qsss  = map coverPatterns results+              noex  = map coverNoExactClauses results+              tree  = SplitAt n $ zip projs trees+          return $ CoverResult tree (Set.unions useds) (concat psss) (concat qsss) (Set.unions noex)      gatherEtaSplits :: Int -> SplitClause                     -> [NamedArg SplitPattern] -> [NamedArg SplitPattern]@@ -364,11 +509,16 @@            ConP  _ _ qs -> qs ++ gatherEtaSplits (-1) sc ps            LitP  _      -> gatherEtaSplits (-1) sc ps            ProjP{}      -> __IMPOSSIBLE__+           IApplyP{}    -> __IMPOSSIBLE__+           DefP  _ _ qs -> qs ++ gatherEtaSplits (-1) sc ps -- __IMPOSSIBLE__ -- Andrea: maybe?        | otherwise ->            updateNamedArg (\ _ -> p') p : gatherEtaSplits (n-1) sc ps         where p' = lookupS (scSubst sc) $ splitPatVarIndex x+      IApplyP{}   ->+           updateNamedArg (applySubst (scSubst sc)) p : gatherEtaSplits (n-1) sc ps       DotP  _ _    -> p : gatherEtaSplits (n-1) sc ps -- count dot patterns       ConP  _ _ qs -> gatherEtaSplits n sc (qs ++ ps)+      DefP  _ _ qs -> gatherEtaSplits n sc (qs ++ ps)       LitP  _      -> gatherEtaSplits n sc ps       ProjP{}      -> gatherEtaSplits n sc ps @@ -380,29 +530,265 @@       ConP c cpi qs -> SplitAt (p $> k) [(SplitCon (conName c) , addEtaSplits k (qs ++ ps) t)]       LitP  _       -> __IMPOSSIBLE__       ProjP{}       -> __IMPOSSIBLE__+      DefP{}        -> __IMPOSSIBLE__ -- Andrea: maybe?+      IApplyP{}     -> addEtaSplits (k+1) ps t      etaRecordSplits :: Int -> [NamedArg SplitPattern] -> (SplitTag,SplitClause)                     -> SplitTree -> (SplitTag,SplitTree)     etaRecordSplits n ps (q , sc) t =       (q , addEtaSplits 0 (gatherEtaSplits n sc ps) t) ++++-- | Append an hcomp clause to the clauses of a function.+createMissingHCompClause+  :: QName+       -- ^ Function name.+  -> Arg Nat -- ^ index of hcomp pattern+  -> BlockingVar -- ^ Blocking var that lead to hcomp split.+  -> SplitClause -- ^ Clause before the hcomp split+  -> SplitClause+       -- ^ Clause to add.+   -> TCM Clause+createMissingHCompClause f n x old_sc (SClause tel ps _sigma' cps (Just t)) = setCurrentRange f $ do+  reportSDoc "tc.cover.hcomp" 20 $ addContext tel $ text "Trying to create right-hand side of type" <+> prettyTCM t+  reportSDoc "tc.cover.hcomp" 30 $ addContext tel $ text "ps = " <+> prettyTCMPatternList (fromSplitPatterns ps)+  reportSDoc "tc.cover.hcomp" 30 $ text "tel = " <+> prettyTCM tel++  io      <- fromMaybe __IMPOSSIBLE__ <$> getTerm' builtinIOne+  iz      <- fromMaybe __IMPOSSIBLE__ <$> getTerm' builtinIZero+  let+    cannotCreate doc t = do+      typeError . SplitError $ CannotCreateMissingClause f (tel,fromSplitPatterns ps) doc t+  let old_ps = patternsToElims $ fromSplitPatterns $ scPats old_sc+      old_t  = fromJust $ scTarget old_sc+      old_tel = scTel old_sc+      -- old_tel = Γ(x:H)Δ+      -- Γ(x:H)Δ ⊢ old_t+      -- vs = iApplyVars old_ps+      -- [ α ⇒ b ] = [(i,f old_ps (i=0),f old_ps (i=1)) | i <- vs]++      -- Γ(x:H)(δ : Δ) ⊢ [ α ⇒ b ]+      -- Γ(x:H)Δ ⊢ f old_ps : old_t [ α ⇒ b ]+      -- Γ,φ,u,u0,Δ(x = hcomp φ u u0) ⊢ rhs_we_define : (old_t[ α ⇒ b ])(x = hcomp φ u u0)++      -- Extra assumption:+      -- tel = Γ,φ,u,u0,Δ(x = hcomp φ u u0),Δ'+      -- ps = old_ps[x = hcomp φ u u0],ps'+      -- with Δ' and ps' introduced by fixTarget.+      -- So final clause will be:+      -- tel ⊢ ps ↦ rhs_we_define{wkS ..} ps'+      getLevel t = do+        s <- reduce $ getSort t+        case s of+          Type l -> pure (Level l)+          s      -> do+            reportSDoc "tc.cover.hcomp" 20 $ text "getLevel, s = " <+> prettyTCM s+            typeError . GenericDocError =<<+                    (text "The sort of" <+> prettyTCM t <+> text "should be of the form \"Set l\"")++      -- Γ ⊢ hdelta = (x : H)(δ : Δ)+      (gamma,hdelta@(ExtendTel hdom delta)) = splitTelescopeAt (size old_tel - (blockingVarNo x + 1)) old_tel++      -- Γ,φ,u,u0,Δ(x = hcomp φ u u0) ⊢+      (working_tel,_deltaEx) = splitTelescopeAt (size gamma + 3 + size delta) tel++      -- Γ,φ,u,u0,(x:H)(δ : Δ) ⊢ rhoS : Γ(x:H)(δ : Δ)+      rhoS = liftS (size hdelta) $ raiseS 3+      vs = iApplyVars (scPats old_sc)++  -- Γ(x:H)(δ : Δ) ⊢ [ α ⇒ b ] = [(i,f old_ps (i=0),f old_ps (i=1)) | i <- vs]+  alphab <- forM vs $ \ i -> do+               let+                 -- Γ(x:H)(δ : Δ) ⊢+                 tm = Def f old_ps+               -- TODO only reduce IApply _ _ (0/1), as to avoid termination problems+               (l,r) <- reduce (inplaceS i iz `applySubst` tm, inplaceS i io `applySubst` tm)+               return $ (var i, (l, r))++++  cl <- do+    (ty,rhs) <- addContext working_tel $ do+      -- Γ(x:H)Δ ⊢ g = f old_ps : old_t [ α ⇒ b ]+      -- Γ(x:H)(δ : Δ) ⊢ [ α ⇒ b ]+      -- Γ,φ,u,u0 ⊢ Δf = i.Δ[x = hfill φ u u0 i]+      -- Γ,φ,u,u0,δ : Δ(x = hcomp φ u u0) ⊢ δ_fill     = i.tFillTel (i. Δf[~i]) δ (~ i) : i.Δf[i]+      -- Γ,φ,u,u0,δ : Δ(x = hcomp φ u u0) ⊢ old_t_fill = i.old_t[x = hfill φ u u0 i, δ_fill[i]]+      -- Γ,φ,u,u0,δ : Δ(x = hcomp φ u u0) ⊢ comp (\ i. old_t_fill[i])+      --                 (\ i. [ φ ↦ g[x = hfill φ u u0 i,δ_fill[i]] = g[u i,δ_fill[i]]+      --                         α ↦ b[x = hfill φ u u0 i,δ_fill[i]]+      --                        ])+      --                 (g[x = u0,δ_fill[0]]) : old_t[x = hcomp φ u u0,δ]++      runNamesT [] $ do+          tPOr <- fromMaybe __IMPOSSIBLE__ <$> getTerm' builtinPOr+          tIMax <- fromMaybe __IMPOSSIBLE__ <$> getTerm' builtinIMax+          tIMin <- fromMaybe __IMPOSSIBLE__ <$> getTerm' builtinIMin+          tINeg <- fromMaybe __IMPOSSIBLE__ <$> getTerm' builtinINeg+          tHComp <- fromMaybe __IMPOSSIBLE__ <$> getTerm' builtinHComp+          tTrans <- fromMaybe __IMPOSSIBLE__ <$> getTerm' builtinTrans+          extra_ps <- open $ patternsToElims $ fromSplitPatterns $ drop (length old_ps) ps+          let+            ineg j = pure tINeg <@> j+            imax i j = pure tIMax <@> i <@> j+            imin i j = pure tIMin <@> i <@> j+            trFillTel' a b c d = do+              m <- trFillTel <$> a <*> b <*> c <*> d+              x <- lift $ runExceptT m+              case x of+                Left bad_t -> cannotCreate "Cannot transport with type family:" bad_t+                Right args -> return args+          comp <- do+            let forward la bA r u = pure tTrans <#> (lam "i" $ \ i -> la <@> (i `imax` r))+                                              <@> (lam "i" $ \ i -> bA <@> (i `imax` r))+                                              <@> r+                                              <@> u+            return $ \ la bA phi u u0 ->+              pure tHComp <#> (la <@> pure io) <#> (bA <@> pure io) <#> phi+                        <@> (lam "i" $ \ i -> ilam "o" $ \ o ->+                                forward la bA i (u <@> i <..> o))+                        <@> forward la bA (pure iz) u0+          let+            hcomp la bA phi u u0 = pure tHComp <#> la <#> bA+                                               <#> phi+                                               <@> u+                                               <@> u0++            hfill la bA phi u u0 i = hcomp la bA+                                               (pure tIMax <@> phi <@> (pure tINeg <@> i))+                                               (lam "j" $ \ j -> pure tPOr <#> la <@> phi <@> (pure tINeg <@> i) <#> (ilam "o" $ \ _ -> bA)+                                                     <@> (ilam "o" $ \ o -> u <@> (pure tIMin <@> i <@> j) <..> o)+                                                     <@> (ilam "o" $ \ _ -> u0)+                                                   )+                                               u0+          -- Γ,φ,u,u0,(δ : Δ(x = hcomp φ u u0)) ⊢ hcompS : Γ(x:H)(δ : Δ)+          hcompS <- lift $ do+            hdom <- pure $ raise 3 hdom+            let+              [phi,u,u0] = map (pure . var) [2,1,0]+              htype = pure $ unEl . unDom $ hdom+              lvl = getLevel $ unDom hdom+            hc <- pure tHComp <#> lvl <#> htype+                                      <#> phi+                                      <@> u+                                      <@> u0+            return $ liftS (size delta) $ hc `consS` raiseS 3+          -- Γ,φ,u,u0,Δ(x = hcomp phi u u0) ⊢ raise 3+|Δ| hdom+          hdom <- pure $ raise (3+size delta) hdom+          htype <- open $ unEl . unDom $ hdom+          lvl <- open =<< (lift . getLevel $ unDom hdom)++          -- Γ,φ,u,u0,Δ(x = hcomp phi u u0) ⊢+          [phi,u,u0] <- mapM (open . raise (size delta) . var) [2,1,0]+          -- Γ,x,Δ ⊢ f old_ps+          -- Γ ⊢ abstract hdelta (f old_ps)+          g <- open $ raise (3+size delta) $ abstract hdelta (Def f old_ps)+          old_t <- open $ raise (3+size delta) $ abstract hdelta (unArg old_t)+          let bapp a x = lazyAbsApp <$> a <*> x+          (delta_fill :: NamesT TCM (Abs Args)) <- (open =<<) $ do+            -- Γ,φ,u,u0,Δ(x = hcomp phi u u0) ⊢ x.Δ+            delta <- open $ raise (3+size delta) delta+            -- Γ,φ,u,u0,Δ(x = hcomp phi u u0) ⊢ i.Δ(x = hfill phi u u0 (~ i))+            deltaf <- open =<< bind "i" (\ i ->+                           (delta `bapp` hfill lvl htype phi u u0 (ineg i)))+            -- Γ,φ,u,u0,Δ(x = hcomp phi u u0) ⊢ Δ(x = hcomp phi u u0) = Δf[0]+            args <- (open =<<) $ teleArgs <$> (lazyAbsApp <$> deltaf <*> pure iz)+            bind "i" $ \ i -> addContext ("i" :: String) $ do -- for error messages.+              -- Γ,φ,u,u0,Δ(x = hcomp phi u u0),(i:I) ⊢ ... : Δ(x = hfill phi u u0 i)+              trFillTel' deltaf (pure iz) args (ineg i)+          let+            apply_delta_fill i f = apply <$> f <*> (delta_fill `bapp` i)+            call v i = apply_delta_fill i $ g <@> v+          ty <- do+                return $ \ i -> do+                    v <- hfill lvl htype phi u u0 i+                    hd <- old_t+                    args <- delta_fill `bapp` i+                    lift $ piApplyM hd $ [Arg (domInfo hdom) v] ++ args+          ty_level <- do+            t <- bind "i" ty+            s <- reduce $ getSort (absBody t)+            reportSDoc "tc.cover.hcomp" 20 $ text "ty_level, s = " <+> prettyTCM s+            case s of+              Type l -> open =<< (lam "i" $ \ _ -> pure $ Level l)+              _      -> cannotCreate "Cannot compose with type family:" =<< (liftTCM $ buildClosure t)++          let+            pOr_ty i phi psi u0 u1 = pure tPOr <#> (ty_level <@> i)+                                               <@> phi <@> psi+                                               <#> (ilam "o" $ \ _ -> unEl <$> ty i) <@> u0 <@> u1+          alpha <- do+            vars <- mapM (open . applySubst hcompS . fst) alphab+            return $ foldr imax (pure iz) $ map (\ v -> v `imax` ineg v) vars++          -- Γ,φ,u,u0,Δ(x = hcomp φ u u0) ⊢ b : (i : I) → [α] -> old_t[x = hfill φ u u0 i,δ_fill[i]]+          b <- do+             sides <- forM alphab $ \ (psi,(side0,side1)) -> do+                psi <- open $ hcompS `applySubst` psi++                [side0,side1] <- mapM (open . raise (3+size delta) . abstract hdelta) [side0,side1]+                return $ (ineg psi `imax` psi, \ i -> pOr_ty i (ineg psi) psi (ilam "o" $ \ _ -> apply_delta_fill i $ side0 <@> hfill lvl htype phi u u0 i)+                                                            (ilam "o" $ \ _ -> apply_delta_fill i $ side1 <@> hfill lvl htype phi u u0 i))+             let recurse []           i = __IMPOSSIBLE__+                 recurse [(psi,u)]    i = u i+                 recurse ((psi,u):xs) i = pOr_ty i psi (foldr imax (pure iz) (map fst xs)) (u i) (recurse xs i)+             return $ recurse sides++          ((,) <$> ty (pure io) <*>) $ do+            comp ty_level+               (lam "i" $ \ i -> unEl <$> ty i)+                           (phi `imax` alpha)+                           (lam "i" $ \ i ->+                               let rhs = (ilam "o" $ \ o -> call (u <@> i <..> o) i)+                               in if null alphab then rhs else+                                   pOr_ty i phi alpha rhs (b i)+                           )+                           (call u0 (pure iz))+    reportSDoc "tc.cover.hcomp" 20 $ text "old_tel =" <+> prettyTCM tel+    let n = size tel - (size gamma + 3 + size delta)+    reportSDoc "tc.cover.hcomp" 20 $ text "n =" <+> text (show n)+    (TelV deltaEx t,bs) <- telViewUpToPathBoundary' n ty+    rhs <- pure $ raise n rhs `applyE` teleElims deltaEx bs++    cxt <- getContextTelescope+    reportSDoc "tc.cover.hcomp" 30 $ text "cxt = " <+> prettyTCM cxt+    reportSDoc "tc.cover.hcomp" 30 $ text "tel = " <+> prettyTCM tel+    reportSDoc "tc.cover.hcomp" 20 $ addContext tel $ text "t = " <+> prettyTCM t+    reportSDoc "tc.cover.hcomp" 20 $ addContext tel $ text "rhs = " <+> prettyTCM rhs++    return $ Clause { clauseLHSRange  = noRange+                    , clauseFullRange = noRange+                    , clauseTel       = tel+                    , namedClausePats = fromSplitPatterns ps+                    , clauseBody      = Just $ rhs+                    , clauseType      = Just $ defaultArg t+                    , clauseCatchall  = False+                    , clauseUnreachable = Just False  -- missing, thus, not unreachable+                    }+  addClauses f [cl]  -- Important: add at the end.+  return cl+createMissingHCompClause _ _ _ _ (SClause _ _ _ _ Nothing) = __IMPOSSIBLE__+ -- | Append a instance clause to the clauses of a function. inferMissingClause   :: QName        -- ^ Function name.   -> SplitClause        -- ^ Clause to add.  Clause hiding (in 'clauseType') must be 'Instance'.-   -> TCM ()+   -> TCM (Closure Clause) inferMissingClause f (SClause tel ps _ cps (Just t)) = setCurrentRange f $ do-  reportSDoc "tc.cover.infer" 20 $ addContext tel $ text "Trying to infer right-hand side of type" <+> prettyTCM t+  reportSDoc "tc.cover.infer" 20 $ addContext tel $ "Trying to infer right-hand side of type" <+> prettyTCM t   cl <- addContext tel-        $ locally eCheckpoints (const cps)+        $ locallyTC eCheckpoints (const cps)         $ checkpoint IdS $ do    -- introduce a fresh checkpoint     (_x, rhs) <- case getHiding t of-                  Instance{} -> newIFSMeta "" (unArg t)+                  Instance{} -> newInstanceMeta "" (unArg t)                   Hidden     -> __IMPOSSIBLE__                   NotHidden  -> __IMPOSSIBLE__-    return $ Clause { clauseLHSRange  = noRange+    buildClosure $+             Clause { clauseLHSRange  = noRange                     , clauseFullRange = noRange                     , clauseTel       = tel                     , namedClausePats = fromSplitPatterns ps@@ -411,7 +797,8 @@                     , clauseCatchall  = False                     , clauseUnreachable = Just False  -- missing, thus, not unreachable                     }-  addClauses f [cl]  -- Important: add at the end.+  addClauses f [clValue cl]  -- Important: add at the end.+  return cl inferMissingClause _ (SClause _ _ _ _ Nothing) = __IMPOSSIBLE__  splitStrategy :: BlockingVars -> Telescope -> TCM BlockingVars@@ -431,36 +818,41 @@     allConstructors = isJust . snd -} + -- | Check that a type is a non-irrelevant datatype or a record with -- named constructor. Unless the 'Induction' argument is 'CoInductive' -- the data type must be inductive. isDatatype :: (MonadTCM tcm, MonadError SplitError tcm) =>               Induction -> Dom Type ->-              tcm (QName, [Arg Term], [Arg Term], [QName])+              tcm (DataOrRecord, QName, [Arg Term], [Arg Term], [QName], Bool) isDatatype ind at = do   let t       = unDom at       throw f = throwError . f =<< do liftTCM $ buildClosure t   t' <- liftTCM $ reduce t+  mInterval <- liftTCM $ getBuiltinName' builtinInterval+  mIsOne <- liftTCM $ getBuiltinName' builtinIsOne   case unEl t' of+    Def d [] | Just d == mInterval -> throw NotADatatype+    Def d [Apply phi] | Just d == mIsOne -> do+                xs <- liftTCM $ decomposeInterval =<< reduce (unArg phi)+                if null xs+                   then return $ (IsData, d, [phi], [], [], False)+                   else throw NotADatatype     Def d es -> do       let ~(Just args) = allApplyElims es       def <- liftTCM $ theDef <$> getConstInfo d-      splitOnIrrelevantDataAllowed <- liftTCM $ optExperimentalIrrelevance <$> pragmaOptions       case def of         Datatype{dataPars = np, dataCons = cs, dataInduction = i}           | i == CoInductive && ind /= CoInductive ->               throw CoinductiveDatatype-          -- Andreas, 2011-10-03 allow some splitting on irrelevant data (if only one constr. matches)-          | isIrrelevant at && not splitOnIrrelevantDataAllowed ->-              throw IrrelevantDatatype           | otherwise -> do               let (ps, is) = splitAt np args-              return (d, ps, is, cs)+              return (IsData, d, ps, is, cs, not $ null (dataPathCons def))         Record{recPars = np, recConHead = con, recInduction = i}           | i == Just CoInductive && ind /= CoInductive ->               throw CoinductiveDatatype           | otherwise ->-              return (d, args, [], [conName con])+              return (IsRecord, d, args, [], [conName con], False)         _ -> throw NotADatatype     _ -> throw NotADatatype @@ -471,22 +863,22 @@ fixTarget sc@SClause{ scTel = sctel, scPats = ps, scSubst = sigma, scCheckpoints = cps, scTarget = target } =   caseMaybe target (return (empty, sc)) $ \ a -> do     reportSDoc "tc.cover.target" 20 $ sep-      [ text "split clause telescope: " <+> prettyTCM sctel-      , text "old patterns          : " <+> do+      [ "split clause telescope: " <+> prettyTCM sctel+      , "old patterns          : " <+> do           addContext sctel $ prettyTCMPatternList $ fromSplitPatterns ps       ]     reportSDoc "tc.cover.target" 60 $ sep-      [ text "substitution          : " <+> text (show sigma)+      [ "substitution          : " <+> prettyTCM sigma       ]     reportSDoc "tc.cover.target" 30 $ sep-      [ text "target type before substitution (variables may be wrong): " <+> do+      [ "target type before substitution (variables may be wrong): " <+> do           addContext sctel $ prettyTCM a       ]-    TelV tel b <- telView $ applySplitPSubst sigma $ unArg a+    (TelV tel b) <- telViewUpTo (-1) $ applySplitPSubst sigma $ unArg a     reportSDoc "tc.cover.target" 15 $ sep-      [ text "target type telescope (after substitution): " <+> do+      [ "target type telescope (after substitution): " <+> do           addContext sctel $ prettyTCM tel-      , text "target type core      (after substitution): " <+> do+      , "target type core      (after substitution): " <+> do           addContext sctel $ addContext tel $ prettyTCM b       ]     let n         = size tel@@ -508,21 +900,21 @@           }     -- Separate debug printing to find cause of crash (Issue 1374)     reportSDoc "tc.cover.target" 30 $ sep-      [ text "new split clause telescope   : " <+> prettyTCM sctel'+      [ "new split clause telescope   : " <+> prettyTCM sctel'       ]     reportSDoc "tc.cover.target" 30 $ sep-      [ text "new split clause patterns    : " <+> do+      [ "new split clause patterns    : " <+> do           addContext sctel' $ prettyTCMPatternList $ fromSplitPatterns ps'       ]     reportSDoc "tc.cover.target" 60 $ sep-      [ text "new split clause substitution: " <+> text (show $ scSubst sc')+      [ "new split clause substitution: " <+> prettyTCM (scSubst sc')       ]     reportSDoc "tc.cover.target" 30 $ sep-      [ text "new split clause target      : " <+> do+      [ "new split clause target      : " <+> do           addContext sctel' $ prettyTCM $ fromJust newTarget       ]     reportSDoc "tc.cover.target" 20 $ sep-      [ text "new split clause"+      [ "new split clause"       , prettyTCM sc'       ]     return $ if n == 0 then (empty, sc { scTarget = newTarget }) else (tel, sc')@@ -534,6 +926,69 @@   | visible ai = setOrigin UserWritten ai   | otherwise  = setOrigin Inserted ai +computeHCompSplit  :: Telescope   -- ^ Telescope before split point.+  -> PatVarName                   -- ^ Name of pattern variable at split point.+  -> Telescope                    -- ^ Telescope after split point.+  -> QName                        -- ^ Name of datatype to split at.+  -> Args                         -- ^ Data type parameters.+  -> Args                         -- ^ Data type indices.+  -> Nat                          -- ^ Index of split variable.+  -> Telescope                    -- ^ Telescope for the patterns.+  -> [NamedArg SplitPattern]      -- ^ Patterns before doing the split.+  -> Map CheckpointId Substitution -- ^ Current checkpoints+  -- -> QName                        -- ^ Constructor to fit into hole.+  -> CoverM (Maybe (SplitTag,SplitClause))   -- ^ New split clause if successful.+computeHCompSplit delta1 n delta2 d pars ixs hix tel ps cps = do+    -- Get the type of the datatype+  -- Δ1 ⊢ dtype+  dsort <- liftTCM $ (parallelS (reverse $ map unArg pars) `applySubst`) . dataSort . theDef <$> getConstInfo d+  hCompName <- fromMaybe __IMPOSSIBLE__ <$> getPrimitiveName' builtinHComp+  theHCompT <- defType <$> getConstInfo hCompName+  let+    dlvl = Level . (\ (Type s) -> s) $ dsort+    dterm = Def d [] `apply` (pars ++ ixs)+  -- Δ1 ⊢ gamma+  TelV gamma _ <- lift $ telView (theHCompT `piApply` [setHiding Hidden $ defaultArg $ dlvl , defaultArg $ dterm])+  case (delta1 `abstract` gamma,IdS) of+    (delta1',rho0) -> do+--      debugSubst "rho0" rho0++      -- We have Δ₁' ⊢ ρ₀ : Δ₁Γ, so split it into the part for Δ₁ and the part for Γ+      let (rho1,rho2) = splitS (size gamma) $ toSplitPSubst rho0++      -- Andreas, 2015-05-01  I guess it is fine to use no @conPType@+      -- as the result of splitting is never used further down the pipeline.+      -- After splitting, Agda reloads the file.+      -- Andreas, 2017-09-03, issue #2729: remember that pattern was generated by case split.+      let+          -- cpi  = noConPatternInfo{ conPRecord = Just PatOSplit }+          -- conp = ConP con cpi $ applySubst rho2 $+          --          map (mapArgInfo hiddenInserted) $ tele2NamedArgs gamma0 gamma+          -- -- Andreas, 2016-09-08, issue #2166: use gamma0 for correct argument names+          defp = DefP PatOSystem hCompName . map (setOrigin Inserted) $+                   map (fmap unnamed) [setHiding Hidden $ defaultArg $ applySubst rho1 $ DotP PatOSystem $ dlvl+                                      ,setHiding Hidden $ defaultArg $ applySubst rho1 $ DotP PatOSystem $ dterm]+                   ++ applySubst rho2 (teleNamedArgs gamma) -- rho0?+      -- Compute final context and substitution+      let rho3    = consS defp rho1            -- Δ₁' ⊢ ρ₃ : Δ₁(x:D)+          delta2' = applySplitPSubst rho3 delta2  -- Δ₂' = Δ₂ρ₃+          delta'  = delta1' `abstract` delta2' -- Δ'  = Δ₁'Δ₂'+          rho     = liftS (size delta2) rho3   -- Δ' ⊢ ρ : Δ₁(x:D)Δ₂++      -- debugTel "delta'" delta'+      -- debugSubst "rho" rho+      -- debugPs tel ps++      -- Apply the substitution+      let ps' = applySubst rho ps+      -- debugPlugged delta' ps'++      let cps' = applySplitPSubst rho cps++      return $ Just . (SplitCon hCompName,) $ SClause delta' ps' rho cps' Nothing -- target fixed later+++ -- | @computeNeighbourhood delta1 delta2 d pars ixs hix tel ps con@ -- --   @@@ -577,11 +1032,11 @@   ctype <- liftTCM $ defType <$> getConInfo con    -- Lookup the type of the constructor at the given parameters-  (gamma0, cixs) <- do-    TelV gamma0 (El _ d) <- liftTCM $ telView (ctype `piApply` pars)+  (gamma0, cixs, boundary) <- do+    (TelV gamma0 (El _ d), boundary) <- liftTCM $ telViewPathBoundaryP (ctype `piApply` pars)     let Def _ es = d         Just cixs = allApplyElims es-    return (gamma0, cixs)+    return (gamma0, cixs, boundary)    -- Andreas, 2012-02-25 preserve name suggestion for recursive arguments   -- of constructor@@ -617,16 +1072,18 @@     Unifies (delta1',rho0,_) -> do       debugSubst "rho0" rho0 +      let rho0' = toSplitPSubst rho0+       -- We have Δ₁' ⊢ ρ₀ : Δ₁Γ, so split it into the part for Δ₁ and the part for Γ-      let (rho1,rho2) = splitS (size gamma) $ toSplitPSubst rho0+      let (rho1,rho2) = splitS (size gamma) $ rho0'        -- Andreas, 2015-05-01  I guess it is fine to use no @conPType@       -- as the result of splitting is never used further down the pipeline.       -- After splitting, Agda reloads the file.       -- Andreas, 2017-09-03, issue #2729: remember that pattern was generated by case split.       let cpi  = noConPatternInfo{ conPRecord = Just PatOSplit }-          conp = ConP con cpi $ applySubst rho2 $-                   map (mapArgInfo hiddenInserted) $ tele2NamedArgs gamma0 gamma+          conp = ConP con cpi $ applySubst rho0' $+                   map (mapArgInfo hiddenInserted) $ telePatterns' (tele2NamedArgs gamma0) gamma boundary           -- Andreas, 2016-09-08, issue #2166: use gamma0 for correct argument names        -- Compute final context and substitution@@ -650,20 +1107,20 @@   where     debugInit con ctype d pars ixs cixs delta1 delta2 gamma tel ps hix =       liftTCM $ reportSDoc "tc.cover.split.con" 20 $ vcat-        [ text "computeNeighbourhood"+        [ "computeNeighbourhood"         , nest 2 $ vcat-          [ text "context=" <+> (inTopContext . prettyTCM =<< getContextTelescope)-          , text "con    =" <+> prettyTCM con-          , text "ctype  =" <+> prettyTCM ctype-          , text "ps     =" <+> do inTopContext $ addContext tel $ prettyTCMPatternList $ fromSplitPatterns ps-          , text "d      =" <+> prettyTCM d-          , text "pars   =" <+> do prettyList $ map prettyTCM pars-          , text "ixs    =" <+> do addContext delta1 $ prettyList $ map prettyTCM ixs-          , text "cixs   =" <+> do addContext gamma  $ prettyList $ map prettyTCM cixs-          , text "delta1 =" <+> do inTopContext $ prettyTCM delta1-          , text "delta2 =" <+> do inTopContext $ addContext delta1 $ addContext gamma $ prettyTCM delta2-          , text "gamma  =" <+> do inTopContext $ addContext delta1 $ prettyTCM gamma-          , text "hix    =" <+> text (show hix)+          [ "context=" <+> (inTopContext . prettyTCM =<< getContextTelescope)+          , "con    =" <+> prettyTCM con+          , "ctype  =" <+> prettyTCM ctype+          , "ps     =" <+> do inTopContext $ addContext tel $ prettyTCMPatternList $ fromSplitPatterns ps+          , "d      =" <+> prettyTCM d+          , "pars   =" <+> do prettyList $ map prettyTCM pars+          , "ixs    =" <+> do addContext delta1 $ prettyList $ map prettyTCM ixs+          , "cixs   =" <+> do addContext gamma  $ prettyList $ map prettyTCM cixs+          , "delta1 =" <+> do inTopContext $ prettyTCM delta1+          , "delta2 =" <+> do inTopContext $ addContext delta1 $ addContext gamma $ prettyTCM delta2+          , "gamma  =" <+> do inTopContext $ addContext delta1 $ prettyTCM gamma+          , "hix    =" <+> text (show hix)           ]         ] @@ -686,13 +1143,13 @@     debugPs tel ps =       liftTCM $ reportSDoc "tc.cover.split.con" 20 $         inTopContext $ addContext tel $ nest 2 $ vcat-          [ text "ps     =" <+> prettyTCMPatternList (fromSplitPatterns ps)+          [ "ps     =" <+> prettyTCMPatternList (fromSplitPatterns ps)           ] -    debugPlugged delta' ps' =+    debugPlugged delta' ps' = do       liftTCM $ reportSDoc "tc.cover.split.con" 20 $         inTopContext $ addContext delta' $ nest 2 $ vcat-          [ text "ps'    =" <+> do prettyTCMPatternList $ fromSplitPatterns ps'+          [ "ps'    =" <+> do prettyTCMPatternList $ fromSplitPatterns ps'           ]  -- | Introduce trailing pattern variables via 'fixTarget'?@@ -709,7 +1166,8 @@  -- | Entry point from @Interaction.MakeCase@. splitClauseWithAbsurd :: SplitClause -> Nat -> TCM (Either SplitError (Either SplitClause Covering))-splitClauseWithAbsurd c x = split' Inductive NoAllowPartialCover NoFixTarget c (BlockingVar x [] [] True)+splitClauseWithAbsurd c x =+  split' CheckEmpty Inductive NoAllowPartialCover NoFixTarget c (BlockingVar x [] [] True)   -- Andreas, 2016-05-03, issue 1950:   -- Do not introduce trailing pattern vars after split,   -- because this does not work for with-clauses.@@ -742,7 +1200,7 @@       -> BlockingVar       -> TCM (Either SplitError Covering) split ind allowPartialCover sc x =-  fmap blendInAbsurdClause <$> split' ind allowPartialCover YesFixTarget sc x+  fmap blendInAbsurdClause <$> split' NoCheckEmpty ind allowPartialCover YesFixTarget sc x   where     n = lookupPatternVar sc $ blockingVarNo x     blendInAbsurdClause :: Either SplitClause Covering -> Covering@@ -759,9 +1217,12 @@             else fromMaybe __IMPOSSIBLE__ $ permPicks perm !!! k         perm = fromMaybe __IMPOSSIBLE__ $ dbPatPerm $ fromSplitPatterns pats         k = size tel - x - 1-        arg = telVars (size tel) tel !! k+        arg = indexWithDefault __IMPOSSIBLE__ (telVars (size tel) tel) k --- | @split' ind splitClause x = return res@++data CheckEmpty = CheckEmpty | NoCheckEmpty++-- | @split' ind pc ft splitClause x = return res@ --   splits @splitClause@ at pattern var @x@ (de Bruijn index). -- --   Possible results @res@ are:@@ -775,7 +1236,11 @@ --   3. @Right (Right covering)@: --      A covering set of split clauses, one for each valid constructor. -split' :: Induction+split' :: CheckEmpty+          -- ^ Use isEmptyType to check whether the type of the variable to+          -- split on is empty. This switch is necessary to break the cycle+          -- between split' and isEmptyType.+       -> Induction           -- ^ Coinductive constructors are allowed if this argument is           -- 'CoInductive'.        -> AllowPartialCover@@ -786,26 +1251,31 @@        -> SplitClause        -> BlockingVar        -> TCM (Either SplitError (Either SplitClause Covering))-split' ind allowPartialCover fixtarget sc@(SClause tel ps _ cps target) (BlockingVar x pcons' plits overlap) =+split' checkEmpty ind allowPartialCover fixtarget+       sc@(SClause tel ps _ cps target) (BlockingVar x pcons' plits overlap) =  liftTCM $ runExceptT $ do-   debugInit tel x ps cps    -- Split the telescope at the variable   -- t = type of the variable,  Δ₁ ⊢ t   (n, t, delta1, delta2) <- do-    let (tel1, Dom info (n, t) : tel2) = splitAt (size tel - x - 1) $ telToList tel-    return (n, Dom info t, telFromList tel1, telFromList tel2)+    let (tel1, dom : tel2) = splitAt (size tel - x - 1) $ telToList tel+    return (fst $ unDom dom, snd <$> dom, telFromList tel1, telFromList tel2)    -- Compute the neighbourhoods for the constructors   let computeNeighborhoods = do         -- Check that t is a datatype or a record         -- Andreas, 2010-09-21, isDatatype now directly throws an exception if it fails         -- cons = constructors of this datatype-        (d, pars, ixs, cons) <- inContextOfT $ isDatatype ind t-        mns <- forM cons $ \ con -> fmap (SplitCon con,) <$>+        (dr, d, pars, ixs, cons', isHIT) <- inContextOfT $ isDatatype ind t+        cons <- case checkEmpty of+          CheckEmpty   -> ifM (liftTCM $ inContextOfT $ isEmptyType $ unDom t) (pure []) (pure cons')+          NoCheckEmpty -> pure cons'+        mns  <- forM cons $ \ con -> fmap (SplitCon con,) <$>           computeNeighbourhood delta1 n delta2 d pars ixs x tel ps cps con-        return $ catMaybes mns+        hcompsc <- if isHIT then case fixtarget of YesFixTarget -> computeHCompSplit delta1 n delta2 d pars ixs x tel ps cps; _ -> return Nothing+                            else return Nothing+        return $ (dr, catMaybes (mns ++ [hcompsc]))        computeLitNeighborhoods = do         typeOk <- liftTCM $ do@@ -829,9 +1299,9 @@               rho    = liftS x $ consS varp $ raiseS 1               ps'    = applySubst rho ps           return (SplitCatchall , SClause delta' ps' rho cps Nothing)-        return $ ns ++ [ ca ]+        return (IsData , ns ++ [ ca ]) -  ns <- if null pcons' && not (null plits)+  (dr, ns) <- if null pcons' && not (null plits)         then computeLitNeighborhoods         else computeNeighborhoods @@ -840,6 +1310,14 @@     YesFixTarget -> lift $ forM ns $ \(con,sc) ->       (con,) . snd <$> fixTarget sc{ scTarget = target } +  -- Andreas, 2018-10-27, issue #3324; use isPropM.+  -- Need to reduce sort to decide on Prop.+  -- Cannot split if domain is a Prop but target is relevant.+  propArrowRel <- isPropM t `and2M`+    maybe (return True) (not <.> isPropM) target++  mHCompName <- getPrimitiveName' builtinHComp+   case ns of     []  -> do       let absurdp = VarP PatOAbsurd $ SplitPatVar underscore 0 []@@ -853,29 +1331,37 @@                , scTarget             = Nothing                } -    -- Andreas, 2011-10-03-    -- if more than one constructor matches, we cannot be irrelevant-    -- (this piece of code is unreachable if --experimental-irrelevance is off)-    (_ : _ : _) | unusableRelevance (getRelevance t) ->-      throwError . IrrelevantDatatype =<< do liftTCM $ buildClosure (unDom t)+    -- Jesper, 2018-05-24: If the datatype is in Prop we can+    -- only do empty splits, unless the target is in Prop too.+    (_ : _) | dr == IsData && propArrowRel ->+      throwError . IrrelevantDatatype =<< do liftTCM $ inContextOfT $ buildClosure (unDom t) -  -- Andreas, 2012-10-10 fail if precomputed constructor set does not cover-  -- all the data type constructors-  -- Andreas, 2017-10-08 ... unless partial covering is explicitly allowed.-    _ | allowPartialCover == NoAllowPartialCover,-        overlap == False,-        let ptags = map (SplitCon . conName) pcons' ++ map SplitLit plits,-        let tags  = map fst ns,-        let diff  = Set.fromList tags Set.\\ Set.fromList ptags,-        not (Set.null diff) -> do-          liftTCM $ reportSDoc "tc.cover.precomputed" 10 $ vcat-            [ hsep $ text "ptags =" : map prettyTCM ptags-            , hsep $ text "tags  =" : map prettyTCM tags-            ]-          throwError (GenericSplitError "precomputed set of constructors does not cover all cases")+    -- Andreas, 2018-10-17: If more than one constructor matches, we cannot erase.+    (_ : _ : _) | not (usableQuantity t) ->+      throwError . ErasedDatatype =<< do liftTCM $ inContextOfT $ buildClosure (unDom t) -    _  -> do-      liftTCM $ checkSortOfSplitVar $ unDom t+    _ -> do++      -- Andreas, 2012-10-10 fail if precomputed constructor set does not cover+      -- all the data type constructors+      -- Andreas, 2017-10-08 ... unless partial covering is explicitly allowed.+      let ptags = map (SplitCon . conName) pcons' ++ map SplitLit plits+      -- clauses for hcomp will be automatically generated.+      let inferred_tags = maybe Set.empty (Set.singleton . SplitCon) mHCompName+      let all_tags = Set.fromList ptags `Set.union` inferred_tags++      when (allowPartialCover == NoAllowPartialCover && overlap == False) $+        for_ ns $ \(tag, sc) -> do+          when (not $ tag `Set.member` all_tags) $ do+            isImpossibleClause <- liftTCM $ isEmptyTel $ scTel sc+            unless isImpossibleClause $ do+              liftTCM $ reportSDoc "tc.cover" 10 $ vcat+                [ text "Missing case for" <+> prettyTCM tag+                , nest 2 $ prettyTCM sc+                ]+              throwError (GenericSplitError "precomputed set of constructors does not cover all cases")++      liftTCM $ checkSortOfSplitVar dr (unDom t) target       return $ Right $ Covering (lookupPatternVar sc x) ns    where@@ -886,54 +1372,58 @@     -- Debug printing     debugInit tel x ps cps = liftTCM $ inTopContext $ do       reportSDoc "tc.cover.top" 10 $ vcat-        [ text "TypeChecking.Coverage.split': split"+        [ "TypeChecking.Coverage.split': split"         , nest 2 $ vcat-          [ text "tel     =" <+> prettyTCM tel-          , text "x       =" <+> prettyTCM x-          , text "ps      =" <+> do addContext tel $ prettyTCMPatternList $ fromSplitPatterns ps-          , text "cps     =" <+> prettyTCM cps+          [ "tel     =" <+> prettyTCM tel+          , "x       =" <+> prettyTCM x+          , "ps      =" <+> do addContext tel $ prettyTCMPatternList $ fromSplitPatterns ps+          , "cps     =" <+> prettyTCM cps           ]         ]      debugHoleAndType delta1 delta2 s ps t =       liftTCM $ reportSDoc "tc.cover.top" 10 $ nest 2 $ vcat $-        [ text "p      =" <+> text (patVarNameToString s)-        , text "ps     =" <+> text (show ps)-        , text "delta1 =" <+> prettyTCM delta1-        , text "delta2 =" <+> inContextOfDelta2 (prettyTCM delta2)-        , text "t      =" <+> inContextOfT (prettyTCM t)+        [ "p      =" <+> text (patVarNameToString s)+        , "ps     =" <+> prettyTCMPatternList ps+        , "delta1 =" <+> prettyTCM delta1+        , "delta2 =" <+> inContextOfDelta2 (prettyTCM delta2)+        , "t      =" <+> inContextOfT (prettyTCM t)         ] --- | What could go wrong if we try to split on the result?-data CosplitError-  = CosplitNoTarget-      -- ^ We do not know the target type of the clause.-  | CosplitNoRecordType Telescope Type-      -- ^ Type living in the given telescope is not a record type.-  | CosplitIrrelevantProjections-      -- ^ Record has irrelevant fields, but we do not have irrelevant projections. -instance PrettyTCM CosplitError where-  prettyTCM = \case-    CosplitNoTarget ->-      text "target type is unknown"-    CosplitIrrelevantProjections ->-      text "record has irrelevant fields, but no corresponding projections"-    CosplitNoRecordType tel t -> addContext tel $ do-      text "target type " <+> prettyTCM t <+> text " is not a record type"+-- | splitResult for MakeCase, tries to introduce IApply or ProjP copatterns+splitResult :: QName -> SplitClause -> TCM (Either SplitError [SplitClause])+splitResult f sc = do+  caseMaybeM (splitResultPath f sc)+             ((fmap . fmap) splitClauses $ splitResultRecord f sc)+             (return . Right . (:[])) --- | @splitResult f sc = return res@++-- | Tries to split the result to introduce an IApply pattern.+splitResultPath :: QName -> SplitClause -> TCM (Maybe SplitClause)+splitResultPath f sc@(SClause tel ps _ _ target) = do+  caseMaybe target (return Nothing) $ \ t -> do+        caseMaybeM (isPath (unArg t)) (return Nothing) $ \ _ -> do+               (TelV i b, boundary) <- telViewUpToPathBoundary' 1 (unArg t)+               let tel' = abstract tel i+                   rho  = raiseS 1+                   ps' = applySubst rho (scPats sc) ++ telePatterns i boundary+                   cps' = applySubst rho (scCheckpoints sc)+                   target' = Just $ b <$ t+               return . Just $ SClause tel' ps' idS cps' target'++-- | @splitResultRecord f sc = return res@ -- --   If the target type of @sc@ is a record type, a covering set of --   split clauses is returned (@sc@ extended by all valid projection patterns),---   otherwise @res == Nothing@.+--   otherwise @res == Left _@. --   Note that the empty set of split clauses is returned if the record has no fields.-splitResult :: QName -> SplitClause -> TCM (Either CosplitError Covering)-splitResult f sc@(SClause tel ps _ _ target) = do+splitResultRecord :: QName -> SplitClause -> TCM (Either SplitError Covering)+splitResultRecord f sc@(SClause tel ps _ _ target) = do   reportSDoc "tc.cover.split" 10 $ vcat-    [ text "splitting result:"-    , nest 2 $ text "f      =" <+> prettyTCM f-    , nest 2 $ text "target =" <+> (addContext tel $ maybe empty prettyTCM target)+    [ "splitting result:"+    , nest 2 $ "f      =" <+> prettyTCM f+    , nest 2 $ "target =" <+> (addContext tel $ maybe empty prettyTCM target)     ]   -- if we want to split projections, but have no target type, we give up   let failure = return . Left@@ -946,9 +1436,11 @@           , text   "applied to parameters vs = " <+> (addContext tel $ prettyTCM vs)           , text $ "and have fields       fs = " ++ prettyShow fs           ]-        -- Andreas, 2018-03-19, issue #2971, check that we have a "strong" record type,-        -- i.e., with all the projections.  Otherwise, we may not split.-        ifNotM (strongRecord fs) (failure CosplitIrrelevantProjections) $ {-else-} do+        -- Andreas, 2018-06-09, issue #2170, we always have irrelevant projections+        -- available on the lhs.+        -- -- Andreas, 2018-03-19, issue #2971, check that we have a "strong" record type,+        -- -- i.e., with all the projections.  Otherwise, we may not split.+        -- ifNotM (strongRecord fs) (failure CosplitIrrelevantProjections) $ {-else-} do         let es = patternsToElims $ fromSplitPatterns ps         -- Note: module parameters are part of ps         let self  = defaultArg $ Def f [] `applyE` es@@ -975,14 +1467,16 @@                          , scTarget = target'                          }             return (SplitCon (unArg proj), sc')-      _ -> failure $ CosplitNoRecordType tel $ unArg t-  where-  -- A record type is strong if it has all the projections.-  -- This is the case if --irrelevant-projections or no field is irrelevant.-  -- TODO: what about shape irrelevance?-  strongRecord :: [Arg QName] -> TCM Bool-  strongRecord fs = (optIrrelevantProjections <$> pragmaOptions) `or2M`-    (return $ not $ any isIrrelevant fs)+      _ -> addContext tel $ do+        buildClosure (unArg t) >>= failure . CosplitNoRecordType+  -- Andreas, 2018-06-09, issue #2170: splitting with irrelevant fields is always fine!+  -- where+  -- -- A record type is strong if it has all the projections.+  -- -- This is the case if --irrelevant-projections or no field is irrelevant.+  -- -- TODO: what about shape irrelevance?+  -- strongRecord :: [Arg QName] -> TCM Bool+  -- strongRecord fs = (optIrrelevantProjections <$> pragmaOptions) `or2M`+  --   (return $ not $ any isIrrelevant fs)   -- * Boring instances@@ -990,17 +1484,17 @@ -- | For debugging only. instance PrettyTCM SplitClause where   prettyTCM (SClause tel pats sigma cps target) = sep-    [ text "SplitClause"+    [ "SplitClause"     , nest 2 $ vcat-      [ text "tel          =" <+> prettyTCM tel-      , text "pats         =" <+> sep (map (prettyTCM . namedArg) pats)-      , text "subst        =" <+> (text . show) sigma-      , text "checkpoints  =" <+> prettyTCM cps-      , text "target       =" <+> do+      [ "tel          =" <+> prettyTCM tel+      , "pats         =" <+> sep (map (prettyTCM . namedArg) pats)+      , "subst        =" <+> prettyTCM sigma+      , "checkpoints  =" <+> prettyTCM cps+      , "target       =" <+> do           caseMaybe target empty $ \ t -> do             addContext tel $ prettyTCM t       -- Triggers crash (see Issue 1374).-      -- , text "subst target = " <+> do+      -- , "subst target = " <+> do       --     caseMaybe target empty $ \ t -> do       --       addContext tel $ prettyTCM $ applySubst sigma t       ]
src/full/Agda/TypeChecking/Coverage/Match.hs view
@@ -1,6 +1,14 @@ {-# LANGUAGE CPP           #-} -module Agda.TypeChecking.Coverage.Match where+module Agda.TypeChecking.Coverage.Match+  ( Match(..), match+  , SplitPattern, SplitPatVar(..), fromSplitPatterns, toSplitPatterns+  , toSplitPSubst, applySplitPSubst+  , isTrivialPattern+  , BlockingVar(..), BlockingVars, BlockedOnResult(..)+  , setBlockingVarOverlap+  , ApplyOrIApply(..)+  ) where  import Control.Monad.State @@ -17,10 +25,13 @@ import Agda.Syntax.Internal import Agda.Syntax.Internal.Pattern () import Agda.Syntax.Literal+import Agda.Syntax.Position  import Agda.TypeChecking.Monad+import Agda.TypeChecking.Monad.Builtin import Agda.TypeChecking.Pretty ( PrettyTCM(..) ) import Agda.TypeChecking.Records+import Agda.TypeChecking.Reduce import Agda.TypeChecking.Substitute  import Agda.Utils.Null@@ -48,11 +59,14 @@ We try to split on this column first. -} +type SplitAssignment = (Nat,SplitPattern)+ -- | Match the given patterns against a list of clauses-match :: [Clause] -> [NamedArg SplitPattern] -> Match (Nat,[SplitPattern])-match cs ps = foldr choice No $ zipWith matchIt [0..] cs+match :: (MonadReduce m , HasConstInfo m , HasBuiltins m) => [Clause] -> [NamedArg SplitPattern] -> m (Match (Nat,[SplitAssignment]))+match cs ps = foldr choice (return No) $ zipWith matchIt [0..] cs   where-    matchIt i c = (i,) <$> matchClause ps c+    matchIt :: (MonadReduce m , HasConstInfo m , HasBuiltins m) => Nat -> Clause -> m (Match (Nat,[SplitAssignment]))+    matchIt i c = fmap (i,) <$> matchClause ps c  -- | For each variable in the patterns of a split clause, we remember the --   de Bruijn-index and the literals excluded by previous matches.@@ -67,7 +81,7 @@     (text $ patVarNameToString (splitPatVarName x)) P.<>     (text $ "@" ++ show (splitPatVarIndex x)) P.<>     (ifNull (splitExcludedLits x) empty $ \lits ->-      text "\\{" P.<> prettyList_ lits P.<> text "}")+      "\\{" P.<> prettyList_ lits P.<> "}")  instance PrettyTCM SplitPatVar where   prettyTCM = prettyTCM . var . splitPatVarIndex@@ -80,6 +94,10 @@ fromSplitVar :: SplitPatVar -> DBPatVar fromSplitVar x = DBPatVar (splitPatVarName x) (splitPatVarIndex x) +instance DeBruijn SplitPatVar where+  deBruijnView x = deBruijnView (fromSplitVar x)+  debruijnNamedVar n i = toSplitVar (debruijnNamedVar n i)+ toSplitPatterns :: [NamedArg DeBruijnPattern] -> [NamedArg SplitPattern] toSplitPatterns = (fmap . fmap . fmap . fmap) toSplitVar @@ -113,10 +131,23 @@       lookupS rho $ splitPatVarIndex x     DotP o u     -> DotP o $ applySplitPSubst rho u     ConP c ci ps -> ConP c ci $ applySubst rho ps+    DefP o q ps -> DefP o q $ applySubst rho ps     LitP x       -> p     ProjP{}      -> p+    IApplyP o l r x  ->+      useEndPoints (applySplitPSubst rho l) (applySplitPSubst rho r) $+      usePatOrigin o $+      useName (splitPatVarName x) $+      useExcludedLits (splitExcludedLits x) $+      lookupS rho $ splitPatVarIndex x      where+      -- see Subst for DeBruijnPattern+      useEndPoints :: Term -> Term -> SplitPattern -> SplitPattern+      useEndPoints l r (VarP o x)        = IApplyP o l r x+      useEndPoints l r (IApplyP o _ _ x) = IApplyP o l r x+      useEndPoints l r x                 = __IMPOSSIBLE__+       useName :: PatVarName -> SplitPattern -> SplitPattern       useName n (VarP o x)         | isUnderscore (splitPatVarName x)@@ -137,27 +168,43 @@   DotP{}      -> return True   ConP c i ps -> andM $ (isEtaCon $ conName c)                       : (map (isTrivialPattern . namedArg) ps)+  DefP{}      -> return False   LitP{}      -> return False   ProjP{}     -> return False+  IApplyP{}   -> return True  -- | If matching succeeds, we return the instantiation of the clause pattern vector --   to obtain the split clause pattern vector.-type MatchResult = Match [SplitPattern]+type MatchResult = Match [SplitAssignment]  -- | If matching is inconclusive (@Block@) we want to know which---   variables are blocking the match.+--   variables or projections are blocking the match. data Match a   = Yes a   -- ^ Matches unconditionally.   | No      -- ^ Definitely does not match.   | Block-    { blockedOnResult :: Bool-      -- ^ True if the clause has a result split+    { blockedOnResult :: BlockedOnResult+      -- ^ @BlockedOnProj o@ if the clause has a result split     , blockedOnVars :: BlockingVars       -- ^ @BlockingVar i cs ls o@ means variable @i@ is blocked on       -- constructors @cs@ and literals @ls@.     }   deriving (Functor) +data ApplyOrIApply = IsApply | IsIApply++data BlockedOnResult+  = BlockedOnProj      -- ^ Blocked on unsplit projection+     { blockedOnResultOverlap :: Bool+       -- ^ True if there are also matching clauses without an unsplit+       -- copattern.+     }+  | BlockedOnApply     -- ^ Blocked on unintroduced argument+     { blockedOnResultIApply :: ApplyOrIApply+       -- ^ True if the unintroduced argument was an IApply pattern+     }+  | NotBlockedOnResult+ -- | Variable blocking a match. data BlockingVar = BlockingVar   { blockingVarNo  :: Nat@@ -174,22 +221,31 @@ instance Pretty BlockingVar where   pretty (BlockingVar i cs ls o) = cat     [ text ("variable " ++ show i)-    , if null cs then empty else text " blocked on constructors" <+> pretty cs-    , if null ls then empty else text " blocked on literals" <+> pretty ls-    , if o then text " (overlapping)" else empty+    , if null cs then empty else " blocked on constructors" <+> pretty cs+    , if null ls then empty else " blocked on literals" <+> pretty ls+    , if o then " (overlapping)" else empty     ]  type BlockingVars = [BlockingVar] -blockedOnConstructor :: Nat -> ConHead -> Match a-blockedOnConstructor i c = Block False [BlockingVar i [c] [] False]+yes :: Monad m => a -> m (Match a)+yes = return . Yes -blockedOnLiteral :: Nat -> Literal -> Match a-blockedOnLiteral i l = Block False [BlockingVar i [] [l] False]+no :: Monad m => m (Match a)+no = return No -blockedOnProjection :: Match a-blockedOnProjection = Block True []+blockedOnConstructor :: Monad m => Nat -> ConHead -> m (Match a)+blockedOnConstructor i c = return $ Block NotBlockedOnResult [BlockingVar i [c] [] False] +blockedOnLiteral :: Monad m => Nat -> Literal -> m (Match a)+blockedOnLiteral i l = return $ Block NotBlockedOnResult [BlockingVar i [] [l] False]++blockedOnProjection :: Monad m => m (Match a)+blockedOnProjection = return $ Block (BlockedOnProj False) []++blockedOnApplication :: Monad m => ApplyOrIApply -> m (Match a)+blockedOnApplication b = return $ Block (BlockedOnApply b) []+ -- | Lens for 'blockingVarCons'. mapBlockingVarCons :: ([ConHead] -> [ConHead]) -> BlockingVar -> BlockingVar mapBlockingVarCons f b = b { blockingVarCons = f (blockingVarCons b) }@@ -212,26 +268,50 @@       Just (BlockingVar _ cons' lits' o') -> BlockingVar x (cons ++ cons') (lits ++ lits') (o || o')       Nothing -> BlockingVar x cons lits True +setBlockedOnResultOverlap :: BlockedOnResult -> BlockedOnResult+setBlockedOnResultOverlap b = case b of+  BlockedOnProj{}      -> b { blockedOnResultOverlap = True }+  BlockedOnApply{}     -> b+  NotBlockedOnResult{} -> b++anyBlockedOnResult :: BlockedOnResult -> BlockedOnResult -> BlockedOnResult+anyBlockedOnResult b1 b2 = case (b1,b2) of+  (NotBlockedOnResult , b2                ) -> b2+  (b1                 , NotBlockedOnResult) -> b1+  (_                  , _                 ) -> __IMPOSSIBLE__++-- | Left dominant merge of `BlockedOnResult`.+choiceBlockedOnResult :: BlockedOnResult -> BlockedOnResult -> BlockedOnResult+choiceBlockedOnResult b1 b2 = case (b1,b2) of+  (NotBlockedOnResult  , _                 ) -> NotBlockedOnResult+  (BlockedOnProj _     , NotBlockedOnResult) -> BlockedOnProj True+  (BlockedOnProj o1    , BlockedOnProj o2  ) -> BlockedOnProj (o1 || o2)+  (BlockedOnProj o1    , BlockedOnApply{}  ) -> BlockedOnProj True+  (BlockedOnApply b    , _                 ) -> BlockedOnApply b+ -- | @choice m m'@ combines the match results @m@ of a function clause --   with the (already combined) match results $m'$ of the later clauses. --   It is for skipping clauses that definitely do not match ('No'). --   It is left-strict, to be used with @foldr@. --   If one clause unconditionally matches ('Yes') we do not look further.-choice :: Match a -> Match a -> Match a-choice (Yes a)      _            = Yes a-choice (Block r xs) (Block s ys) = Block (r && s) $ zipBlockingVars xs ys-choice (Block r xs) (Yes _)      = Block r $ overlapping xs-choice m@Block{}    No           = m-choice No           m            = m+choice :: Monad m => m (Match a) -> m (Match a) -> m (Match a)+choice m m' = m >>= \case+  Yes a -> yes a+  Block r xs -> m' >>= \case+    Block s ys -> return $ Block (choiceBlockedOnResult r s) $ zipBlockingVars xs ys+    Yes _      -> return $ Block (setBlockedOnResultOverlap r) $ overlapping xs+    No         -> return $ Block r xs+  No    -> m'  -- | @matchClause qs i c@ checks whether clause @c@ --   covers a split clause with patterns @qs@. matchClause-  :: [NamedArg SplitPattern]+  :: (MonadReduce m , HasConstInfo m , HasBuiltins m)+  => [NamedArg SplitPattern]      -- ^ Split clause patterns @qs@.   -> Clause      -- ^ Clause @c@ to cover split clause.-  -> MatchResult+  -> m MatchResult      -- ^ Result.      --   If 'Yes' the instantiation @rs@ such that @(namedClausePats c)[rs] == qs@. matchClause qs c = matchPats (namedClausePats c) qs@@ -253,38 +333,33 @@ --   in @mconcat []@ which is @Yes []@.  matchPats-  :: [NamedArg (Pattern' a)]+  :: (MonadReduce m , HasConstInfo m , HasBuiltins m, DeBruijn a)+  => [NamedArg (Pattern' a)]      -- ^ Clause pattern vector @ps@ (to cover split clause pattern vector).   -> [NamedArg SplitPattern]      -- ^ Split clause pattern vector @qs@ (to be covered by clause pattern vector).-  -> MatchResult+  -> m MatchResult      -- ^ Result.      --   If 'Yes' the instantiation @rs@ such that @ps[rs] == qs@.--matchPats ps qs = mconcat $ [ projPatternsLeftInSplitClause ] ++-    zipWith matchPat (map namedArg ps) (map namedArg qs) ++-    [ projPatternsLeftInMatchedClause ]-  where-    -- Patterns left in split clause:-    qsrest = drop (length ps) qs-    -- Andreas, 2016-06-03, issue #1986:-    -- catch-all for copatterns is inconsistent as found by Ulf.-    -- Thus, if the split clause has copatterns left,-    -- the current (shorter) clause is not considered covering.-    projPatternsLeftInSplitClause =-        case mapMaybe isProjP qsrest of-            [] -> mempty -- no proj. patterns left-            _  -> No     -- proj. patterns left+matchPats [] [] = yes []+matchPats (p:ps) (q:qs) =+  matchPat (namedArg p) (namedArg q) `combine` matchPats ps qs -    -- Patterns left in candidate clause:-    psrest = drop (length qs) ps-    -- If the current clause has additional copatterns in-    -- comparison to the split clause, we should split on them.-    projPatternsLeftInMatchedClause =-        case mapMaybe isProjP psrest of-            [] -> mempty               -- no proj. patterns left-            ds -> blockedOnProjection  -- proj. patterns left+-- Patterns left in split clause:+-- Andreas, 2016-06-03, issue #1986:+-- catch-all for copatterns is inconsistent as found by Ulf.+-- Thus, if the split clause has copatterns left,+-- the current (shorter) clause is not considered covering.+matchPats [] qs@(_:_) = case mapMaybe isProjP qs of+  [] -> yes [] -- no proj. patterns left+  _  -> no     -- proj. patterns left +-- Patterns left in candidate clause:+-- If the current clause has additional copatterns in+-- comparison to the split clause, we should split on them.+matchPats (p:ps) [] = case isProjP p of+  Just{}  -> blockedOnProjection+  Nothing -> blockedOnApplication (case namedArg p of IApplyP{} -> IsIApply; _ -> IsApply)  -- | Combine results of checking whether function clause patterns --   covers split clause patterns.@@ -298,19 +373,16 @@ --   'Block' accumulates variables of the split clause --   that have to be instantiated (an projection names of copattern matches) --   to make the split clause an instance of the function clause.--instance Semigroup a => Semigroup (Match a) where-  Yes a      <> Yes b      = Yes (a <> b)-  Yes _      <> m          = m-  No         <> _          = No-  Block{}    <> No         = No-  Block r xs <> Block s ys = Block (r || s) (xs ++ ys)-  m@Block{}  <> Yes{}      = m--instance (Semigroup a, Monoid a) => Monoid (Match a) where-  mempty  = Yes mempty-  mappend = (<>)-+combine :: (Monad m, Semigroup a) => m (Match a) -> m (Match a) -> m (Match a)+combine m m' = m >>= \case+    Yes a -> m' >>= \case+      Yes b -> yes (a <> b)+      y     -> return y+    No    -> no+    x@(Block r xs) -> m' >>= \case+      No    -> no+      Block s ys -> return $ Block (anyBlockedOnResult r s) (xs ++ ys)+      Yes{} -> return x  -- | @matchPat p q@ checks whether a function clause pattern @p@ --   covers a split clause pattern @q@.  There are three results:@@ -323,36 +395,84 @@ --   a cover if variable @x@ is instantiated with an appropriate literal.  matchPat-  :: Pattern' a+  :: (MonadReduce m , HasConstInfo m , HasBuiltins m, DeBruijn a)+  => Pattern' a      -- ^ Clause pattern @p@ (to cover split clause pattern).   -> SplitPattern      -- ^ Split clause pattern @q@ (to be covered by clause pattern).-  -> MatchResult+  -> m MatchResult      -- ^ Result.      --   If 'Yes', also the instantiation @rs@ of the clause pattern variables      --   to produce the split clause pattern, @p[rs] = q@.+matchPat p q = case p of+  VarP _ x   -> yes [(fromMaybe __IMPOSSIBLE__ (deBruijnView x),q)]+  DotP{}   -> yes []+  -- Jesper, 2014-11-04: putting 'Yes [q]' here triggers issue 1333.+  -- Not checking for trivial patterns should be safe here, as dot patterns are+  -- guaranteed to match if the rest of the pattern does, so some extra splitting+  -- on them doesn't change the reduction behaviour.+  p@(LitP l) -> case q of+    VarP _ x -> if l `elem` splitExcludedLits x+                then no+                else blockedOnLiteral (splitPatVarIndex x) l+    _ -> isLitP q >>= \case+      Just l' -> if l == l' then yes [] else no+      Nothing -> no+  ProjP _ d -> case q of+    ProjP _ d' -> do+      d <- getOriginalProjection d+      if d == d' then yes [] else no+    _          -> __IMPOSSIBLE__+  IApplyP _ _ _ x -> yes [(fromMaybe __IMPOSSIBLE__ (deBruijnView x),q)]+  ConP c _ ps -> unDotP q >>= \case+    VarP _ x -> blockedOnConstructor (splitPatVarIndex x) c+    ConP c' i qs+      | c == c'   -> matchPats ps qs+      | otherwise -> no+    DotP o t  -> no+    LitP l    -> isLitP p >>= \case+      Just l' -> if l == l' then yes [] else no+      Nothing -> no+    DefP{}   -> no+    ProjP{}   -> __IMPOSSIBLE__  -- excluded by typing+    IApplyP _ _ _ x -> blockedOnConstructor (splitPatVarIndex x) c+  (DefP o c ps) -> unDotP q >>= \case+    VarP _ x -> __IMPOSSIBLE__ -- blockedOnConstructor (splitPatVarIndex x) c+    ConP c' i qs -> no+    DotP o t  -> no+    LitP _    -> no+    DefP o c' qs+      | c == c'   -> matchPats ps qs+      | otherwise -> no+    ProjP{}   -> __IMPOSSIBLE__  -- excluded by typing+    IApplyP _ _ _ x -> __IMPOSSIBLE__ --blockedOnConstructor (splitPatVarIndex x) c -matchPat VarP{}   q = Yes [q]-matchPat DotP{}   q = mempty--- Jesper, 2014-11-04: putting 'Yes [q]' here triggers issue 1333.--- Not checking for trivial patterns should be safe here, as dot patterns are--- guaranteed to match if the rest of the pattern does, so some extra splitting--- on them doesn't change the reduction behaviour.-matchPat p@(LitP l) q = case q of-  VarP _ x -> if l `elem` splitExcludedLits x-              then No-              else blockedOnLiteral (splitPatVarIndex x) l-  ConP{}   -> No-  DotP{}   -> No-  LitP l'  -> if l == l' then Yes [] else No-  ProjP{}  -> __IMPOSSIBLE__  -- excluded by typing-matchPat (ProjP _ d) (ProjP _ d') = if d == d' then mempty else No-matchPat ProjP{} _ = __IMPOSSIBLE__-matchPat p@(ConP c _ ps) q = case q of-  VarP _ x -> blockedOnConstructor (splitPatVarIndex x) c-  ConP c' i qs-    | c == c'   -> matchPats ps qs-    | otherwise -> No-  DotP o t  -> No-  LitP _    -> No-  ProjP{}   -> __IMPOSSIBLE__  -- excluded by typing+-- unfold one level of a dot pattern to a proper pattern if possible+unDotP :: (MonadReduce m, DeBruijn (Pattern' a)) => Pattern' a -> m (Pattern' a)+unDotP (DotP o v) = reduce v >>= \case+  Var i [] -> return $ deBruijnVar i+  Con c _ vs -> do+    let ps = map (fmap $ unnamed . DotP o) $ fromMaybe __IMPOSSIBLE__ $ allApplyElims vs+    return $ ConP c noConPatternInfo ps+  Lit l -> return $ LitP l+  v     -> return $ dotP v+unDotP p = return p++isLitP :: (MonadReduce m, HasBuiltins m) => Pattern' a -> m (Maybe Literal)+isLitP (LitP l) = return $ Just l+isLitP (DotP _ u) = reduce u >>= \case+  Lit l -> return $ Just l+  _     -> return $ Nothing+isLitP (ConP c ci []) = do+  Con zero _ [] <- fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinZero+  if | c == zero -> return $ Just $ LitNat (getRange c) 0+     | otherwise -> return Nothing+isLitP (ConP c ci [a]) | visible a && isRelevant a = do+  Con suc _ [] <- fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinSuc+  if | c == suc  -> fmap inc <$> isLitP (namedArg a)+     | otherwise -> return Nothing+  where+    inc :: Literal -> Literal+    inc (LitNat r n) = LitNat (fuseRange c r) $ n + 1+    inc _ = __IMPOSSIBLE__+isLitP _ = return Nothing
src/full/Agda/TypeChecking/Coverage/SplitTree.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveDataTypeable         #-}  {-| Split tree for transforming pattern clauses into case trees. @@ -14,13 +15,13 @@ module Agda.TypeChecking.Coverage.SplitTree where  import Data.Tree+import Data.Data (Data, toConstr)  import Agda.Syntax.Abstract.Name import Agda.Syntax.Common import Agda.Syntax.Internal as I import Agda.Syntax.Literal--import Agda.TypeChecking.Pretty ( PrettyTCM(..) )+import Agda.Syntax.Position  import Agda.Utils.Monad import Agda.Utils.Pretty@@ -43,6 +44,7 @@     { splitArg   :: Arg Int       -- ^ Arg. no to split at.     , splitTrees :: SplitTrees' a -- ^ Sub split trees.     }+  deriving (Data, Show)  -- | Split tree branching.  A finite map from constructor names to splittrees --   A list representation seems appropriate, since we are expecting not@@ -57,18 +59,13 @@   = SplitCon QName   | SplitLit Literal   | SplitCatchall-  deriving (Show, Eq, Ord)+  deriving (Show, Eq, Ord, Data)  instance Pretty SplitTag where   pretty (SplitCon c)  = pretty c   pretty (SplitLit l)  = pretty l   pretty SplitCatchall = underscore -instance PrettyTCM SplitTag where-  prettyTCM (SplitCon c)  = prettyTCM c-  prettyTCM (SplitLit l)  = prettyTCM l-  prettyTCM SplitCatchall = return underscore- -- * Printing a split tree  data SplitTreeLabel a = SplitTreeLabel@@ -78,10 +75,10 @@   } instance Pretty a => Pretty (SplitTreeLabel a) where   pretty = \case-    SplitTreeLabel Nothing Nothing (Just n)  -> text $ "done, " ++ show n ++ " bindings"-    SplitTreeLabel Nothing (Just n) Nothing  -> text $ "split at " ++ show n-    SplitTreeLabel (Just q) Nothing (Just n) -> pretty q <+> text (" -> done, " ++ show n ++ " bindings")-    SplitTreeLabel (Just q) (Just n) Nothing -> pretty q <+> text (" -> split at " ++ show n)+    SplitTreeLabel Nothing Nothing (Just n)  -> text $ "done, " ++ prettyShow n ++ " bindings"+    SplitTreeLabel Nothing (Just n) Nothing  -> text $ "split at " ++ prettyShow n+    SplitTreeLabel (Just q) Nothing (Just n) -> pretty q <+> text (" -> done, " ++ prettyShow n ++ " bindings")+    SplitTreeLabel (Just q) (Just n) Nothing -> pretty q <+> text (" -> split at " ++ prettyShow n)     _ -> __IMPOSSIBLE__  -- | Convert a split tree into a 'Data.Tree' (for printing).@@ -98,3 +95,14 @@  instance Pretty a => Pretty (SplitTree' a) where   pretty = text . drawTree . fmap prettyShow . toTree++instance KillRange SplitTag where+  killRange = \case+    SplitCon c -> killRange1 SplitCon c+    SplitLit l -> killRange1 SplitLit l+    SplitCatchall -> SplitCatchall++instance KillRange a => KillRange (SplitTree' a) where+  killRange = \case+    SplittingDone n -> SplittingDone n+    SplitAt i ts    -> killRange1 (SplitAt i) ts
src/full/Agda/TypeChecking/Datatypes.hs view
@@ -2,6 +2,8 @@  module Agda.TypeChecking.Datatypes where +import Control.Monad.Except+ import Data.Maybe (fromMaybe) import qualified Data.List as List @@ -27,8 +29,13 @@ ---------------------------------------------------------------------------  -- | Get true constructor with record fields.-getConHead :: QName -> TCM (Either SigError ConHead)-getConHead c = mapRight (conSrcCon . theDef) <$> getConstInfo' c+getConHead :: (HasConstInfo m) => QName -> m (Either SigError ConHead)+getConHead c = runExceptT $ do+  def <- ExceptT $ getConstInfo' c+  case theDef def of+    Constructor { conSrcCon = c' } -> return c'+    Record     { recConHead = c' } -> return c'+    _ -> throwError $ SigUnknown $ prettyShow c ++ " is not a constructor"  -- | Get true constructor with fields, expanding literals to constructors --   if possible.@@ -52,6 +59,17 @@     Constructor{conData = d} -> return d     _                        -> __IMPOSSIBLE__ +-- | Is the datatype of this constructor a Higher Inductive Type?+--   Precondition: The argument must refer to a constructor of a datatype or record.+consOfHIT :: QName -> TCM Bool+consOfHIT c = do+  d <- getConstructorData c+  def <- theDef <$> getConstInfo d+  case def of+    Datatype {dataPathCons = xs} -> return $ not $ null xs+    Record{} -> return False+    _  -> __IMPOSSIBLE__+ -- | @getConType c t@ computes the constructor parameters from type @t@ --   and returns them plus the instantiated type of constructor @c@. --   This works also if @t@ is a function type ending in a data/record type;@@ -72,9 +90,9 @@        --     @ct@   is the type of the constructor instantiated to the parameters. getConType c t = do   reportSDoc "tc.getConType" 30 $ sep $-    [ text "getConType: constructor "+    [ "getConType: constructor "     , prettyTCM c-    , text " at type "+    , " at type "     , prettyTCM t     ]   TelV tel t <- telView t@@ -104,9 +122,10 @@ -- --   Precondition: @t@ is reduced. getFullyAppliedConType-  :: ConHead  -- ^ Constructor.+  :: (HasConstInfo m, MonadReduce m, MonadDebug m)+  => ConHead  -- ^ Constructor.   -> Type     -- ^ Reduced type of the fully applied constructor.-  -> TCM (Maybe ((QName, Type, Args), Type))+  -> m (Maybe ((QName, Type, Args), Type))        -- ^ @Nothing@ if not data or record type.        --        --   @Just ((d, dt, pars), ct)@ otherwise, where
src/full/Agda/TypeChecking/Datatypes.hs-boot view
@@ -5,5 +5,5 @@ import Agda.TypeChecking.Monad.Signature import Agda.Syntax.Internal -getConHead         :: QName -> TCM (Either SigError ConHead)+getConHead         :: HasConstInfo m => QName -> m (Either SigError ConHead) getConstructorData :: HasConstInfo m => QName -> m QName
src/full/Agda/TypeChecking/DisplayForm.hs view
@@ -61,13 +61,13 @@   else do     -- Display debug info about the @Open@s.     verboseS "tc.display.top" 100 $ unlessDebugPrinting $ do-      cps <- view eCheckpoints+      cps <- viewTC eCheckpoints       cxt <- getContextTelescope       reportSDoc "tc.display.top" 100 $ return $ vcat-        [ text "displayForm for" <+> pretty q-        , nest 2 $ text "cxt =" <+> pretty cxt-        , nest 2 $ text "cps =" <+> vcat (map pretty (Map.toList cps))-        , nest 2 $ text "dfs =" <+> vcat (map pshow odfs) ]+        [ "displayForm for" <+> pretty q+        , nest 2 $ "cxt =" <+> pretty cxt+        , nest 2 $ "cps =" <+> vcat (map pretty (Map.toList cps))+        , nest 2 $ "dfs =" <+> vcat (map pshow odfs) ]     -- Use only the display forms that can be opened in the current context.     dfs   <- catMaybes <$> mapM tryGetOpen odfs     scope <- getScope@@ -180,9 +180,15 @@ instance SubstWithOrigin a => SubstWithOrigin [a] where   substWithOrigin rho ots = map (substWithOrigin rho ots) -instance SubstWithOrigin (Arg a) => SubstWithOrigin (Elim' a) where+instance (SubstWithOrigin a, SubstWithOrigin (Arg a)) => SubstWithOrigin (Elim' a) where   substWithOrigin rho ots (Apply arg) = Apply $ substWithOrigin rho ots arg   substWithOrigin rho ots e@Proj{}    = e+  substWithOrigin rho ots (IApply u v w) = IApply+    (substWithOrigin rho ots u)+    (substWithOrigin rho ots v)+    (substWithOrigin rho ots w)++  instance SubstWithOrigin (Arg Term) where   substWithOrigin rho ots (Arg ai v) =
src/full/Agda/TypeChecking/DropArgs.hs view
@@ -2,6 +2,8 @@  module Agda.TypeChecking.DropArgs where +import Control.Arrow (first, second)+ import Agda.Syntax.Common import Agda.Syntax.Internal @@ -9,6 +11,7 @@ import Agda.TypeChecking.Substitute  import Agda.TypeChecking.CompiledClause+import Agda.TypeChecking.Coverage.SplitTree  import Agda.Utils.Functor import Agda.Utils.Permutation@@ -71,3 +74,8 @@     Done xs t | length xs < n -> __IMPOSSIBLE__               | otherwise     -> Done (drop n xs) t     Fail                      -> Fail++instance DropArgs SplitTree where+  dropArgs n (SplittingDone m) = SplittingDone (m - n)+  dropArgs n (SplitAt i ts)    = SplitAt (subtract n <$> i) $ map (second $ dropArgs n) ts+
src/full/Agda/TypeChecking/Empty.hs view
@@ -1,5 +1,9 @@ -module Agda.TypeChecking.Empty (isEmptyType) where+module Agda.TypeChecking.Empty+       ( isEmptyType+       , isEmptyTel+       , ensureEmptyType+       ) where  import Control.Monad.Except @@ -38,55 +42,63 @@   mempty  = Fail   mappend = (Data.Semigroup.<>) --- | Check whether a type is empty.+-- | Ensure that a type is empty. --   This check may be postponed as emptiness constraint.-isEmptyType-  :: Range   -- ^ Range of the absurd pattern.-  -> Type    -- ^ Type that should be empty (empty data type or iterated product of such).+ensureEmptyType+  :: Range -- ^ Range of the absurd pattern.+  -> Type  -- ^ Type that should be empty (empty data type or iterated product of such).   -> TCM ()-isEmptyType r t = caseEitherM (loop t) failure return+ensureEmptyType r t = caseEitherM (checkEmptyType r t) failure return   where   failure DontKnow          = addConstraint $ IsEmpty r t   failure (FailBecause err) = throwError err   failure Fail              = typeError $ ShouldBeEmpty t [] -  -- Either the type is possibly non-empty (Left err) or it is really empty-  -- (Right ()).-  loop :: Type -> TCM (Either ErrorNonEmpty ())-  loop t = do-    mr <- tryRecordType t-    case mr of+-- | Check whether a type is empty.+isEmptyType :: Type -> TCM Bool+isEmptyType ty = isRight <$> checkEmptyType noRange ty -      -- If t is blocked or a meta, we cannot decide emptiness now.  Postpone.-      Left (Blocked m t) -> return $ Left DontKnow+-- | Check whether some type in a telescope is empty.+isEmptyTel :: Telescope -> TCM Bool+isEmptyTel tel = isRight <$> checkEmptyTel noRange tel -      -- If t is not a record type, try to split-      Left (NotBlocked nb t) -> do-        -- from the current context xs:ts, create a pattern list-        -- xs _ : ts t and try to split on _ (the last variable)-        tel0 <- getContextTelescope-        let gamma = telToList tel0 ++ [domFromArg $ defaultArg (underscore, t)]-            tel   = telFromList gamma-            ps    = teleNamedArgs tel+-- Either the type is possibly non-empty (Left err) or it is really empty+-- (Right ()).+checkEmptyType :: Range -> Type -> TCM (Either ErrorNonEmpty ())+checkEmptyType range t = do+  mr <- tryRecordType t+  case mr of -        dontAssignMetas $ do-          r <- splitLast Inductive tel ps-          case r of-            Left UnificationStuck{} -> return $ Left DontKnow-            Left _                  -> return $ Left Fail-            Right cov -> do-              let ps = map (namedArg . last . fromSplitPatterns . scPats) $ splitClauses cov-              if (null ps) then return (Right ()) else-                Left . FailBecause <$> do typeError_ $ ShouldBeEmpty t ps+    -- If t is blocked or a meta, we cannot decide emptiness now.  Postpone.+    Left (Blocked m t) -> return $ Left DontKnow -      -- If t is a record type, see if any of the field types is empty-      Right (r, pars, def) -> do-        if recEtaEquality def == NoEta then return $ Left Fail else do-          checkTel $ recTel def `apply` pars+    -- If t is not a record type, try to split+    Left (NotBlocked nb t) -> do+      -- from the current context xs:ts, create a pattern list+      -- xs _ : ts t and try to split on _ (the last variable)+      tel0 <- getContextTelescope+      let gamma = telToList tel0 ++ [domFromArg $ defaultArg (underscore, t)]+          tel   = telFromList gamma+          ps    = teleNamedArgs tel -  checkTel :: Telescope -> TCM (Either ErrorNonEmpty ())-  checkTel EmptyTel          = return $ Left Fail-  checkTel (ExtendTel dom tel) = orEitherM-    [ loop (unDom dom)-    , underAbstraction dom tel checkTel-    ]+      dontAssignMetas $ do+        r <- splitLast Inductive tel ps+        case r of+          Left UnificationStuck{} -> return $ Left DontKnow+          Left _                  -> return $ Left Fail+          Right cov -> do+            let ps = map (namedArg . last . fromSplitPatterns . scPats) $ splitClauses cov+            if (null ps) then return (Right ()) else+              Left . FailBecause <$> do typeError_ $ ShouldBeEmpty t ps++    -- If t is a record type, see if any of the field types is empty+    Right (r, pars, def) -> do+      if recEtaEquality def == NoEta then return $ Left Fail else do+        checkEmptyTel range $ recTel def `apply` pars++checkEmptyTel :: Range -> Telescope -> TCM (Either ErrorNonEmpty ())+checkEmptyTel r EmptyTel            = return $ Left Fail+checkEmptyTel r (ExtendTel dom tel) = orEitherM+  [ checkEmptyType r (unDom dom)+  , underAbstraction dom tel (checkEmptyTel r)+  ]
src/full/Agda/TypeChecking/Empty.hs-boot view
@@ -2,8 +2,10 @@ module Agda.TypeChecking.Empty where  import Agda.TypeChecking.Monad (TCM)-import Agda.Syntax.Internal (Type)+import Agda.Syntax.Internal (Type, Telescope) import Agda.Syntax.Position (Range) --- isReallyEmptyType :: Type -> TCM ()-isEmptyType       :: Range -> Type -> TCM ()+isEmptyType :: Type      -> TCM Bool+isEmptyTel  :: Telescope -> TCM Bool++ensureEmptyType :: Range -> Type -> TCM ()
src/full/Agda/TypeChecking/Errors.hs view
@@ -27,7 +27,7 @@ import Control.Monad.State  import Data.Function-import Data.List (nub, sortBy, intersperse, isInfixOf)+import Data.List (nub, sortBy, intersperse, isInfixOf, dropWhileEnd) import Data.Maybe import Data.Char (toLower) import qualified Data.Set as Set@@ -58,6 +58,7 @@ import Agda.TypeChecking.Monad.Options import Agda.TypeChecking.Monad.Builtin import Agda.TypeChecking.Monad.State+import Agda.TypeChecking.Monad.MetaVars import Agda.TypeChecking.Positivity import Agda.TypeChecking.Pretty import Agda.TypeChecking.Substitute@@ -96,7 +97,7 @@         pwords "total panic: error when printing error from printing error from printing error." ++         pwords "I give up! Approximations of errors (original error last):" )         $$ vcat (map (text . tcErrString) errs)-    | otherwise = applyUnless (null errs) (text "panic: error when printing error!" $$) $ do+    | otherwise = applyUnless (null errs) ("panic: error when printing error!" $$) $ do         (prettyTCM err $$ vcat (map (text . ("when printing error " ++) . tcErrString) errs))         `catchError` \ err' -> prettyError' err' (err:errs) @@ -132,18 +133,18 @@               r   = getRange c               f d = if null $ P.pretty r                     then d-                    else d $$ nest 4 (text "[ at" <+> prettyTCM r <+> text "]")+                    else d $$ nest 4 ("[ at" <+> prettyTCM r <+> "]") -    TerminationIssue tes -> do+    TerminationIssue because -> do       dropTopLevel <- topLevelModuleDropper       fwords "Termination checking failed for the following functions:"         $$ (nest 2 $ fsep $ punctuate comma $              map (pretty . dropTopLevel) $-               concatMap termErrFunctions tes)+               concatMap termErrFunctions because)         $$ fwords "Problematic calls:"         $$ (nest 2 $ fmap (P.vcat . nub) $               mapM prettyTCM $ sortBy (compare `on` callInfoRange) $-              concatMap termErrCalls tes)+              concatMap termErrCalls because)      UnreachableClauses f pss -> fsep $       pwords "Unreachable" ++ pwords (plural (length pss) "clause")@@ -152,7 +153,7 @@           plural n thing = thing ++ "s"      CoverageIssue f pss -> fsep (-      pwords "Incomplete pattern matching for" ++ [prettyTCM f <> text "."] +++      pwords "Incomplete pattern matching for" ++ [prettyTCM f <> "."] ++       pwords "Missing cases:") $$ nest 2 (vcat $ map display pss)         where         display (tel, ps) = prettyTCM $ NamedClause f True $@@ -168,18 +169,45 @@       [prettyTCM d] ++ pwords "is not strictly positive, because it occurs"       ++ [prettyTCM ocs] +    CantGeneralizeOverSorts ms -> vcat+            [ text "Cannot generalize over unsolved sort metas:"+            , nest 2 $ vcat [ prettyTCM x <+> text "at" <+> (pretty =<< getMetaRange x) | x <- ms ]+            , fsep $ pwords "Suggestion: add a `variable Any : Set _` and replace unsolved metas by Any"+            ]++    AbsurdPatternRequiresNoRHS ps -> fwords $+      "The right-hand side must be omitted if there " +++      "is an absurd pattern, () or {}, in the left-hand side."+     OldBuiltin old new -> fwords $       "Builtin " ++ old ++ " no longer exists. " ++       "It is now bound by BUILTIN " ++ new      EmptyRewritePragma -> fsep . pwords $ "Empty REWRITE pragma" +    IllformedAsClause s -> fsep . pwords $+      "`as' must be followed by an identifier" ++ s+     UselessPublic -> fwords $ "Keyword `public' is ignored here"      UselessInline q -> fsep $       pwords "It is pointless for INLINE'd function" ++ [prettyTCM q] ++       pwords "to have a separate Haskell definition" +    WrongInstanceDeclaration -> fwords "Terms marked as eligible for instance search should end with a name, so `instance' is ignored here."++    InstanceWithExplicitArg q -> fsep $+      pwords "Instance declarations with explicit arguments are never considered by instance search," +++      pwords "so making" ++ [prettyTCM q] ++ pwords "into an instance has no effect."++    InstanceNoOutputTypeName b -> fsep $+      pwords "Instance arguments whose type does not end in a named or variable type are never considered by instance search," +++      pwords "so having an instance argument" ++ [return b] ++ pwords "has no effect."++    InstanceArgWithExplicitArg b -> fsep $+      pwords "Instance arguments with explicit arguments are never considered by instance search," +++      pwords "so having an instance argument" ++ [return b] ++ pwords "has no effect."+     InversionDepthReached f -> do       maxDepth <- maxInversionDepth       fsep $ pwords "Refusing to invert pattern matching of" ++ [prettyTCM f] ++@@ -207,24 +235,43 @@     SafeFlagTerminating -> fsep $       pwords "Cannot use TERMINATING pragma with safe flag." -    SafeFlagPrimTrustMe -> fsep (pwords "Cannot use primTrustMe with safe flag.")+    SafeFlagWithoutKFlagPrimEraseEquality -> fsep (pwords "Cannot use primEraseEquality with safe and without-K flags.") +    WithoutKFlagPrimEraseEquality -> fsep (pwords "Using primEraseEquality implies K, but you have the without-K flag enabled.")+     SafeFlagNoPositivityCheck -> fsep $       pwords "Cannot use NO_POSITIVITY_CHECK pragma with safe flag."      SafeFlagPolarity -> fsep $       pwords "Cannot use POLARITY pragma with safe flag." +    SafeFlagNoUniverseCheck -> fsep $+      pwords "Cannot use NO_UNIVERSE_CHECK pragma with safe flag."+     ParseWarning pw -> pretty pw      DeprecationWarning old new version -> fsep $       [text old] ++ pwords "has been deprecated. Use" ++ [text new] ++ pwords-      "instead. This will be an error in Agda" ++ [text version <> text "."]+      "instead. This will be an error in Agda" ++ [text version <> "."]      NicifierIssue w -> sayWhere (getRange w) $ pretty w      UserWarning str -> text str +    ModuleDoesntExport m xs -> fsep $+      pwords "The module" ++ [pretty m] ++ pwords "doesn't export the following:" +++      punctuate comma (map pretty xs)++    LibraryWarning lw -> pretty lw++    InfectiveImport o m -> fsep $+      pwords "Importing module" ++ [pretty m] ++ pwords "using the" +++      [pretty o] ++ pwords "flag from a module which does not."++    CoInfectiveImport o m -> fsep $+      pwords "Importing module" ++ [pretty m] ++ pwords "not using the" +++      [pretty o] ++ pwords "flag from a module which does."+ prettyTCWarnings :: [TCWarning] -> TCM String prettyTCWarnings = fmap (unlines . intersperse "") . prettyTCWarnings' @@ -260,7 +307,6 @@            else warnSet    -- filter out the warnings the flags told us to ignore-   let cleanUp w = let wName = warningName w in         wName /= SafeFlagPragma_         && wName `elem` warnSet@@ -292,7 +338,7 @@  nameWithBinding :: QName -> TCM Doc nameWithBinding q =-  (prettyTCM q <+> text "bound at") <?> prettyTCM r+  (prettyTCM q <+> "bound at") <?> prettyTCM r   where     r = nameBindingSite $ qnameName q @@ -331,7 +377,6 @@   DataMustEndInSort{}                      -> "DataMustEndInSort" -- UNUSED:    DataTooManyParameters{}                  -> "DataTooManyParameters"   CantResolveOverloadedConstructorsTargetingSameDatatype{} -> "CantResolveOverloadedConstructorsTargetingSameDatatype"-  DifferentArities                         -> "DifferentArities"   DoesNotConstructAnElementOf{}            -> "DoesNotConstructAnElementOf"   DuplicateBuiltinBinding{}                -> "DuplicateBuiltinBinding"   DuplicateConstructors{}                  -> "DuplicateConstructors"@@ -341,7 +386,7 @@   FileNotFound{}                           -> "FileNotFound"   GenericError{}                           -> "GenericError"   GenericDocError{}                        -> "GenericDocError"-  IFSNoCandidateInScope{}                  -> "IFSNoCandidateInScope"+  InstanceNoCandidate{}                    -> "InstanceNoCandidate"   IlltypedPattern{}                        -> "IlltypedPattern"   IllformedProjectionPattern{}             -> "IllformedProjectionPattern"   CannotEliminateWithPattern{}             -> "CannotEliminateWithPattern"@@ -355,23 +400,27 @@   MetaIrrelevantSolution{}                 -> "MetaIrrelevantSolution"   ModuleArityMismatch{}                    -> "ModuleArityMismatch"   ModuleDefinedInOtherFile {}              -> "ModuleDefinedInOtherFile"-  ModuleDoesntExport{}                     -> "ModuleDoesntExport"   ModuleNameUnexpected{}                   -> "ModuleNameUnexpected"   ModuleNameDoesntMatchFileName {}         -> "ModuleNameDoesntMatchFileName"   NeedOptionCopatterns{}                   -> "NeedOptionCopatterns"   NeedOptionRewriting{}                    -> "NeedOptionRewriting"+  NeedOptionProp{}                         -> "NeedOptionProp"+  GeneralizeNotSupportedHere{}             -> "GeneralizeNotSupportedHere"+  GeneralizeCyclicDependency{}             -> "GeneralizeCyclicDependency"+  GeneralizeUnsolvedMeta{}                 -> "GeneralizeUnsolvedMeta"+  MultipleFixityDecls{}                    -> "MultipleFixityDecls"+  MultiplePolarityPragmas{}                -> "MultiplePolarityPragmas"   NoBindingForBuiltin{}                    -> "NoBindingForBuiltin"   NoParseForApplication{}                  -> "NoParseForApplication"   NoParseForLHS{}                          -> "NoParseForLHS" --  NoParseForPatternSynonym{}               -> "NoParseForPatternSynonym"   NoRHSRequiresAbsurdPattern{}             -> "NoRHSRequiresAbsurdPattern"-  AbsurdPatternRequiresNoRHS{}             -> "AbsurdPatternRequiresNoRHS"   NoSuchBuiltinName{}                      -> "NoSuchBuiltinName"   NoSuchModule{}                           -> "NoSuchModule"+  DuplicatePrimitiveBinding{}              -> "DuplicatePrimitiveBinding"   NoSuchPrimitiveFunction{}                -> "NoSuchPrimitiveFunction"   NotAModuleExpr{}                         -> "NotAModuleExpr"   NotAProperTerm                           -> "NotAProperTerm"-  SetOmegaNotValidType{}                   -> "SetOmegaNotValidType"   InvalidType{}                            -> "InvalidType"   InvalidTypeSort{}                        -> "InvalidTypeSort"   FunctionTypeInSizeUniv{}                 -> "FunctionTypeInSizeUniv"@@ -396,20 +445,22 @@   ShouldBeAppliedToTheDatatypeParameters{} -> "ShouldBeAppliedToTheDatatypeParameters"   ShouldBeEmpty{}                          -> "ShouldBeEmpty"   ShouldBePi{}                             -> "ShouldBePi"+  ShouldBePath{}                           -> "ShouldBePath"   ShouldBeRecordType{}                     -> "ShouldBeRecordType"   ShouldBeRecordPattern{}                  -> "ShouldBeRecordPattern"   NotAProjectionPattern{}                  -> "NotAProjectionPattern"   ShouldEndInApplicationOfTheDatatype{}    -> "ShouldEndInApplicationOfTheDatatype"   SplitError{}                             -> "SplitError"   ImpossibleConstructor{}                  -> "ImpossibleConstructor"-  TerminationCheckFailed{}                 -> "TerminationCheckFailed"   TooFewFields{}                           -> "TooFewFields"   TooManyFields{}                          -> "TooManyFields"   TooManyPolarities{}                      -> "TooManyPolarities"   SplitOnIrrelevant{}                      -> "SplitOnIrrelevant"+  -- UNUSED: -- SplitOnErased{}                          -> "SplitOnErased"   SplitOnNonVariable{}                     -> "SplitOnNonVariable"   DefinitionIsIrrelevant{}                 -> "DefinitionIsIrrelevant"   VariableIsIrrelevant{}                   -> "VariableIsIrrelevant"+  VariableIsErased{}                       -> "VariableIsErased"   UnequalBecauseOfUniverseConflict{}       -> "UnequalBecauseOfUniverseConflict"   UnequalRelevance{}                       -> "UnequalRelevance"   UnequalHiding{}                          -> "UnequalHiding"@@ -422,7 +473,6 @@   UnexpectedWithPatterns{}                 -> "UnexpectedWithPatterns"   UninstantiatedDotPattern{}               -> "UninstantiatedDotPattern"   ForcedConstructorNotInstantiated{}       -> "ForcedConstructorNotInstantiated"-  UninstantiatedModule{}                   -> "UninstantiatedModule"   SolvedButOpenHoles{}                     -> "SolvedButOpenHoles"   UnusedVariableInPatternSynonym           -> "UnusedVariableInPatternSynonym"   UnquoteFailed{}                          -> "UnquoteFailed"@@ -431,14 +481,15 @@   WrongHidingInApplication{}               -> "WrongHidingInApplication"   WrongHidingInLHS{}                       -> "WrongHidingInLHS"   WrongHidingInLambda{}                    -> "WrongHidingInLambda"-  WrongInstanceDeclaration{}               -> "WrongInstanceDeclaration"   WrongIrrelevanceInLambda{}               -> "WrongIrrelevanceInLambda"+  WrongQuantityInLambda{}                  -> "WrongQuantityInLambda"   WrongNamedArgument{}                     -> "WrongNamedArgument"   WrongNumberOfConstructorArguments{}      -> "WrongNumberOfConstructorArguments"   HidingMismatch{}                         -> "HidingMismatch"   RelevanceMismatch{}                      -> "RelevanceMismatch"   NonFatalErrors{}                         -> "NonFatalErrors"   InstanceSearchDepthExhausted{}           -> "InstanceSearchDepthExhausted"+  TriedToCopyConstrainedPrim{}             -> "TriedToCopyConstrainedPrim"  instance PrettyTCM TCErr where   prettyTCM err = case err of@@ -449,8 +500,8 @@     -- Andreas, 2014-03-23     -- This use of localState seems ok since we do not collect     -- Benchmark info during printing errors.-    TypeError s e -> localState $ do-      put s+    TypeError s e -> localTCState $ do+      putTC s       sayWhen (envRange $ clEnv e) (envCall $ clEnv e) $ prettyTCM e     Exception r s     -> sayWhere r $ return s     IOException _ r e -> sayWhere r $ fwords $ show e@@ -462,7 +513,7 @@         r    = callInfoRange c     if null $ P.pretty r       then call-      else call $$ nest 2 (text "(at" <+> prettyTCM r <> text ")")+      else call $$ nest 2 ("(at" <+> prettyTCM r <> ")")  -- | Drops given amount of leading components of the qualified name. dropTopLevelModule' :: Int -> QName -> QName@@ -475,7 +526,7 @@ -- | Produces a function which drops the filename component of the qualified name. topLevelModuleDropper :: TCM (QName -> QName) topLevelModuleDropper = do-  caseMaybeM (asks envCurrentPath) (return id) $ \ f -> do+  caseMaybeM (asksTC envCurrentPath) (return id) $ \ f -> do   m <- fromMaybe __IMPOSSIBLE__ <$> lookupModuleFromSource f   return $ dropTopLevelModule' $ size m @@ -493,17 +544,6 @@      GenericDocError d -> return d -    TerminationCheckFailed because -> do-      dropTopLevel <- topLevelModuleDropper-      fwords "Termination checking failed for the following functions:"-        $$ (nest 2 $ fsep $ punctuate comma $-             map (pretty . dropTopLevel) $-               concatMap termErrFunctions because)-        $$ fwords "Problematic calls:"-        $$ (nest 2 $ fmap (P.vcat . nub) $-              mapM prettyTCM $ sortBy (compare `on` callInfoRange) $-              concatMap termErrCalls because)-     PropMustBeSingleton -> fwords       "Datatypes in Prop must have at most one constructor when proof irrelevance is enabled" @@ -536,9 +576,6 @@     NotAProjectionPattern p -> fsep $       pwords "Not a valid projection for a copattern: " ++ [ prettyA p ] -    DifferentArities ->-      fwords "The number of arguments in the defining equations differ"-     WrongHidingInLHS -> fwords "Unexpected implicit argument"      WrongHidingInLambda t ->@@ -547,6 +584,9 @@     WrongIrrelevanceInLambda ->       fwords "Found a non-strict lambda where a irrelevant lambda was expected" +    WrongQuantityInLambda ->+      fwords "Incorrect quantity annotation in lambda"+     WrongNamedArgument a -> fsep $       pwords "Function does not accept argument "       ++ [prettyTCM a] -- ++ pwords " (wrong argument name)"@@ -554,8 +594,6 @@     WrongHidingInApplication t ->       fwords "Found an implicit application where an explicit application was expected" -    WrongInstanceDeclaration -> fwords "Terms marked as eligible for instance search should end with a name"-     HidingMismatch h h' -> fwords $       "Expected " ++ verbalize (Indefinite h') ++ " argument, but found " ++       verbalize (Indefinite h) ++ " argument"@@ -582,12 +620,29 @@     CannotEliminateWithPattern p a -> do       let isProj = isJust (isProjP p)       fsep $-        pwords "Cannot eliminate type" ++ prettyTCM a :-        if isProj then-           pwords "with projection pattern" ++ [prettyA p]-         else-           pwords "with pattern" ++ prettyA p :-           pwords "(did you supply too many arguments?)"+        pwords "Cannot eliminate type" ++ prettyTCM a : if+         | isProj -> pwords "with projection pattern" ++ [prettyA p]+         | A.ProjP _ _ f <- namedArg p -> pwords "with pattern" ++ [prettyA p] +++             pwords "(suggestion: write" ++ [".(" <> prettyA (A.Proj ProjPrefix f) <> ")"] ++ pwords "for a dot pattern," +++             pwords "or remove the braces for a postfix projection)"+         | otherwise ->+             "with" : text (kindOfPattern (namedArg p)) : "pattern" : prettyA p :+             pwords "(did you supply too many arguments?)"+      where+      kindOfPattern = \case+        A.VarP{}    -> "variable"+        A.ConP{}    -> "constructor"+        A.ProjP{}   -> __IMPOSSIBLE__+        A.DefP{}    -> __IMPOSSIBLE__+        A.WildP{}   -> "wildcard"+        A.DotP{}    -> "dot"+        A.AbsurdP{} -> "absurd"+        A.LitP{}    -> "literal"+        A.RecP{}    -> "record"+        A.WithP{}   -> "with"+        A.EqualP{}  -> "equality"+        A.AsP _ _ p -> kindOfPattern p+        A.PatternSynP{} -> __IMPOSSIBLE__      WrongNumberOfConstructorArguments c expect given -> fsep $       pwords "The constructor" ++ [prettyTCM c] ++@@ -638,13 +693,13 @@         return $ fromMaybe (noRange, m0) $ headMaybe rms        fsep $-        pwords "Duplicate definition of module" ++ [prettyTCM x <> text "."] +++        pwords "Duplicate definition of module" ++ [prettyTCM x <> "."] ++         pwords "Previous definition of" ++ [help m] ++ pwords "module" ++ [prettyTCM x] ++         pwords "at" ++ [prettyTCM r]       where         help m = caseMaybeM (isDatatypeModule m) empty $ \case-          IsData   -> text "(datatype)"-          IsRecord -> text "(record)"+          IsData   -> "(datatype)"+          IsRecord -> "(record)"      ModuleArityMismatch m EmptyTel args -> fsep $       pwords "The module" ++ [prettyTCM m] ++@@ -668,9 +723,10 @@     ShouldBePi t -> fsep $       [prettyTCM t] ++ pwords "should be a function type, but it isn't" -    NotAProperTerm -> fwords "Found a malformed term"+    ShouldBePath t -> fsep $+      [prettyTCM t] ++ pwords "should be a Path or PathP type, but it isn't" -    SetOmegaNotValidType -> fwords "Setω is not a valid type"+    NotAProperTerm -> fwords "Found a malformed term"      InvalidTypeSort s -> fsep $ [prettyTCM s] ++ pwords "is not a valid type"     InvalidType v -> fsep $ [prettyTCM v] ++ pwords "is not a valid type"@@ -681,22 +737,40 @@      SplitOnIrrelevant t -> fsep $       pwords "Cannot pattern match against" ++ [text $ verbalize $ getRelevance t] ++-      pwords "argument of type" ++ [prettyTCM t]+      pwords "argument of type" ++ [prettyTCM $ unDom t] +    -- UNUSED:+    -- SplitOnErased t -> fsep $+    --   pwords "Cannot pattern match against" ++ [text $ verbalize $ getQuantity t] +++    --   pwords "argument of type" ++ [prettyTCM $ unDom t]+     SplitOnNonVariable v t -> fsep $       pwords "Cannot pattern match because the (refined) argument " ++       [ prettyTCM v ] ++ pwords " is not a variable."      DefinitionIsIrrelevant x -> fsep $-      text "Identifier" : prettyTCM x : pwords "is declared irrelevant, so it cannot be used here"+      "Identifier" : prettyTCM x : pwords "is declared irrelevant, so it cannot be used here"+     VariableIsIrrelevant x -> fsep $-      text "Variable" : prettyTCM x : pwords "is declared irrelevant, so it cannot be used here"+      "Variable" : prettyTCM (nameConcrete x) : pwords "is declared irrelevant, so it cannot be used here"++    VariableIsErased x -> fsep $+      "Variable" : prettyTCM (nameConcrete x) : pwords "is declared erased, so it cannot be used here"+     UnequalBecauseOfUniverseConflict cmp s t -> fsep $-      [prettyTCM s, notCmp cmp, prettyTCM t, text "because this would result in an invalid use of Setω" ]+      [prettyTCM s, notCmp cmp, prettyTCM t, "because this would result in an invalid use of Setω" ] -    UnequalTerms cmp s t a -> do-      (d1, d2, d) <- prettyInEqual s t-      fsep $ [return d1, notCmp cmp, return d2] ++ pwords "of type" ++ [prettyTCM a] ++ [return d]+    UnequalTerms cmp s t a -> case (s,t) of+      (Sort s1      , Sort s2      )+        | CmpEq  <- cmp              -> prettyTCM $ UnequalSorts s1 s2+        | CmpLeq <- cmp              -> prettyTCM $ NotLeqSort s1 s2+      (Sort MetaS{} , t            ) -> prettyTCM $ ShouldBeASort $ El Inf t+      (s            , Sort MetaS{} ) -> prettyTCM $ ShouldBeASort $ El Inf s+      (Sort DefS{}  , t            ) -> prettyTCM $ ShouldBeASort $ El Inf t+      (s            , Sort DefS{}  ) -> prettyTCM $ ShouldBeASort $ El Inf s+      (_            , _            ) -> do+        (d1, d2, d) <- prettyInEqual s t+        fsep $ [return d1, notCmp cmp, return d2] ++ pwords "of type" ++ [prettyTCM a] ++ [return d]  -- UnequalLevel is UNUSED --   UnequalLevel cmp s t -> fsep $@@ -714,15 +788,14 @@       pwords "because one is a relevant function type and the other is an irrelevant function type"      UnequalHiding a b -> fsep $-      [prettyTCM a, text "!=", prettyTCM b] +++      [prettyTCM a, "!=", prettyTCM b] ++       pwords "because one is an implicit function type and the other is an explicit function type"      UnequalSorts s1 s2 -> fsep $-      [prettyTCM s1, text "!=", prettyTCM s2]+      [prettyTCM s1, "!=", prettyTCM s2]      NotLeqSort s1 s2 -> fsep $-      pwords "The type of the constructor does not fit in the sort of the datatype, since"-      ++ [prettyTCM s1] ++ pwords "is not less or equal than" ++ [prettyTCM s2]+      [prettyTCM s1] ++ pwords "is not less or equal than" ++ [prettyTCM s2]      TooFewFields r xs -> fsep $       pwords "Missing fields" ++ punctuate comma (map pretty xs) ++@@ -752,7 +825,7 @@           pwords " bound in a module telescope (or patterns of a parent clause)"      UnexpectedWithPatterns ps -> fsep $-      pwords "Unexpected with patterns" ++ (punctuate (text " |") $ map prettyA ps)+      pwords "Unexpected with patterns" ++ (punctuate " |" $ map prettyA ps)      WithClausePatternMismatch p q -> fsep $       pwords "With clause pattern " ++ [prettyA p] ++@@ -795,6 +868,10 @@         pwords "No binding for builtin thing" ++ [text x <> comma] ++         pwords ("use {-# BUILTIN " ++ x ++ " name #-} to bind it to 'name'") +    DuplicatePrimitiveBinding b x y -> fsep $+      pwords "Duplicate binding for primitive thing" ++ [text b <> comma] +++      pwords "previous binding to" ++ [prettyTCM x]+     NoSuchPrimitiveFunction x -> fsep $       pwords "There is no primitive function called" ++ [text x] @@ -811,10 +888,6 @@       "The right-hand side can only be omitted if there " ++       "is an absurd pattern, () or {}, in the left-hand side." -    AbsurdPatternRequiresNoRHS ps -> fwords $-      "The right-hand side must be omitted if there " ++-      "is an absurd pattern, () or {}, in the left-hand side."-     LocalVsImportedModuleClash m -> fsep $       pwords "The module" ++ [prettyTCM m] ++       pwords "can refer to either a local module or an imported module"@@ -852,9 +925,9 @@      ModuleDefinedInOtherFile mod file file' -> fsep $       pwords "You tried to load" ++ [text (filePath file)] ++-      pwords "which defines the module" ++ [pretty mod <> text "."] +++      pwords "which defines the module" ++ [pretty mod <> "."] ++       pwords "However, according to the include path this module should" ++-      pwords "be defined in" ++ [text (filePath file') <> text "."]+      pwords "be defined in" ++ [text (filePath file') <> "."]      ModuleNameUnexpected given expected -> fsep $       pwords "The name of the top level module does not match the file name. The module" ++@@ -870,7 +943,7 @@     BothWithAndRHS -> fsep $ pwords "Unexpected right hand side"      AbstractConstructorNotInScope q -> fsep $-      [ text "Constructor"+      [ "Constructor"       , prettyTCM q       ] ++ pwords "is abstract, thus, not in scope here" @@ -880,14 +953,14 @@       where       name inscope x =         fsep [ pretty x-             , text "at" <+> prettyTCM (getRange x)+             , "at" <+> prettyTCM (getRange x)              , suggestion inscope x              ]       suggestion inscope x = nest 2 $ par $-        [ text "did you forget space around the ':'?"  | elem ':' s ] ++-        [ text "did you forget space around the '->'?" | isInfixOf "->" s ] ++-        [ sep [ text "did you mean"-              , nest 2 $ vcat (punctuate (text " or") $ map (\ y -> text $ "'" ++ y ++ "'") ys) <> text "?" ]+        [ "did you forget space around the ':'?"  | elem ':' s ] +++        [ "did you forget space around the '->'?" | isInfixOf "->" s ] +++        [ sep [ "did you mean"+              , nest 2 $ vcat (punctuate " or" $ map (\ y -> text $ "'" ++ y ++ "'") ys) <> "?" ]           | not $ null ys ]         where           s = P.prettyShow x@@ -900,17 +973,17 @@           close a b = editDistance a b <= maxDist (length a)           ys = map P.prettyShow $ filter (close (strip x) . strip) inscope -    NoSuchModule x -> fsep $ pwords "No such module" ++ [pretty x]+    NoSuchModule x -> fsep $ pwords "No module" ++ [pretty x] ++ pwords "in scope"      AmbiguousName x ys -> vcat-      [ fsep $ pwords "Ambiguous name" ++ [pretty x <> text "."] +++      [ fsep $ pwords "Ambiguous name" ++ [pretty x <> "."] ++                pwords "It could refer to any one of"       , nest 2 $ vcat $ map nameWithBinding (toList ys)       , fwords "(hint: Use C-c C-w (in Emacs) if you want to know why)"       ]      AmbiguousModule x ys -> vcat-      [ fsep $ pwords "Ambiguous module name" ++ [pretty x <> text "."] +++      [ fsep $ pwords "Ambiguous module name" ++ [pretty x <> "."] ++                pwords "It could refer to any one of"       , nest 2 $ vcat $ map help (toList ys)       , fwords "(hint: Use C-c C-w (in Emacs) if you want to know why)"@@ -919,30 +992,24 @@         help :: ModuleName -> TCM Doc         help m = do           anno <- caseMaybeM (isDatatypeModule m) (return empty) $ \case-            IsData   -> return $ text "(datatype module)"-            IsRecord -> return $ text "(record module)"+            IsData   -> return $ "(datatype module)"+            IsRecord -> return $ "(record module)"           sep [prettyTCM m, anno ] -    UninstantiatedModule x -> fsep (-      pwords "Cannot access the contents of the parameterised module"-      ++ [pretty x <> text "."] ++-      pwords "To do this the module first has to be instantiated. For instance:"-        ) $$ nest 2 (hsep [ text "module", pretty x <> text "'", text "=", pretty x, text "e1 .. en" ])-     ClashingDefinition x y -> fsep $-      pwords "Multiple definitions of" ++ [pretty x <> text "."] +++      pwords "Multiple definitions of" ++ [pretty x <> "."] ++       pwords "Previous definition at"       ++ [prettyTCM $ nameBindingSite $ qnameName y]      ClashingModule m1 m2 -> fsep $-      pwords "The modules" ++ [prettyTCM m1, text "and", prettyTCM m2]+      pwords "The modules" ++ [prettyTCM m1, "and", prettyTCM m2]       ++ pwords "clash."      ClashingImport x y -> fsep $-      pwords "Import clash between" ++ [pretty x, text "and", prettyTCM y]+      pwords "Import clash between" ++ [pretty x, "and", prettyTCM y]      ClashingModuleImport x y -> fsep $-      pwords "Module import clash between" ++ [pretty x, text "and", prettyTCM y]+      pwords "Module import clash between" ++ [pretty x, "and", prettyTCM y]      PatternShadowsConstructor x c -> fsep $       pwords "The pattern variable" ++ [prettyTCM x] ++@@ -952,14 +1019,10 @@       pwords "Ambiguous imports from module" ++ [pretty m] ++ pwords "for" ++       punctuate comma (map pretty xs) -    ModuleDoesntExport m xs -> fsep $-      pwords "The module" ++ [pretty m] ++ pwords "doesn't export the following:" ++-      punctuate comma (map pretty xs)-     NotAModuleExpr e -> fsep $       pwords "The right-hand side of a module definition must have the form 'M e1 .. en'" ++       pwords "where M is a module name. The expression"-      ++ [pretty e, text "doesn't."]+      ++ [pretty e, "doesn't."]      FieldOutsideRecord -> fsep $       pwords "Field appearing outside record declaration."@@ -991,7 +1054,7 @@       pwords "Could not parse the application" ++ [pretty $ C.RawApp noRange es])      AmbiguousParseForApplication es es' -> fsep (-      pwords "Don't know how to parse" ++ [pretty_es <> (text ".")] +++      pwords "Don't know how to parse" ++ [pretty_es <> "."] ++       pwords "Could mean any one of:"       ) $$ nest 2 (vcat $ map pretty' es')       where@@ -1011,7 +1074,7 @@               foldl (C.App r) (C.Ident op) $                 (map . fmap . fmap) fromOrdinary xs           | any (isPlaceholder . namedArg) xs =-              pretty e <+> text "(section)"+              pretty e <+> "(section)"         unambiguous e = pretty e          isOrdinary :: MaybePlaceholder (C.OpApp e) -> Bool@@ -1040,7 +1103,7 @@       ]       where         (x, _) = headNe defs-        prDef (x, (xs, p)) = prettyA (A.PatternSynDef x xs p) <?> (text "at" <+> pretty r)+        prDef (x, (xs, p)) = prettyA (A.PatternSynDef x xs p) <?> ("at" <+> pretty r)           where r = nameBindingSite $ qnameName x      UnusedVariableInPatternSynonym -> fsep $@@ -1058,7 +1121,7 @@ -}      AmbiguousParseForLHS lhsOrPatSyn p ps -> fsep (-      pwords "Don't know how to parse" ++ [pretty_p <> text "."] +++      pwords "Don't know how to parse" ++ [pretty_p <> "."] ++       pwords "Could mean any one of:"       ) $$ nest 2 (vcat $ map pretty' ps)       where@@ -1088,7 +1151,7 @@       fsep (pwords "Operators used in the grammar:")         $$       nest 2-        (if null sects then text "None" else+        (if null sects then "None" else          vcat (map text $                lines $                Boxes.render $@@ -1101,7 +1164,7 @@                filter (not . closedWithoutHoles) sects))       where       trimLeft  = dropWhile isNormalHole-      trimRight = reverse . dropWhile isNormalHole . reverse+      trimRight = dropWhileEnd isNormalHole        closedWithoutHoles sect =         sectKind sect == NonfixNotation@@ -1133,11 +1196,11 @@              ")")             Boxes.//           strut-        , Boxes.text "["+        , "["             Boxes.<>           Boxes.vcat Boxes.left-            (map (\n -> prettyName n Boxes.<> Boxes.text ",") names ++-             [prettyName name Boxes.<> Boxes.text "]"])+            (map (\n -> prettyName n Boxes.<> ",") names +++             [prettyName name Boxes.<> "]"])         )         where         nota    = sectNotation sect@@ -1148,7 +1211,7 @@                     (trim (notation nota))          qualifyFirstIdPart _ []              = []-        qualifyFirstIdPart q (IdPart x : ps) = IdPart (q ++ x) : ps+        qualifyFirstIdPart q (IdPart x : ps) = IdPart (fmap (q ++) x) : ps         qualifyFirstIdPart q (p : ps)        = p : qualifyFirstIdPart q ps          trim = case sectKind sect of@@ -1177,14 +1240,14 @@  {- UNUSED     AmbiguousParseForPatternSynonym p ps -> fsep (-      pwords "Don't know how to parse" ++ [pretty p <> text "."] +++      pwords "Don't know how to parse" ++ [pretty p <> "."] ++       pwords "Could mean any one of:"       ) $$ nest 2 (vcat $ map pretty ps) -}  {- UNUSED     IncompletePatternMatching v args -> fsep $-      pwords "Incomplete pattern matching for" ++ [prettyTCM v <> text "."] +++      pwords "Incomplete pattern matching for" ++ [prettyTCM v <> "."] ++       pwords "No match for" ++ map prettyTCM args -} @@ -1200,8 +1263,14 @@       [prettyTCM x] ++       pwords "(at most" ++ [text (show n)] ++ pwords "allowed)." -    IFSNoCandidateInScope t -> fsep $-      pwords "No instance of type" ++ [prettyTCM t] ++ pwords "was found in scope."+    InstanceNoCandidate t errs -> vcat $+      [ fsep $ pwords "No instance of type" ++ [prettyTCM t] ++ pwords "was found in scope."+      , vcat $ map prCand errs ]+      where+        prCand (term, err) =+          text "-" <+>+            vcat [ prettyTCM term <?> text "was ruled out because"+                 , prettyTCM err ]      UnquoteFailed e -> case e of       BadVisibility msg arg -> fsep $@@ -1228,11 +1297,11 @@         pwords $ "de Bruijn index " ++ show i ++ " is not in scope in the empty context"     DeBruijnIndexOutOfScope i cxt names ->         sep [ text ("de Bruijn index " ++ show i ++ " is not in scope in the context")-            , inTopContext $ addContext "_" $ prettyTCM cxt' ]+            , inTopContext $ addContext ("_" :: String) $ prettyTCM cxt' ]       where         cxt' = cxt `abstract` raise (size cxt) (nameCxt names)         nameCxt [] = EmptyTel-        nameCxt (x : xs) = ExtendTel (defaultDom (El I.Prop $ I.var 0)) $+        nameCxt (x : xs) = ExtendTel (defaultDom (El __DUMMY_SORT__ $ I.var 0)) $           NoAbs (P.prettyShow x) $ nameCxt xs      NeedOptionCopatterns -> fsep $@@ -1241,12 +1310,37 @@     NeedOptionRewriting  -> fsep $       pwords "Option --rewriting needed to add and use rewrite rules" +    NeedOptionProp       -> fsep $+      pwords "Universe Prop is disabled (use options --prop and --no-prop to enable/disable Prop)"++    GeneralizeNotSupportedHere x -> fsep $+      pwords $ "Generalizable variable " ++ show x ++ " is not supported here"++    GeneralizeCyclicDependency -> fsep $+      pwords "Cyclic dependency between generalized variables"++    GeneralizeUnsolvedMeta -> fsep $+      pwords "Unsolved meta not generalized"++    MultipleFixityDecls xs ->+      sep [ fsep $ pwords "Multiple fixity or syntax declarations for"+          , vcat $ map f xs+          ]+      where+        f (x, fs) = pretty x <> ": " <+> fsep (map pretty fs)++    MultiplePolarityPragmas xs -> fsep $+      pwords "Multiple polarity pragmas for" ++ map pretty xs+     NonFatalErrors ws -> foldr1 ($$) $ fmap prettyTCM ws      InstanceSearchDepthExhausted c a d -> fsep $       pwords ("Instance search depth exhausted (max depth: " ++ show d ++ ") for candidate") ++-      [hang (prettyTCM c <+> text ":") 2 (prettyTCM a)]+      [hang (prettyTCM c <+> ":") 2 (prettyTCM a)] +    TriedToCopyConstrainedPrim q -> fsep $+      pwords "Cannot create a module containing a copy of" ++ [prettyTCM q]+     where     mpar n args       | n > 0 && not (null args) = parens@@ -1259,16 +1353,20 @@       NotHidden  -> prettyPat 1 x      prettyPat :: Integer -> (I.Pattern' a) -> TCM Doc-    prettyPat _ (I.VarP _ _) = text "_"-    prettyPat _ (I.DotP _ _) = text "._"+    prettyPat _ (I.VarP _ _) = "_"+    prettyPat _ (I.DotP _ _) = "._"     prettyPat n (I.ConP c _ args) =       mpar n args $         prettyTCM c <+> fsep (map (prettyArg . fmap namedThing) args)+    prettyPat n (I.DefP o q args) =+      mpar n args $+        prettyTCM q <+> fsep (map (prettyArg . fmap namedThing) args)     prettyPat _ (I.LitP l) = prettyTCM l-    prettyPat _ (I.ProjP _ p) = text "." <> prettyTCM p+    prettyPat _ (I.ProjP _ p) = "." <> prettyTCM p+    prettyPat _ (I.IApplyP _ _ _ _) = "_"  notCmp :: Comparison -> TCM Doc-notCmp cmp = text "!" <> prettyTCM cmp+notCmp cmp = "!" <> prettyTCM cmp  -- | Print two terms that are supposedly unequal. --   If they print to the same identifier, add some explanation@@ -1322,6 +1420,9 @@     IrrelevantDatatype t -> enterClosure t $ \ t -> fsep $       pwords "Cannot split on argument of irrelevant datatype" ++ [prettyTCM t] +    ErasedDatatype t -> enterClosure t $ \ t -> fsep $+      pwords "Cannot branch on erased argument of datatype" ++ [prettyTCM t]+     CoinductiveDatatype t -> enterClosure t $ \ t -> fsep $       pwords "Cannot pattern match on the coinductive type" ++ [prettyTCM t] @@ -1335,28 +1436,49 @@       | length cIxs /= length gIxs -> __IMPOSSIBLE__       | otherwise                  -> vcat $           [ fsep $ pwords "I'm not sure if there should be a case for the constructor" ++-                   [prettyTCM c <> text ","] +++                   [prettyTCM c <> ","] ++                    pwords "because I get stuck when trying to solve the following" ++                    pwords "unification problems (inferred index ≟ expected index):"           ] ++-          zipWith (\c g -> nest 2 $ addContext tel $ prettyTCM c <+> text "≟" <+> prettyTCM g) cIxs gIxs +++          zipWith (\c g -> nest 2 $ addContext tel $ prettyTCM c <+> "≟" <+> prettyTCM g) cIxs gIxs ++           if null errs then [] else             [ fsep $ pwords "Possible" ++ pwords (singPlural errs "reason" "reasons") ++                      pwords "why unification failed:" ] ++             map (nest 2 . prettyTCM) errs +    CosplitCatchall -> fsep $+      pwords "Cannot split into projections because not all clauses have a projection copattern"++    CosplitNoTarget -> fsep $+      pwords "Cannot split into projections because target type is unknown"++    CosplitNoRecordType t -> enterClosure t $ \t -> fsep $+      pwords "Cannot split into projections because the target type "+      ++ [prettyTCM t] ++ pwords " is not a record type"++    CannotCreateMissingClause f cl msg t -> fsep (+      pwords "Cannot generate inferred clause for" ++ [prettyTCM f <> "."] +++      pwords "Case to handle:") $$ nest 2 (vcat $ [display cl])+                                $$ (pure msg <+> enterClosure t displayAbs <> ".")+        where+        displayAbs (Abs x t) = addContext x $ prettyTCM t+        displayAbs (NoAbs x t) = prettyTCM t+        display (tel, ps) = prettyTCM $ NamedClause f True $+          empty { clauseTel = tel, namedClausePats = ps }++     GenericSplitError s -> fsep $ pwords "Split failed:" ++ pwords s  instance PrettyTCM NegativeUnification where   prettyTCM err = case err of     UnifyConflict tel u v -> addContext tel $ vcat $       [ fsep $ pwords "because unification ended with a conflicting equation "-      , nest 2 $ prettyTCM u <+> text "≟" <+> prettyTCM v+      , nest 2 $ prettyTCM u <+> "≟" <+> prettyTCM v       ]      UnifyCycle tel i u -> addContext tel $ vcat $       [ fsep $ pwords "because unification ended with a cyclic equation "-      , nest 2 $ prettyTCM (var i) <+> text "≟" <+> prettyTCM u+      , nest 2 $ prettyTCM (var i) <+> "≟" <+> prettyTCM u       ]  instance PrettyTCM UnificationFailure where@@ -1365,7 +1487,7 @@       pwords "Cannot apply injectivity to the equation" ++ [prettyTCM u] ++       pwords "=" ++ [prettyTCM v] ++ pwords "of type" ++ [prettyTCM a] ++       pwords "because I cannot generalize over the indices" ++-      [prettyList (map prettyTCM ixs) <> text "."]+      [prettyList (map prettyTCM ixs) <> "."]      UnifyRecursiveEq tel a i u -> addContext tel $ fsep $       pwords "Cannot solve variable " ++ [prettyTCM (var i)] ++@@ -1399,7 +1521,7 @@      InferExpr e -> fsep $ pwords "when inferring the type of" ++ [prettyA e] -    CheckExprCall e t -> fsep $+    CheckExprCall cmp e t -> fsep $       pwords "when checking that the expression"       ++ [prettyA e] ++ pwords "has type" ++ [prettyTCM t] @@ -1413,7 +1535,7 @@      CheckProjection _ x t -> fsep $       pwords "when checking the projection" ++-      [ sep [ prettyTCM x <+> text ":"+      [ sep [ prettyTCM x <+> ":"             , nest 2 $ prettyTCM t ] ]      CheckArguments r es t0 t1 -> fsep $@@ -1424,9 +1546,9 @@       [prettyTCM t0]      CheckTargetType r infTy expTy -> sep-      [ text "when checking that the inferred type of an application"+      [ "when checking that the inferred type of an application"       , nest 2 $ prettyTCM infTy-      , text "matches the expected type"+      , "matches the expected type"       , nest 2 $ prettyTCM expTy ]      CheckRecDef _ x ps cs ->@@ -1441,6 +1563,12 @@      CheckConstructor{} -> __IMPOSSIBLE__ +    CheckConstructorFitsIn c t s -> fsep $+      pwords "when checking that the type" ++ [prettyTCM t] +++      pwords "of the constructor" ++ [prettyTCM c] +++      pwords "fits in the sort" ++ [prettyTCM s] +++      pwords "of the datatype."+     CheckFunDefCall _ f _ ->       fsep $ pwords "when checking the definition of" ++ [prettyTCM f] @@ -1452,9 +1580,9 @@       pwords "when checking that the type of the primitive function" ++       [prettyTCM x] ++ pwords "is" ++ [prettyA e] -    CheckWithFunctionType e -> fsep $+    CheckWithFunctionType a -> fsep $       pwords "when checking that the type" ++-      [prettyA e] ++ pwords "of the generated with function is well-formed"+      [prettyTCM a] ++ pwords "of the generated with function is well-formed"      CheckDotPattern e v -> fsep $       pwords "when checking that the given dot pattern" ++ [prettyA e] ++@@ -1527,6 +1655,12 @@       Relevant   -> "relevant"       Irrelevant -> "irrelevant"       NonStrict  -> "shape-irrelevant"++instance Verbalize Quantity where+  verbalize = \case+    Quantity0 -> "erased"+    Quantity1 -> "linear"+    Quantityω -> "unrestricted"  -- | Indefinite article. data Indefinite a = Indefinite a
src/full/Agda/TypeChecking/EtaContract.hs view
@@ -42,6 +42,7 @@   Sort _     -> noApp   MetaV _ _  -> noApp   DontCare _ -> noApp+  Dummy{}    -> __IMPOSSIBLE__   where     noApp = NoApp t     app f [] = noApp@@ -54,43 +55,44 @@ -- | Contracts all eta-redexes it sees without reducing. {-# SPECIALIZE etaContract :: TermLike a => a -> TCM a #-} {-# SPECIALIZE etaContract :: TermLike a => a -> ReduceM a #-}-etaContract :: (MonadReader TCEnv m, HasConstInfo m, HasOptions m, TermLike a) => a -> m a+etaContract :: (MonadTCEnv m, HasConstInfo m, HasOptions m, TermLike a) => a -> m a etaContract = traverseTermM etaOnce  {-# SPECIALIZE etaOnce :: Term -> TCM Term #-} {-# SPECIALIZE etaOnce :: Term -> ReduceM Term #-}-etaOnce :: (MonadReader TCEnv m, HasConstInfo m, HasOptions m) => Term -> m Term+etaOnce :: (MonadTCEnv m, HasConstInfo m, HasOptions m) => Term -> m Term etaOnce v = case v of   -- Andreas, 2012-11-18: this call to reportSDoc seems to cost me 2%   -- performance on the std-lib-  -- reportSDoc "tc.eta" 70 $ text "eta-contracting" <+> prettyTCM v+  -- reportSDoc "tc.eta" 70 $ "eta-contracting" <+> prettyTCM v   Lam i (Abs x b) -> etaLam i x b  -- NoAbs can't be eta'd    -- Andreas, 2012-12-18:  Abstract definitions could contain   -- abstract records whose constructors are not in scope.   -- To be able to eta-contract them, we ignore abstract.-  Con c ci es | Just args <- allApplyElims es -> do-    etaCon c ci args etaContractRecord+  Con c ci es -> do+    etaCon c ci es etaContractRecord   v -> return v  -- | If record constructor, call eta-contraction function.-etaCon :: (MonadReader TCEnv m, HasConstInfo m, HasOptions m)+etaCon :: (MonadTCEnv m, HasConstInfo m, HasOptions m)   => ConHead  -- ^ Constructor name @c@.   -> ConInfo  -- ^ Constructor info @ci@.-  -> Args     -- ^ Constructor arguments @args@.+  -> Elims     -- ^ Constructor arguments @args@.   -> (QName -> ConHead -> ConInfo -> Args -> m Term)               -- ^ Eta-contraction workhorse, gets also name of record type.   -> m Term   -- ^ Returns @Con c ci args@ or its eta-contraction.-etaCon c ci args cont = ignoreAbstractMode $ do-  let fallback = return $ Con c ci $ map Apply args-  -- reportSDoc "tc.eta" 20 $ text "eta-contracting record" <+> prettyTCM t+etaCon c ci es cont = ignoreAbstractMode $ do+  let fallback = return $ Con c ci $ es+  -- reportSDoc "tc.eta" 20 $ "eta-contracting record" <+> prettyTCM t   r <- getConstructorData $ conName c -- fails in ConcreteMode if c is abstract   ifNotM (isEtaRecord r) fallback $ {-else-} do-    -- reportSDoc "tc.eta" 20 $ text "eta-contracting record" <+> prettyTCM t+    -- reportSDoc "tc.eta" 20 $ "eta-contracting record" <+> prettyTCM t+    let Just args = allApplyElims es     cont r c ci args  -- | Try to contract a lambda-abstraction @Lam i (Abs x b)@.-etaLam :: (MonadReader TCEnv m, HasConstInfo m, HasOptions m)+etaLam :: (MonadTCEnv m, HasConstInfo m, HasOptions m)   => ArgInfo  -- ^ Info @i@ of the 'Lam'.   -> ArgName  -- ^ Name @x@ of the abstraction.   -> Term     -- ^ Body ('Term') @b@ of the 'Abs'.
+ src/full/Agda/TypeChecking/EtaExpand.hs view
@@ -0,0 +1,44 @@+{-# LANGUAGE CPP #-}++-- | Compute eta long normal forms.+module Agda.TypeChecking.EtaExpand where++import Agda.Syntax.Common+import Agda.Syntax.Internal++import Agda.TypeChecking.CheckInternal+import Agda.TypeChecking.Monad+import Agda.TypeChecking.Records+import Agda.TypeChecking.Reduce+import Agda.TypeChecking.Substitute++import Agda.Utils.Monad++#include "undefined.h"+import Agda.Utils.Impossible++-- | Eta-expand a term if its type is a function type or an eta-record type.+etaExpandOnce :: Type -> Term -> TCM Term+etaExpandOnce a v = reduce a >>= \case+  El _ (Pi a b) -> return $+    Lam ai $ mkAbs (absName b) $ raise 1 v `apply` [ Arg ai $ var 0 ]+    where ai = domInfo a++  a -> isEtaRecordType a >>= \case+    Just (r, pars) -> do+      def <- theDef <$> getConstInfo r+      (_, con, ci, args) <- etaExpandRecord_ r pars def v+      return $ mkCon con ci args+    Nothing -> return v++-- | Eta-expand functions and expressions of eta-record+-- type wherever possible.+deepEtaExpand :: Term -> Type -> TCM Term+deepEtaExpand = checkInternal' etaExpandAction++etaExpandAction :: Action+etaExpandAction = Action+  { preAction       = etaExpandOnce+  , postAction      = \ _ -> return+  , relevanceAction = \ _ -> id+  }
src/full/Agda/TypeChecking/Forcing.hs view
@@ -67,6 +67,7 @@ import Data.Semigroup hiding (Arg) import Data.Maybe import Data.List ((\\))+import Data.Function (on)  import Agda.Interaction.Options @@ -79,6 +80,7 @@ import Agda.TypeChecking.Records import Agda.TypeChecking.Reduce import Agda.TypeChecking.Substitute+import Agda.TypeChecking.Telescope import Agda.TypeChecking.Pretty hiding ((<>)) import Agda.TypeChecking.Telescope @@ -96,8 +98,8 @@ --   decide which arguments are forced. --   Precondition: the type is of the form @Γ → D vs@ and the @vs@ --   are in normal form.-computeForcingAnnotations :: Type -> TCM [IsForced]-computeForcingAnnotations t =+computeForcingAnnotations :: QName -> Type -> TCM [IsForced]+computeForcingAnnotations c t =   ifM (not . optForcing <$> commandLineOptions)       (return []) $ do   -- Andreas, 2015-03-10  Normalization prevents Issue 1454.@@ -109,7 +111,7 @@   -- Ulf, 2018-01-28 (#2919): We do need to reduce the target type enough to   -- get to the actual data type.   -- Also #2947: The type might reduce to a pi type.-  TelV tel (El _ a) <- telView t+  TelV tel (El _ a) <- telViewPath t   let vs = case a of         Def _ us -> us         _        -> __IMPOSSIBLE__@@ -118,7 +120,7 @@       -- #2819: We can only mark an argument as forced if it appears in the       -- type with a relevance below (i.e. more relevant) than the one of the       -- constructor argument. Otherwise we can't actually get the value from-      -- the type. Also the argument shouldn't be irrelevant, since it that+      -- the type. Also the argument shouldn't be irrelevant, since in that       -- case it isn't really forced.       isForced m i = getRelevance m /= Irrelevant &&                      any (\ (m', j) -> i == j && related m' POLE m) xs@@ -127,8 +129,8 @@         | (i, m) <- zip (downFrom n) $ map getModality (telToList tel)         ]   reportSLn "tc.force" 60 $ unlines-    [ "Forcing analysis"-    , "  xs          = " ++ show xs+    [ "Forcing analysis for " ++ show c+    , "  xs          = " ++ show (map snd xs)     , "  forcedArgs  = " ++ show forcedArgs     ]   return forcedArgs@@ -145,7 +147,8 @@ -- Note the 'a' does not include the 'Arg' in 'Apply'. instance ForcedVariables a => ForcedVariables (Elim' a) where   forcedVariables (Apply x) = forcedVariables x-  forcedVariables Proj{} = []+  forcedVariables IApply{}  = []  -- No forced variables in path applications+  forcedVariables Proj{}    = []  instance ForcedVariables a => ForcedVariables (Arg a) where   forcedVariables x = [ (m <> m', i) | (m', i) <- forcedVariables (unArg x) ]@@ -174,13 +177,17 @@ forcingTranslation :: [NamedArg DeBruijnPattern] -> TCM [NamedArg DeBruijnPattern] forcingTranslation ps = do   (qs, rebind) <- dotForcedPatterns ps-  reportSDoc "tc.force" 50 $ text "forcingTranslation" <?> vcat-    [ text "patterns:" <?> pretty ps-    , text "dotted:  " <?> pretty qs-    , text "rebind:  " <?> pretty rebind ]-  rs <- foldM rebindForcedPattern qs rebind-  when (not $ null rebind) $ reportSDoc "tc.force" 50 $ nest 2 $ text "result:  " <?> pretty rs-  return rs+  case rebind of+    Nothing -> return ps+    Just rebind -> do+      reportSDoc "tc.force" 50 $ "forcingTranslation" <?> vcat+        [ "patterns:" <?> pretty ps+        , "dotted:  " <?> pretty qs+        , "rebind:  " <?> pretty rebind ]+      rs <- foldM rebindForcedPattern qs rebind+      when (not $ null rebind) $ reportSDoc "tc.force" 50 $ nest 2 $ "result:  " <?> pretty rs+      -- Repeat translation as long as we're making progress (Issue 3410)+      forcingTranslation rs  -- | Applies the forcing translation in order to update modalities of forced --   arguments in the telescope. This is used before checking a right-hand side@@ -199,9 +206,9 @@                                 "  from: " ++ show old ++ "\n" ++                                 "  to:   " ++ show new       let mods    = map (first dbPatVarIndex) new-          ms      = reverse [ lookup i mods | i <- [0..size delta - 1] ]+          ms      = map (`lookup` mods) $ downFrom $ size delta           delta'  = telFromList $ zipWith (maybe id setModality) ms $ telToList delta-      reportSDoc "tc.force" 60 $ nest 2 $ text "delta' =" <?> prettyTCM delta'+      reportSDoc "tc.force" 60 $ nest 2 $ "delta' =" <?> prettyTCM delta'       return delta'  -- | Rebind a forced pattern in a non-forced position. The forced pattern has@@ -214,13 +221,19 @@ --    rebindForcedPattern [.(suc n), cons .n x xs] n = [suc n, cons .n x xs] -- rebindForcedPattern :: [NamedArg DeBruijnPattern] -> DeBruijnPattern -> TCM [NamedArg DeBruijnPattern]-rebindForcedPattern ps toRebind = go $ zip (repeat NotForced) ps+rebindForcedPattern ps toRebind = do+  reportSDoc "tc.force" 50 $ hsep ["rebinding", pretty toRebind, "in"] <?> pretty ps+  ps' <- go $ zip (repeat NotForced) ps+  reportSDoc "tc.force" 50 $ nest 2 $ hsep ["result:", pretty ps']+  return ps'   where     targetDotP = patternToTerm toRebind      go [] = __IMPOSSIBLE__ -- unforcing cannot fail     go ((Forced,    p) : ps) = (p :) <$> go ps-    go ((NotForced, p) : ps) =+    go ((NotForced, p) : ps) | namedArg p `rebinds` toRebind+                             = return $ p : map snd ps+    go ((NotForced, p) : ps) = -- (#3544) A previous rebinding might have already rebound our pattern       case namedArg p of         VarP{}   -> (p :) <$> go ps         DotP _ v -> mkPat v >>= \ case@@ -231,8 +244,15 @@           qps <- go (fqs ++ ps)           let (qs', ps') = splitAt (length qs) qps           return $ fmap (ConP c i qs' <$) p : ps'+        DefP o q qs -> do+          fs <- defForced <$> getConstInfo q+          fqs <- return $ zip (fs ++ repeat NotForced) qs+          qps <- go (fqs ++ ps)+          let (qs', ps') = splitAt (length qs) qps+          return $ fmap (DefP o q qs' <$) p : ps'         LitP{}  -> (p :) <$> go ps         ProjP{} -> (p :) <$> go ps+        IApplyP{} -> (p :) <$> go ps      withForced :: ConHead -> [a] -> TCM [(IsForced, a)]     withForced c qs = do@@ -267,29 +287,48 @@       where         doname = (map . fmap) unnamed +-- | Check if the first pattern rebinds the second pattern. Almost equality,+--   but allows the first pattern to have a variable where the second pattern+--   has a dot pattern. Used to fix #3544.+rebinds :: DeBruijnPattern -> DeBruijnPattern -> Bool+VarP{}          `rebinds` DotP{}            = True+VarP _ x        `rebinds` VarP _ y          = dbPatVarIndex x == dbPatVarIndex y+DotP _ u        `rebinds` DotP _ v          = u == v+ConP c _ ps     `rebinds` ConP c' _ qs      = c == c' && and (zipWith (rebinds `on` namedArg) ps qs)+LitP l          `rebinds` LitP l'           = l == l'+ProjP _ f       `rebinds` ProjP _ g         = f == g+IApplyP _ u v x `rebinds` IApplyP _ u' v' y = u == u' && v == v' && x == y+DefP _ f ps     `rebinds` DefP _ g qs       = f == g && and (zipWith (rebinds `on` namedArg) ps qs)+_               `rebinds` _                 = False+ -- | Dot all forced patterns and return a list of patterns that need to be --   undotted elsewhere. Patterns that need to be undotted are those that bind --   variables or does some actual (non-eta) matching.-dotForcedPatterns :: [NamedArg DeBruijnPattern] -> TCM ([NamedArg DeBruijnPattern], [DeBruijnPattern])+dotForcedPatterns :: [NamedArg DeBruijnPattern] -> TCM ([NamedArg DeBruijnPattern], Maybe [DeBruijnPattern]) dotForcedPatterns ps = runWriterT $ (traverse . traverse . traverse) (forced NotForced) ps   where-    forced :: IsForced -> DeBruijnPattern -> WriterT [DeBruijnPattern] TCM DeBruijnPattern+    forced :: IsForced -> DeBruijnPattern -> WriterT (Maybe [DeBruijnPattern]) TCM DeBruijnPattern     forced f p =       case p of         DotP{}          -> return p         ProjP{}         -> return p         _ | f == Forced -> do           properMatch <- isProperMatch p-          dotP (patternToTerm p) <$ tell [p | properMatch || length p > 0]+          dotP (patternToTerm p) <$ tell (Just [p | properMatch || length p > 0])         VarP{}          -> return p         LitP{}          -> return p         ConP c i ps     -> do           fs <- defForced <$> getConstInfo (conName c)           ConP c i <$> zipWithM forcedArg (fs ++ repeat NotForced) ps+        DefP o q ps     -> do+          fs <- defForced <$> getConstInfo q+          DefP o q <$> zipWithM forcedArg (fs ++ repeat NotForced) ps+        IApplyP{}       -> return p      forcedArg f = (traverse . traverse) (forced f)      isProperMatch LitP{}  = return True+    isProperMatch IApplyP{}  = return False     isProperMatch VarP{}  = return False     isProperMatch ProjP{} = return False     isProperMatch DotP{}  = return False@@ -297,4 +336,4 @@       ifM (isEtaCon $ conName c)           (anyM ps (isProperMatch . namedArg))           (return True)-+    isProperMatch DefP{} = return True -- Andrea, TODO check semantics
src/full/Agda/TypeChecking/Free.hs view
@@ -33,6 +33,7 @@     , closed     , freeVars -- only for testing     , freeVars'+    , MetaSet     ) where  import Prelude hiding (null)
src/full/Agda/TypeChecking/Free/Lazy.hs view
@@ -287,6 +287,7 @@     Level l      -> freeVars' l     MetaV m ts   -> go (Flexible $ singleton m) $ freeVars' ts     DontCare mt  -> goRel Irrelevant $ freeVars' mt+    Dummy{}      -> mempty  instance Free a => Free (Type' a) where   freeVars' (El s t) =@@ -299,12 +300,14 @@     ifM ((IgnoreAll ==) <$> asks feIgnoreSorts) mempty $ {- else -}     case s of       Type a     -> freeVars' a-      Prop       -> mempty+      Prop a     -> freeVars' a       Inf        -> mempty       SizeUniv   -> mempty       PiSort s1 s2 -> go WeaklyRigid $ freeVars' (s1, s2)       UnivSort s -> go WeaklyRigid $ freeVars' s       MetaS x es -> go (Flexible $ singleton x) $ freeVars' es+      DefS _ es  -> go WeaklyRigid $ freeVars' es+      DummyS{}   -> mempty  instance Free Level where   freeVars' (Max as) = freeVars' as@@ -332,6 +335,7 @@ instance Free a => Free (Elim' a) where   freeVars' (Apply a) = freeVars' a   freeVars' (Proj{} ) = mempty+  freeVars' (IApply x y r) = mconcat $ map freeVars' [x,y,r]  instance Free a => Free (Arg a) where   freeVars' a = goRel (getRelevance a) $ freeVars' $ unArg a
src/full/Agda/TypeChecking/Free/Old.hs view
@@ -262,6 +262,7 @@     Level l    -> freeVars' l     MetaV _ ts -> flexible <$> freeVars' ts     DontCare mt -> irrelevantly <$> freeVars' mt+    Dummy{} -> mempty  instance Free Type where   freeVars' (El s t) =@@ -274,12 +275,14 @@     ifM ((IgnoreAll ==) <$> asks fcIgnoreSorts) mempty $ {- else -}     case s of       Type a     -> freeVars' a-      Prop       -> mempty+      Prop a     -> freeVars' a       Inf        -> mempty       SizeUniv   -> mempty       PiSort s1 s2 -> weakly <$> freeVars' (s1, s2)       UnivSort s -> weakly <$> freeVars' s       MetaS x es -> flexible <$> freeVars' es+      DefS _ es  -> weakly <$> freeVars' es+      DummyS{}   -> mempty  instance Free Level where   freeVars' (Max as) = freeVars' as@@ -307,6 +310,7 @@ instance Free a => Free (Elim' a) where   freeVars' (Apply a) = freeVars' a   freeVars' (Proj{} ) = mempty+  freeVars' (IApply x y r) = mconcat $ map freeVars' [x,y,r]  instance Free a => Free (Arg a) where   freeVars' a = f <$> freeVars' (unArg a)
src/full/Agda/TypeChecking/Free/Precompute.hs view
@@ -72,6 +72,7 @@       Level l    -> Level      <$> precomputeFreeVars l       MetaV x es -> MetaV x    <$> precomputeFreeVars es       DontCare t -> DontCare   <$> precomputeFreeVars t+      Dummy{}    -> pure t  -- The other instances are boilerplate. @@ -79,12 +80,14 @@   precomputeFreeVars s =     case s of       Type a     -> Type <$> precomputeFreeVars a-      Prop       -> pure s+      Prop a     -> Prop <$> precomputeFreeVars a       Inf        -> pure s       SizeUniv   -> pure s       PiSort s1 s2 -> uncurry PiSort <$> precomputeFreeVars (s1, s2)       UnivSort s -> UnivSort <$> precomputeFreeVars s       MetaS x es -> MetaS x <$> precomputeFreeVars es+      DefS d es  -> DefS d <$> precomputeFreeVars es+      DummyS{}   -> pure s  instance PrecomputeFreeVars Level where   precomputeFreeVars (Max ls) = Max <$> precomputeFreeVars ls@@ -108,8 +111,9 @@ instance PrecomputeFreeVars a => PrecomputeFreeVars (Elim' a) where   precomputeFreeVars e =     case e of-      Apply x -> Apply <$> precomputeFreeVars x-      Proj{}  -> pure e+      Apply x      -> Apply <$> precomputeFreeVars x+      IApply a x y -> IApply <$> precomputeFreeVars a <*> precomputeFreeVars x <*> precomputeFreeVars y+      Proj{}       -> pure e  -- The very boilerplate instances @@ -118,4 +122,3 @@  instance (PrecomputeFreeVars a, PrecomputeFreeVars b) => PrecomputeFreeVars (a, b) where   precomputeFreeVars (x, y) = (,) <$> precomputeFreeVars x <*> precomputeFreeVars y-
src/full/Agda/TypeChecking/Free/Reduce.hs view
@@ -1,10 +1,20 @@ -- | Free variable check that reduces the subject to make certain variables not --   free. Used when pruning metavariables in Agda.TypeChecking.MetaVars.Occurs.-module Agda.TypeChecking.Free.Reduce (forceNotFree) where+module Agda.TypeChecking.Free.Reduce+  ( ForceNotFree+  , forceNotFree+  , IsFree(..)+  ) where +import Control.Monad.Reader import Control.Monad.State++import qualified Data.IntMap as IntMap+import Data.IntMap (IntMap) import qualified Data.IntSet as IntSet import Data.IntSet (IntSet)+import qualified Data.Set as Set+import Data.Set (Set) import Data.Traversable (traverse)  import Agda.Syntax.Common@@ -12,37 +22,64 @@ import Agda.TypeChecking.Monad import Agda.TypeChecking.Reduce import Agda.TypeChecking.Substitute+import Agda.TypeChecking.Free import Agda.TypeChecking.Free.Precompute import Agda.Utils.Monad --- | Try to enforce a set of variables not occurring in a given type. Returns a---   possibly reduced version of the type and the subset of variables that does---   indeed not occur in the reduced type.-forceNotFree :: IntSet -> Type -> TCM (IntSet, Type)+-- | A variable can either not occur (`NotFree`) or it does occur+--   (`MaybeFree`).  In the latter case, the occurrence may disappear+--   depending on the instantiation of some set of metas.+data IsFree+  = MaybeFree MetaSet+  | NotFree+  deriving (Eq, Show)++-- | Try to enforce a set of variables not occurring in a given+--   type. Returns a possibly reduced version of the type and for each+--   of the given variables whether it is either not free, or+--   maybe free depending on some metavariables.+forceNotFree :: (ForceNotFree a, Reduce a, MonadReduce m)+             => IntSet -> a -> m (IntMap IsFree, a) forceNotFree xs a = do-  (a, xs) <- runStateT (forceNotFreeR $ precomputeFreeVars_ a) xs-  return (xs, a)+  -- Initially, all variables are marked as `NotFree`. This is changed+  -- to `MaybeFree` when we find an occurrence.+  let mxs = IntMap.fromSet (const NotFree) xs+  (a, mxs) <- runStateT (runReaderT (forceNotFreeR $ precomputeFreeVars_ a) Set.empty) mxs+  return (mxs, a) +type MonadFreeRed m =+  ( MonadReader MetaSet m+  , MonadState (IntMap IsFree) m+  , MonadReduce m+  )+ class (PrecomputeFreeVars a, Subst Term a) => ForceNotFree a where-  -- Reduce the argument if necessary, to make as many as possible of the-  -- variables in the state not free. Updates the state, removing the variables-  -- that couldn't be make not free. By updating the state as soon as a-  -- variable can not be reduced away, we avoid trying to get rid of it in-  -- other places.-  forceNotFree' :: a -> StateT IntSet TCM a+  -- Reduce the argument if necessary, to make as many as possible of+  -- the variables in the state not free. Updates the state, marking+  -- the variables that couldn't be make not free as `MaybeFree`. By+  -- updating the state as soon as a variable can not be reduced away,+  -- we avoid trying to get rid of it in other places.+  forceNotFree' :: (MonadFreeRed m) => a -> m a +-- Return the set of variables for which there is still hope that they+-- may not occur.+varsToForceNotFree :: (MonadFreeRed m) => m IntSet+varsToForceNotFree = IntMap.keysSet . (IntMap.filter (== NotFree)) <$> get+ -- Reduce the argument if there are offending free variables. Doesn't call the -- continuation when no reduction is required.-reduceIfFreeVars :: (Reduce a, ForceNotFree a) => (a -> StateT IntSet TCM a) -> a -> StateT IntSet TCM a+reduceIfFreeVars :: (Reduce a, ForceNotFree a, MonadFreeRed m)+                 => (a -> m a) -> a -> m a reduceIfFreeVars k a = do-  xs <- get+  xs <- varsToForceNotFree   let fvs     = precomputedFreeVars a       notfree = IntSet.null $ IntSet.intersection xs fvs   if | notfree   -> return a-     | otherwise -> k . precomputeFreeVars_ =<< lift (reduce a)+     | otherwise -> k . precomputeFreeVars_ =<< reduce a  -- Careful not to define forceNotFree' = forceNotFreeR since that would loop.-forceNotFreeR :: (Reduce a, ForceNotFree a) => a -> StateT IntSet TCM a+forceNotFreeR :: (Reduce a, ForceNotFree a, MonadFreeRed m)+              => a -> m a forceNotFreeR = reduceIfFreeVars forceNotFree'  instance (Reduce a, ForceNotFree a) => ForceNotFree (Arg a) where@@ -58,9 +95,9 @@   forceNotFree' a@NoAbs{} = traverse forceNotFreeR a   forceNotFree' a@Abs{} =     -- Shift variables up when going under the abstraction and back down when-    -- coming out of it. Since we only ever remove variables from the state+    -- coming out of it. Since we never add new indices to the state     -- there's no danger of getting negative indices.-    reduceIfFreeVars (bracket_ (modify $ IntSet.map succ) (\ _ -> modify $ IntSet.map pred) .+    reduceIfFreeVars (bracket_ (modify $ IntMap.mapKeys succ) (\ _ -> modify $ IntMap.mapKeys pred) .                       traverse forceNotFree') a  instance ForceNotFree a => ForceNotFree [a] where@@ -71,22 +108,28 @@   -- not skip over that.   forceNotFree' (Apply arg)    = Apply <$> forceNotFree' arg   forceNotFree' e@Proj{}       = return e+  forceNotFree' (IApply x y r) = IApply <$> forceNotFreeR x <*> forceNotFreeR y <*> forceNotFreeR r  instance ForceNotFree Type where   forceNotFree' (El s t) = El <$> forceNotFree' s <*> forceNotFree' t  instance ForceNotFree Term where   forceNotFree' t = case t of-    Var x es   -> Var x    <$ modify (IntSet.delete x) <*> forceNotFree' es+    Var x es   -> do+      metas <- ask+      modify $ IntMap.adjust (const $ MaybeFree metas) x+      Var x <$> forceNotFree' es     Def f es   -> Def f    <$> forceNotFree' es     Con c h es -> Con c h  <$> forceNotFree' es-    MetaV x es -> MetaV x  <$> forceNotFree' es+    MetaV x es -> local (Set.insert x) $+                  MetaV x  <$> forceNotFree' es     Lam h b    -> Lam h    <$> forceNotFree' b     Pi a b     -> Pi       <$> forceNotFree' a <*> forceNotFree' b  -- Dom and Abs do reduceIf so not needed here     Sort s     -> Sort     <$> forceNotFree' s     Level l    -> Level    <$> forceNotFree' l     DontCare t -> DontCare <$> forceNotFreeR t  -- Reduction stops at DontCare so reduceIf     Lit{}      -> return t+    Dummy{}    -> return t  instance ForceNotFree Level where   forceNotFree' (Max as) = Max <$> forceNotFree' as@@ -98,7 +141,8 @@  instance ForceNotFree LevelAtom where   forceNotFree' l = case l of-    MetaLevel x es   -> MetaLevel x    <$> forceNotFree' es+    MetaLevel x es   -> local (Set.insert x) $+                        MetaLevel x    <$> forceNotFree' es     BlockedLevel x t -> BlockedLevel x <$> forceNotFree' t     NeutralLevel b t -> NeutralLevel b <$> forceNotFree' t     UnreducedLevel t -> UnreducedLevel <$> forceNotFreeR t  -- Already reduce in the cases above@@ -108,10 +152,11 @@   -- away without forceNotFreeR here.   forceNotFree' s = case s of     Type l     -> Type     <$> forceNotFree' l-    Prop       -> return Prop+    Prop l     -> Prop     <$> forceNotFree' l     PiSort a b -> PiSort   <$> forceNotFree' a <*> forceNotFree' b     UnivSort s -> UnivSort <$> forceNotFree' s     MetaS x es -> MetaS x  <$> forceNotFree' es+    DefS d es  -> DefS d   <$> forceNotFree' es     Inf        -> return s     SizeUniv   -> return s-+    DummyS{}   -> return s
src/full/Agda/TypeChecking/Functions.hs view
@@ -60,10 +60,10 @@           ps'   = raise n ps ++ teleNamedArgs tel           body' = raise n body `apply` teleArgs tel       reportSDoc "term.clause.expand" 30 $ inTopContext $ vcat-        [ text "etaExpandClause"-        , text "  body    = " <+> (addContext ctel' $ prettyTCM body)-        , text "  xs      = " <+> text (prettyShow xs)-        , text "  new tel = " <+> prettyTCM ctel'+        [ "etaExpandClause"+        , "  body    = " <+> (addContext ctel' $ prettyTCM body)+        , "  xs      = " <+> text (prettyShow xs)+        , "  new tel = " <+> prettyTCM ctel'         ]       return $ Clause rl rf ctel' ps' (Just body') (Just (t $> t')) catchall unreachable   where@@ -81,7 +81,9 @@     -- it means we skipped an element of the telescope.     useNames :: [Arg ArgName] -> ListTel -> ListTel     useNames []     tel       = map (setOrigin Inserted) tel-    useNames (_:_)  []        = []  -- Andreas, 2017-03-24: not IMPOSSIBLE when positivity checking comes before termination checking, see examples/tactics/ac/AC.agda+    -- Andrea: we can have more Lam's than Pi's, because they might be for Path+    -- Andreas, 2017-03-24: the following case is not IMPOSSIBLE when positivity checking comes before termination checking, see examples/tactics/ac/AC.agda+    useNames (_:_)  []        = []     useNames (x:xs) (dom:tel)       | sameHiding x dom =           -- set the ArgName of the dom
+ src/full/Agda/TypeChecking/Generalize.hs view
@@ -0,0 +1,807 @@+{-# LANGUAGE CPP #-}++module Agda.TypeChecking.Generalize+  ( generalizeType+  , generalizeType'+  , generalizeTelescope ) where++import Control.Arrow ((***), first, second)+import Control.Monad+import Data.IntSet (IntSet)+import qualified Data.IntSet as IntSet+import Data.Set (Set)+import qualified Data.Set as Set+import Data.Map (Map)+import qualified Data.Map as Map+import Data.List (nub, partition, init, sortBy)+import Data.Function (on)+import Data.Traversable++import Agda.Syntax.Common+import Agda.Syntax.Concrete.Name (LensInScope(..))+import Agda.Syntax.Position+import Agda.Syntax.Internal+import Agda.Syntax.Internal.Generic+import Agda.Syntax.Literal+import Agda.Syntax.Scope.Monad (bindVariable)+import Agda.Syntax.Scope.Base (Binder(..))+import Agda.TypeChecking.Monad+import Agda.TypeChecking.Abstract+import Agda.TypeChecking.Constraints+import Agda.TypeChecking.Conversion+import Agda.TypeChecking.Free+import Agda.TypeChecking.Irrelevance+import Agda.TypeChecking.InstanceArguments (postponeInstanceConstraints)+import Agda.TypeChecking.MetaVars+import Agda.TypeChecking.Pretty+import Agda.TypeChecking.Reduce+import Agda.TypeChecking.Substitute+import Agda.TypeChecking.Telescope+import Agda.TypeChecking.Warnings++import Agda.Benchmarking (Phase(Typing, Generalize))+import Agda.Utils.Benchmark+import Agda.Utils.Except+import Agda.Utils.Functor+import Agda.Utils.Impossible+import Agda.Utils.Lens+import Agda.Utils.Maybe+import Agda.Utils.Monad+import Agda.Utils.Size+import Agda.Utils.Permutation+import qualified Agda.Utils.Graph.TopSort as Graph++#include "undefined.h"++-- | Generalize a telescope over a set of generalizable variables.+generalizeTelescope :: Map QName Name -> (forall a. (Telescope -> TCM a) -> TCM a) -> ([Maybe Name] -> Telescope -> TCM a) -> TCM a+generalizeTelescope vars typecheckAction ret | Map.null vars = typecheckAction (ret [])+generalizeTelescope vars typecheckAction ret = billTo [Typing, Generalize] $ withGenRecVar $ \ genRecMeta -> do+  let s = Set.fromList (Map.keys vars)+  ((cxtNames, tel, letbinds), namedMetas, allmetas) <-+    createMetasAndTypeCheck s $ typecheckAction $ \ tel -> do+      cxt <- take (size tel) <$> getContext+      lbs <- getLetBindings -- This gives let-bindings valid in the current context+      return (map (fst . unDom) cxt, tel, lbs)+  -- Translate the QName to the corresponding bound variable+  (genTel, genTelNames, sub) <- computeGeneralization genRecMeta namedMetas allmetas++  let boundVar q = fromMaybe __IMPOSSIBLE__ $ Map.lookup q vars+      genTelVars = (map . fmap) boundVar genTelNames++  tel' <- applySubst sub <$> instantiateFull tel++  -- This is not so nice. When changing the context from Γ (r : R) to Γ Δ we need to do this at the+  -- level of contexts (as a Context -> Context function), so we repeat the name logic here. Take+  -- care to preserve the name of named generalized variables.+  let setName name d = first (const name) <$> d+      cxtEntry (mname, d) = do+          name <- maybe (setNotInScope <$> freshName_ s) return mname+          return $ setName name d+        where s  = fst $ unDom d+      dropCxt err = updateContext (strengthenS err 1) (drop 1)+  genTelCxt <- dropCxt __IMPOSSIBLE__ $ mapM cxtEntry $ reverse $ zip genTelVars $ telToList genTel++  -- For the explicit module telescope we get the names from the typecheck+  -- action.+  let newTelCxt = zipWith setName cxtNames $ reverse $ telToList tel'++  -- We are in context Γ (r : R) and should call the continuation in context Γ Δ Θρ passing it Δ Θρ+  -- We have+  --   Γ (r : R) ⊢ Θ            Θ = tel+  --   Γ ⊢ Δ                    Δ = genTel+  --   Γ Δ ⊢ ρ : Γ (r : R)      ρ = sub+  --   Γ ⊢ Δ Θρ                 Θρ = tel'+  -- And we shouldn't forget about the let-bindings (#3470)+  --   Γ (r : R) Θ ⊢ letbinds+  --   Γ Δ Θρ      ⊢ letbinds' = letbinds(lift |Θ| ρ)+  letbinds' <- applySubst (liftS (size tel) sub) <$> instantiateFull letbinds+  let addLet (x, (v, dom)) = addLetBinding' x v dom++  updateContext sub ((genTelCxt ++) . drop 1) $+    updateContext (raiseS (size tel')) (newTelCxt ++) $+      foldr addLet (ret genTelVars $ abstract genTel tel') letbinds'+++-- | Generalize a type over a set of (used) generalizable variables.+generalizeType :: Set QName -> TCM Type -> TCM ([Maybe QName], Type)+generalizeType s typecheckAction = do+  (ns, t, _) <- generalizeType' s $ (,()) <$> typecheckAction+  return (ns, t)++-- | Allow returning additional information from the type checking action.+generalizeType' :: Set QName -> TCM (Type, a) -> TCM ([Maybe QName], Type, a)+generalizeType' s typecheckAction = billTo [Typing, Generalize] $ withGenRecVar $ \ genRecMeta -> do++  ((t, userdata), namedMetas, allmetas) <- createMetasAndTypeCheck s typecheckAction+  (genTel, genTelNames, sub) <- computeGeneralization genRecMeta namedMetas allmetas++  t' <- abstract genTel . applySubst sub <$> instantiateFull t++  reportSDoc "tc.generalize" 40 $ vcat+    [ "generalized"+    , nest 2 $ "t =" <+> escapeContext 1 (prettyTCM t') ]++  return (genTelNames, t', userdata)++-- | Create metas for the generalizable variables and run the type check action.+createMetasAndTypeCheck :: Set QName -> TCM a -> TCM (a, Map MetaId QName, IntSet)+createMetasAndTypeCheck s typecheckAction = do+  ((namedMetas, x), allmetas) <- metasCreatedBy $ do+    (metamap, genvals) <- createGenValues s+    x <- locallyTC eGeneralizedVars (const genvals) typecheckAction+    return (metamap, x)+  return (x, namedMetas, allmetas)++-- | Add a placeholder variable that will be substituted with a record value packing up all the+--   generalized variables.+withGenRecVar :: (Type -> TCM a) -> TCM a+withGenRecVar ret = do+  -- Create a meta type (in Set₀) for the telescope record. It won't+  -- necessarily fit in Set₀, but since it's only used locally the sort+  -- shouldn't matter. Another option would be to put it in Setω, which is a+  -- bit more honest, but this leads to performance problems (see #3306).+  genRecMeta <- newTypeMeta (mkType 0)+  addContext (defaultDom ("genTel" :: String, genRecMeta)) $ ret genRecMeta++-- | Compute the generalized telescope from metas created when checking the type/telescope to be+--   generalized. Called in the context extended with the telescope record variable (whose type is+--   the first argument). Returns the telescope of generalized variables and a substitution from+--   this telescope to the current context.+computeGeneralization :: Type -> Map MetaId name -> IntSet -> TCM (Telescope, [Maybe name], Substitution)+computeGeneralization genRecMeta nameMap allmetas = postponeInstanceConstraints $ do+  -- Pair metas with their metaInfo+  mvs <- mapM ((\ x -> (x,) <$> lookupMeta x) . MetaId) $ IntSet.toList allmetas++  constrainedMetas <- Set.unions <.> mapM (constraintMetas . clValue . theConstraint) =<<+                        ((++) <$> useTC stAwakeConstraints+                              <*> useTC stSleepingConstraints)++  let isConstrained x = Set.member x constrainedMetas+      -- Note: Always generalize named metas even if they are constrained. We+      -- freeze them so they won't be instantiated by the constraint, and we do+      -- want the nice error from checking the constraint after generalization.+      -- See #3276.+      isGeneralizable (x, mv) = Map.member x nameMap ||+                                not (isConstrained x) && YesGeneralize == unArg (miGeneralizable (mvInfo mv))+      isSort = isSortMeta_ . snd+      isOpen = isOpenMeta . mvInstantiation . snd++  -- Split the generalizable metas in open and closed+  let (generalizable, nongeneralizable)         = partition isGeneralizable mvs+      (generalizableOpen', generalizableClosed) = partition isOpen generalizable+      (openSortMetas, generalizableOpen)        = partition isSort generalizableOpen'+      nongeneralizableOpen                      = filter isOpen nongeneralizable++  -- Issue 3301: We can't generalize over sorts+  case openSortMetas of+    [] -> return ()+    ms -> warning $ CantGeneralizeOverSorts (map fst ms)++  -- Any meta in the solution of a generalizable meta should be generalized over (if possible).+  cp <- viewTC eCurrentCheckpoint+  let canGeneralize x | isConstrained x = return False+      canGeneralize x = do+          mv   <- lookupMeta x+          msub <- enterClosure (miClosRange $ mvInfo mv) $ \ _ ->+                    checkpointSubstitution' cp+          let sameContext =+                -- We can only generalize if the metavariable takes the context variables of the+                -- current context as arguments. This happens either when the context of the meta+                -- is the same as the current context and there is no pruning, or the meta context+                -- is a weakening but the extra variables have been pruned.+                -- It would be possible to generalize also in the case when some context variables+                -- (other than genTel) have been pruned, but it's hard to construct an example+                -- where this actually happens.+                case (msub, mvPermutation mv) of+                  (Just IdS, Perm m xs)        -> xs == [0 .. m - 1]+                  (Just (Wk n IdS), Perm m xs) -> xs == [0 .. m - n - 1]+                  _                            -> False+          when (not sameContext) $ do+            ty <- getMetaType x+            let Perm m xs = mvPermutation mv+            reportSDoc "tc.generalize" 20 $ vcat+              [ text "Don't know how to generalize over"+              , nest 2 $ prettyTCM x <+> text ":" <+> prettyTCM ty+              , text "in context"+              , nest 2 $ inTopContext . prettyTCM =<< getContextTelescope+              , text "permutation:" <+> text (show (m, xs))+              , text "subst:" <+> pretty msub ]+          return sameContext+  inherited <- fmap Set.unions $ forM generalizableClosed $ \ (x, mv) ->+    case mvInstantiation mv of+      InstV _ v -> do+        parentName <- getMetaNameSuggestion x+        metas <- filterM canGeneralize . allMetas =<< instantiateFull v+        let suggestNames i [] = return ()+            suggestNames i (m : ms)  = do+              name <- getMetaNameSuggestion m+              case name of+                "" -> do+                  setMetaNameSuggestion m (parentName ++ "." ++ show i)+                  suggestNames (i + 1) ms+                _  -> suggestNames i ms+        Set.fromList metas <$ suggestNames 1 metas+      _ -> __IMPOSSIBLE__++  let (alsoGeneralize, reallyDontGeneralize) = partition (`Set.member` inherited) $ map fst nongeneralizableOpen+      generalizeOver   = map fst generalizableOpen ++ alsoGeneralize+      shouldGeneralize = (`Set.member` Set.fromList generalizeOver)++  -- Sort metas in dependency order. Include open metas that we are not+  -- generalizing over, since they will need to be pruned appropriately (see+  -- Issue 3672).+  allSortedMetas <- sortMetas (generalizeOver ++ reallyDontGeneralize)+  let sortedMetas = filter shouldGeneralize allSortedMetas++  let dropCxt err = updateContext (strengthenS err 1) (drop 1)++  -- Create the pre-record type (we don't yet know the types of the fields)+  (genRecName, genRecCon, genRecFields) <- dropCxt __IMPOSSIBLE__ $+      createGenRecordType genRecMeta sortedMetas++  -- Solve the generalizable metas. Each generalizable meta is solved by projecting the+  -- corresponding field from the genTel record.+  cxtTel <- getContextTelescope+  let solve m field = do+        -- m should not be instantiated, but if we don't check constraints+        -- properly it could be (#3666 and #3667). Fail hard instead of+        -- generating bogus types.+        whenM (isInstantiatedMeta m) __IMPOSSIBLE__+        assignTerm' m (telToArgs cxtTel) $ Var 0 [Proj ProjSystem field]+  zipWithM_ solve sortedMetas genRecFields++  -- Record the named variables in the telescope+  let telNames = map (`Map.lookup` nameMap) sortedMetas++  -- Build the telescope of generalized metas+  teleTypes <- do+    args <- getContextArgs+    fmap concat $ forM sortedMetas $ \ m -> do+      mv   <- lookupMeta m+      let info = getArgInfo $ miGeneralizable $ mvInfo mv+          HasType{ jMetaType = t } = mvJudgement mv+      return [(Arg info $ miNameSuggestion $ mvInfo mv, piApply t args)]+  let genTel = buildGeneralizeTel genRecCon teleTypes++  reportSDoc "tc.generalize" 40 $ vcat+    [ text "genTel =" <+> prettyTCM genTel ]++  -- Now we need to prune the unsolved metas to make sure they respect the new+  -- dependencies (#3672). Also update interaction points to point to pruned metas.+  let inscope (ii, InteractionPoint{ipMeta = Just x})+        | IntSet.member (metaId x) allmetas = [(x, ii)]+      inscope _ = []+  ips <- Map.fromList . concatMap inscope . Map.toList <$> useTC stInteractionPoints+  pruneUnsolvedMetas genRecName genRecCon genTel genRecFields ips shouldGeneralize allSortedMetas++  -- Fill in the missing details of the telescope record.+  dropCxt __IMPOSSIBLE__ $ fillInGenRecordDetails genRecName genRecCon genRecFields genRecMeta genTel++  -- Now abstract over the telescope. We need to apply the substitution that subsitutes a record+  -- value packing up the generalized variables for the genTel variable.+  let sub = unpackSub genRecCon (map (argInfo . fst) teleTypes) (length teleTypes)++  return (genTel, telNames, sub)++-- | Prune unsolved metas (#3672). The input includes also the generalized metas and is sorted in+-- dependency order. The telescope is the generalized telescope.+pruneUnsolvedMetas :: QName -> ConHead -> Telescope -> [QName] -> Map MetaId InteractionId -> (MetaId -> Bool) -> [MetaId] -> TCM ()+pruneUnsolvedMetas genRecName genRecCon genTel genRecFields interactionPoints isGeneralized metas+  | all isGeneralized metas = return ()+  | otherwise               = prune [] genTel metas+  where+    prune _ _ [] = return ()+    prune cxt tel (x : xs) | not (isGeneralized x) = do+      -- If x is a blocked term we shouldn't instantiate it.+      whenM (not <$> isBlockedTerm x) $ do+        x <- if size tel > 0 then prePrune x+                             else return x+        pruneMeta (telFromList $ reverse cxt) x+      prune cxt tel xs+    prune cxt (ExtendTel a tel) (x : xs) = prune (fmap (x,) a : cxt) (unAbs tel) xs+      where x = absName tel+    prune _ _ _ = __IMPOSSIBLE__++    sub = unpackSub genRecCon $ map getArgInfo $ telToList genTel++    prepruneError :: MetaId -> String -> TCM a+    prepruneError x code = do+      r <- getMetaRange x+      let msg = "Congratulations! You have found an easter egg (#" ++ code ++ "). " +++                "Be the first to submit a self-contained test case (max 50 lines of code) " +++                "producing this error message to https://github.com/agda/agda/issues/3672 " +++                "to receive a small prize."+          cause = "The error is caused by complicated dependencies between unsolved " +++                  "metavariables and generalized variables. In particular, this meta:"+      genericDocError =<<+        (fwords msg $+$+         sep [fwords cause, nest 2 $ prettyTCM (MetaV x []) <+> "at" <+> pretty r]+        )++    -- If one of the fields depend on this meta, we have to make sure that this meta doesn't depend+    -- on any variables introduced after the genRec. See test/Fail/Issue3672b.agda for a test case.+    prePrune x = do+      cp <- viewTC eCurrentCheckpoint+      mv <- lookupMeta x+      (i, _A) <- enterClosure (miClosRange $ mvInfo mv) $ \ _ -> do+        δ <- checkpointSubstitution cp+        _A <- case mvJudgement mv of+                IsSort{}  -> return Nothing+                HasType{} -> Just <$> getMetaTypeInContext x+        case δ of+          Wk n IdS -> return (n, _A)+          IdS      -> return (0, _A)+          _        -> prepruneError x "RFCX"+      if i == 0 then return x else do+        reportSDoc "tc.generalize.prune.pre" 40 $ vcat+          [ "prepruning"+          , nest 2 $ pretty x <+> ":" <+> pretty (jMetaType $ mvJudgement mv)+          , nest 2 $ "|Δ| =" <+> pshow i ]++        -- We have+        --   Γ (r : GenRec)            current context+        --   Γ (r : GenRec) Δ ⊢ x : A  with |Δ| = i+        -- and we need to get rid of the dependency on Δ.++        -- We can only do this if A does not depend on Δ, so check this first.+        case IntSet.minView (allFreeVars _A) of+          Just (j, _) | j < i -> prepruneError x "FVTY"+          _                   -> return ()++        -- If it doesn't we can strenghten it to the current context (this is done by+        -- newMetaFromOld).+        --   Γ (r : GenRec) ⊢ ρ : Γ (r : GenRec) Δ+        let ρ  = strengthenS __IMPOSSIBLE__ i+            ρ' = raiseS i++        (y, u) <- newMetaFromOld mv ρ _A++        let uρ' = applySubst ρ' u++        reportSDoc "tc.generalize.prune.pre" 40 $ nest 2 $ vcat+          [ "u    =" <+> pretty u+          , "uρ⁻¹ =" <+> pretty uρ' ]++        -- To solve it we enter the context of x again+        enterClosure (miClosRange $ mvInfo mv) $ \ _ -> do+          -- v is x applied to the context variables+          v <- case _A of+                 Nothing -> Sort . MetaS x . map Apply <$> getMetaContextArgs mv+                 Just{}  -> MetaV x . map Apply <$> getMetaContextArgs mv+          noConstraints (doPrune x mv _A v uρ') `catchError` \ _ -> prepruneError x "INST"+          setInteractionPoint x y+          return y++    pruneMeta _Θ x = do+      cp <- viewTC eCurrentCheckpoint+      mv <- lookupMeta x+      -- The reason we are doing all this inside the closure of x is so that if x is an interaction+      -- meta we get the right context for the pruned interaction meta.+      enterClosure (miClosRange $ mvInfo mv) $ \ _ ->+        -- If we can't find the generalized record, it's already been pruned and we don't have to do+        -- anything.+        whenJustM (findGenRec mv) $ \ i -> do++        reportSDoc "tc.generalize.prune" 30 $ vcat+          [ "pruning"+          , nest 2 $ inTopContext $ prettyTCM (mvJudgement mv)+          , nest 2 $ "GenRecTel is var" <+> pretty i ]++        _ΓrΔ <- getContextTelescope+        let (_Γ, _Δ) = (telFromList gs, telFromList ds)+              where (gs, _ : ds) = splitAt (size _ΓrΔ - i - 1) (telToList _ΓrΔ)++        -- Get the type of x. By doing this here we let the checkpoint machinery sort out the+        _A <- case mvJudgement mv of+                IsSort{}  -> return Nothing+                HasType{} -> Just <$> getMetaTypeInContext x++        -- We have+        --   Γ  (r : GenTel) Δ         current context+        --   Γ₀ (r : GenTel)           top context+        --   Γ₀ ⊢ Θ                    prefix of the generalized telescope currently in scope+        --   Γ (r : GenTel) Δ ⊢ x : A  the meta to prune++        -- Get the substitution from the point of generalization to the current context. This always+        -- succeeds since if the meta depends on GenTel it must have been created inside the+        -- generalization:+        --   Γ (r : GenTel) Δ ⊢ δ : Γ₀ (r : GenTel)+        δ <- checkpointSubstitution cp++        -- v is x applied to the context variables+        v <- case _A of+               Nothing -> Sort . MetaS x . map Apply <$> getMetaContextArgs mv+               Just{}  -> MetaV x . map Apply <$> getMetaContextArgs mv++        -- Now ultimately we want to create the fresh meta in the context+        --   Γ Θγ Δσ where Γ    ⊢ γ : Γ₀+        --                 Γ Θγ ⊢ σ : Γ (r : GenTel)+        -- σ is the unpacking substitution (which is polymorphic in Γ)+        let σ   = sub (size _Θ)+            --    Γ <- Γ (r : GenTel) Δ <- Γ₀ (r : GenTel) <- Γ₀+            γ   = strengthenS __IMPOSSIBLE__ (i + 1) `composeS` δ `composeS` raiseS 1+            _Θγ = applySubst γ _Θ+            _Δσ = applySubst σ _Δ++        -- The substitution into the new context is simply lifting σ over Δ:+        --   Γ Θγ Δσ ⊢ lift i σ : Γ (r : GenTel) Δ+        let ρ  = liftS i σ+            -- We also need ρ⁻¹, which is a lot easier to construct.+            ρ' = liftS i $ [ Var 0 [Proj ProjSystem fld] | fld <- reverse $ take (size _Θ) $ genRecFields ] ++# raiseS 1++        reportSDoc "tc.generalize.prune" 30 $ nest 2 $ vcat+          [ "Γ   =" <+> pretty _Γ+          , "Θ   =" <+> pretty _Θ+          , "Δ   =" <+> pretty _Δ+          , "σ   =" <+> pretty σ+          , "γ   =" <+> pretty γ+          , "δ   =" <+> pretty δ+          , "ρ   =" <+> pretty ρ+          , "ρ⁻¹ =" <+> pretty ρ'+          , "Θγ  =" <+> pretty _Θγ+          , "Δσ  =" <+> pretty _Δσ+          , "_A  =" <+> pretty _A+          ]++        -- When updating the context we also need to pick names for the variables. Get them from the+        -- current context and generate fresh ones for the generalized variables in Θ.+        (newCxt, rΘ) <- do+          (rΔ, _ : rΓ) <- splitAt i <$> getContext+          let setName = traverse $ \ (s, ty) -> (,ty) <$> freshName_ s+          rΘ <- mapM setName $ reverse $ telToList _Θγ+          let rΔσ = zipWith (\ name dom -> first (const name) <$> dom)+                            (map (fst . unDom) rΔ)+                            (reverse $ telToList _Δσ)+          return (rΔσ ++ rΘ ++ rΓ, rΘ)++        -- Now we can enter the new context and create our meta variable.+        (y, u) <- updateContext ρ (const newCxt) $ localScope $ do++          -- First, we add the named variables to the scope, to allow+          -- them to be used in holes (#3341).+          addNamedVariablesToScope rΘ++          -- Now we can create the new meta+          newMetaFromOld mv ρ _A++        -- Finally we solve x := yρ⁻¹. The reason for solving it this way instead of xρ := y is that+        -- ρ contains dummy terms for the variables that are not in scope.+        -- If x has been instantiated by some constraint unblocked by previous pruning or+        -- generalization, use equalTerm instead of assigning to x. If this fails (see+        -- test/Fail/Issue3655b.agda for a test case), we need to give an error. This can happen if+        -- there are dependencies between generalized variables that are hidden by constraints and+        -- the dependency sorting happens to pick the wrong order. For instance, if we have+        --    α : Nat   (unsolved meta)+        --    t : F α   (named variable)+        --    n : Nat   (named variable)+        -- and a constraint F α == F n, where F does some pattern matching preventing the constraint+        -- to be solved when n is still a meta. If t appears before n in the type these will be sorted+        -- as α, t, n, but we will solve α := n before we get to the pruning here. It's good that we+        -- solve first though, because that means we can give a more informative error message than+        -- the "Cannot instantiate..." we would otherwise get.+        let uρ' = applySubst ρ' u+        reportSDoc "tc.generalize.prune" 80 $ vcat+          [ "solving"+          , nest 2 $ sep [ pretty v   <+> "=="+                         , pretty uρ' <+> ":"+                         , pretty _A ] ]+        noConstraints (doPrune x mv _A v uρ') `catchError` niceError x v++        reportSDoc "tc.generalize.prune" 80 $ vcat+          [ "solved"+          , nest 2 $ "v    =" <+> (pretty =<< instantiateFull v)+          , nest 2 $ "uρ⁻¹ =" <+> (pretty =<< instantiateFull uρ') ]++        setInteractionPoint x y++    findGenRec :: MetaVariable -> TCM (Maybe Int)+    findGenRec mv = do+      cxt <- instantiateFull =<< getContext+      let notPruned = [ i | i <- permute (takeP (length cxt) $ mvPermutation mv) $+                                 reverse $ zipWith const [0..] cxt ]+      case [ i | (i, Dom{unDom = (_, El _ (Def q _))}) <- zip [0..] cxt,+                 q == genRecName, elem i notPruned ] of+        []    -> return Nothing+        _:_:_ -> __IMPOSSIBLE__+        [i]   -> return (Just i)+                                                    -- Nothing if sort meta+    newMetaFromOld :: MetaVariable -> Substitution -> Maybe Type -> TCM (MetaId, Term)+    newMetaFromOld mv ρ mA = setCurrentRange mv $+      case mA of+        Nothing -> do+          s @ (MetaS y _) <- newSortMeta+          return (y, Sort s)+        Just _A -> do+          let _Aρ = applySubst ρ _A+          newNamedValueMeta DontRunMetaOccursCheck+                            (miNameSuggestion $ mvInfo mv) _Aρ++    -- If x is a hole, update the hole to point to y instead.+    setInteractionPoint x y =+      whenJust (Map.lookup x interactionPoints) (`connectInteractionPoint` y)++    doPrune :: MetaId -> MetaVariable -> Maybe Type -> Term -> Term -> TCM ()+    doPrune x mv _A v u =+      case _A of+        _ | isOpen -> assign DirEq x (getArgs v) u+        Nothing    -> equalSort (unwrapSort v) (unwrapSort u)+        Just _A    -> equalTerm _A v u+      where+        isOpen = isOpenMeta $ mvInstantiation mv+        getArgs v = case v of+            Sort (MetaS _ es) -> unApply es+            MetaV _ es        -> unApply es+            _                 -> __IMPOSSIBLE__+          where unApply es = fromMaybe __IMPOSSIBLE__ $ allApplyElims es+        unwrapSort (Sort s) = s+        unwrapSort _        = __IMPOSSIBLE__++    niceError x u err = do+      u <- instantiateFull u+      let err' = case err of+                   TypeError{tcErrClosErr = cl} ->+                     -- Remove the 'when' part from the error since it's most like the same as ours.+                     err{ tcErrClosErr = cl{ clEnv = (clEnv cl) { envCall = Nothing } } }+                   _ -> err+          telList = telToList genTel+          names   = map (fst . unDom) telList+          late    = map (fst . unDom) $ filter (elem x . allMetas) telList+          projs (Proj _ q)+            | elem q genRecFields = Set.fromList [x | Just x <- [getGeneralizedFieldName q]]+          projs _                 = Set.empty+          early = Set.toList $ flip foldTerm u $ \ case+                  Var _ es   -> foldMap projs es+                  Def _ es   -> foldMap projs es+                  MetaV _ es -> foldMap projs es+                  _          -> Set.empty+          commas []       = __IMPOSSIBLE__+          commas [x]      = x+          commas [x, y]   = x ++ ", and " ++ y+          commas (x : xs) = x ++ ", " ++ commas xs+          cause = "There were unsolved constraints that obscured the " +++                  "dependencies between the generalized variables."+          solution = "The most reliable solution is to provide enough information to make the dependencies " +++                     "clear, but simply mentioning the variables in the right order should also work."+          order = sep [ fwords "Dependency analysis suggested this (likely incorrect) order:",+                        nest 2 $ fwords (unwords names) ]+          guess = "After constraint solving it looks like " ++ commas late ++ " actually depend" ++ s +++                  " on " ++ commas early+            where+              s | length late == 1 = "s"+                | otherwise        = ""+      genericDocError =<< vcat+        [ fwords $ "Variable generalization failed."+        , nest 2 $ sep ["- Probable cause", nest 4 $ fwords cause]+        , nest 2 $ sep ["- Suggestion", nest 4 $ fwords solution]+        , nest 2 $ sep $ ["- Further information"+                         , nest 2 $ "-" <+> order ] +++                         [ nest 2 $ "-" <+> fwords guess | not (null late), not (null early) ] +++                         [ nest 2 $ "-" <+> sep [ fwords "The dependency I error is", prettyTCM err' ] ]+        ]++    addNamedVariablesToScope cxt =+      forM_ cxt $ \ Dom{ unDom = (x, _) } -> do+        -- Recognize named variables by lack of '.' (TODO: hacky!)+        reportSLn "tc.generalize.eta.scope" 40 $ "Adding (or not) " ++ show (nameConcrete x) ++ " to the scope"+        when ('.' `notElem` show (nameConcrete x)) $ do+          reportSLn "tc.generalize.eta.scope" 40 "  (added)"+          bindVariable LambdaBound (nameConcrete x) x++-- | Create a substition from a context where the i first record fields are variables to a context+--   where you have a single variable of the record type. Packs up the field variables in a record+--   constructor and pads with __DUMMY_TERM__s for the missing fields. Important that you apply this+--   to terms that only projects the defined fields from the record variable.+--   Used with partial record values when building the telescope of generalized variables in which+--   case we have done the dependency analysis that guarantees it is safe.+unpackSub :: ConHead -> [ArgInfo] -> Int -> Substitution+unpackSub con infos i = recSub+  where+    ar = length infos+    appl info v = Apply (Arg info v)+    recVal = Con con ConOSystem $ zipWith appl infos $ [var j | j <- [i - 1, i - 2..0]] ++ replicate (ar - i) __DUMMY_TERM__++    -- want: Γ Δᵢ ⊢ recSub i : Γ (r : R)+    -- have:+    -- Γ Δᵢ ⊢ recVal i :# σ : Θ (r : R),  if Γ Δᵢ ⊢ σ : Θ+    -- Γ Δᵢ ⊢ WkS i IdS : Γ+    recSub = recVal :# Wk i IdS++-- | Takes the list of types+--    A₁ []+--    A₂ [r.f₁]+--    A₃ [r.f₂, r.f₃]+--    ...+--   And builds the telescope+--    (x₁ : A₁ [ r := c _       .. _ ])+--    (x₂ : A₂ [ r := c x₁ _    .. _ ])+--    (x₃ : A₃ [ r := c x₁ x₂ _ .. _ ])+--    ...+buildGeneralizeTel :: ConHead -> [(Arg String, Type)] -> Telescope+buildGeneralizeTel con xs = go 0 xs+  where+    infos = map (argInfo . fst) xs+    recSub i = unpackSub con infos i+    go _ [] = EmptyTel+    go i ((name, ty) : xs) = ExtendTel (dom ty') $ Abs (unArg name) $ go (i + 1) xs+      where ty' = applySubst (recSub i) ty+            dom = defaultNamedArgDom (getArgInfo name) (unArg name)++-- | Create metas for all used generalizable variables and their dependencies.+createGenValues :: Set QName -> TCM (Map MetaId QName, Map QName GeneralizedValue)+createGenValues s = do+  genvals <- locallyTC eGeneralizeMetas (const YesGeneralize) $+               forM (sortBy (compare `on` getRange) $ Set.toList s) createGenValue+  let metaMap = Map.fromList [ (m, x) | (x, m, _) <- genvals ]+      nameMap = Map.fromList [ (x, v) | (x, _, v) <- genvals ]+  return (metaMap, nameMap)++-- | Create a generalisable meta for a generalisable variable.+createGenValue :: QName -> TCM (QName, MetaId, GeneralizedValue)+createGenValue x = setCurrentRange x $ do+  cp  <- viewTC eCurrentCheckpoint+  def <- instantiateDef =<< getConstInfo x+                   -- Only prefix of generalizable arguments (for now?)+  let nGen       = case defArgGeneralizable def of+                     NoGeneralizableArgs     -> 0+                     SomeGeneralizableArgs n -> n+      ty         = defType def+      TelV tel _ = telView' ty+      -- Generalizable variables are never explicit, so if they're given as+      -- explicit we default to hidden.+      hideExplicit arg | visible arg = hide arg+                       | otherwise   = arg+      argTel     = telFromList $ map hideExplicit $ take nGen $ telToList tel++  args <- newTelMeta argTel++  let metaType = piApply ty args+      name     = show (nameConcrete $ qnameName x)+  (m, term) <- newNamedValueMeta DontRunMetaOccursCheck name metaType++  -- Freeze the meta to prevent named generalizable metas to be instantiated.+  updateMetaVar m $ \ mv -> mv { mvFrozen = Frozen }++  -- Set up names of arg metas+  forM_ (zip3 [1..] (map unArg args) (telToList argTel)) $ \ case+    (i, MetaV m _, Dom{unDom = (x, _)}) -> do+      let suf "_" = show i+          suf ""  = show i+          suf x   = x+      setMetaNameSuggestion m (name ++ "." ++ suf x)+    _ -> return ()  -- eta expanded++  -- Update the ArgInfos for the named meta. The argument metas are+  -- created with the correct ArgInfo.+  setMetaArgInfo m $ hideExplicit (defArgInfo def)++  reportSDoc "tc.generalize" 50 $ vcat+    [ "created metas for generalized variable" <+> prettyTCM x+    , nest 2 $ "top  =" <+> prettyTCM term+    , nest 2 $ "args =" <+> prettyTCM args ]++  case term of+    MetaV{} -> return ()+    _       -> genericDocError =<< ("Cannot generalize over" <+> prettyTCM x <+> "of eta-expandable type") <?>+                                    prettyTCM metaType+  return (x, m, GeneralizedValue{ genvalCheckpoint = cp+                                , genvalTerm       = term+                                , genvalType       = metaType })++-- | Sort metas in dependency order.+sortMetas :: [MetaId] -> TCM [MetaId]+sortMetas metas = do+  metaGraph <- fmap concat $ forM metas $ \ m -> do+                  deps <- nub . filter (`elem` metas) . allMetas <$> getType m+                  return [ (m, m') | m' <- deps ]++  caseMaybe (Graph.topSort metas metaGraph)+            (typeError GeneralizeCyclicDependency)+            return++  where+    -- Sort metas don't have types, but we still want to sort them.+    getType m = do+      mv <- lookupMeta m+      case mvJudgement mv of+        IsSort{}                 -> return Nothing+        HasType{ jMetaType = t } -> Just <$> instantiateFull t++-- | Create a not-yet correct record type for the generalized telescope. It's not yet correct since+--   we haven't computed the telescope yet, and we need the record type to do it.+createGenRecordType :: Type -> [MetaId] -> TCM (QName, ConHead, [QName])+createGenRecordType genRecMeta@(El genRecSort _) sortedMetas = do+  current <- currentModule+  let freshQName s = qualify current <$> freshName_ (s :: String)+      mkFieldName  = freshQName . (generalizedFieldName ++) <=< getMetaNameSuggestion+  genRecFields <- mapM (defaultArg <.> mkFieldName) sortedMetas+  genRecName   <- freshQName "GeneralizeTel"+  genRecCon    <- freshQName "mkGeneralizeTel" <&> \ con -> ConHead+                  { conName      = con+                  , conInductive = Inductive+                  , conFields    = genRecFields }+  forM_ (zip sortedMetas genRecFields) $ \ (meta, fld) -> do+    fieldTy <- getMetaType meta+    let field = unArg fld+    addConstant field $ defaultDefn (argInfo fld) field fieldTy $+      let proj = Projection { projProper   = Just genRecName+                            , projOrig     = field+                            , projFromType = defaultArg genRecName+                            , projIndex    = 1+                            , projLams     = ProjLams [defaultArg "gtel"] } in+      Function { funClauses      = []+               , funCompiled     = Nothing+               , funSplitTree    = Nothing+               , funTreeless     = Nothing+               , funInv          = NotInjective+               , funMutual       = Just []+               , funAbstr        = ConcreteDef+               , funDelayed      = NotDelayed+               , funProjection   = Just proj+               , funFlags        = Set.empty+               , funTerminates   = Just True+               , funExtLam       = Nothing+               , funWith         = Nothing+               , funCopatternLHS = False+               , funCovering     = []+               }+  addConstant (conName genRecCon) $ defaultDefn defaultArgInfo (conName genRecCon) __DUMMY_TYPE__ $ -- Filled in later+    Constructor { conPars   = 0+                , conArity  = length genRecFields+                , conSrcCon = genRecCon+                , conData   = genRecName+                , conAbstr  = ConcreteDef+                , conInd    = Inductive+                , conComp   = (emptyCompKit, Nothing)+                , conForced = []+                , conErased = []+                }+  let dummyTel 0 = EmptyTel+      dummyTel n = ExtendTel (defaultDom __DUMMY_TYPE__) $ Abs "_" $ dummyTel (n - 1)+  addConstant genRecName $ defaultDefn defaultArgInfo genRecName (sort genRecSort) $+    Record { recPars         = 0+           , recClause       = Nothing+           , recConHead      = genRecCon+           , recNamedCon     = False+           , recFields       = genRecFields+           , recTel          = dummyTel (length genRecFields) -- Filled in later+           , recMutual       = Just []+           , recEtaEquality' = Inferred YesEta+           , recInduction    = Nothing+           , recAbstr        = ConcreteDef+           , recComp         = emptyCompKit }+  reportSDoc "tc.generalize" 40 $ vcat+    [ text "created genRec" <+> text (show genRecFields) ]+  -- Solve the genRecMeta+  args <- getContextArgs+  let genRecTy = El genRecSort $ Def genRecName $ map Apply args+  noConstraints $ equalType genRecTy genRecMeta+  return (genRecName, genRecCon, map unArg genRecFields)++-- | Once we have the generalized telescope we can fill in the missing details of the record type.+fillInGenRecordDetails :: QName -> ConHead -> [QName] -> Type -> Telescope -> TCM ()+fillInGenRecordDetails name con fields recTy fieldTel = do+  cxtTel <- fmap hideAndRelParams <$> getContextTelescope+  let fullTel = cxtTel `abstract` fieldTel+  -- Field types+  let mkFieldTypes [] EmptyTel = []+      mkFieldTypes (fld : flds) (ExtendTel ty ftel) =+          abstract cxtTel (El s $ Pi (defaultDom recTy) (Abs "r" $ unDom ty)) :+          mkFieldTypes flds (absApp ftel proj)+        where+          s = PiSort (getSort recTy) (Abs "r" $ getSort ty)+          proj = Var 0 [Proj ProjSystem fld]+      mkFieldTypes _ _ = __IMPOSSIBLE__+  let fieldTypes = mkFieldTypes fields (raise 1 fieldTel)+  reportSDoc "tc.generalize" 40 $ text "Field types:" <+> inTopContext (nest 2 $ vcat $ map prettyTCM fieldTypes)+  zipWithM_ setType fields fieldTypes+  -- Constructor type+  let conType = fullTel `abstract` raise (size fieldTel) recTy+  reportSDoc "tc.generalize" 40 $ text "Final genRecCon type:" <+> inTopContext (prettyTCM conType)+  setType (conName con) conType+  -- Record telescope: Includes both parameters and fields.+  modifyGlobalDefinition name $ \ r ->+    r { theDef = (theDef r) { recTel = fullTel } }+  where+    setType q ty = modifyGlobalDefinition q $ \ d -> d { defType = ty }+
+ src/full/Agda/TypeChecking/IApplyConfluence.hs view
@@ -0,0 +1,121 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE NondecreasingIndentation #-}+module Agda.TypeChecking.IApplyConfluence where++import Prelude hiding (null, (!!))  -- do not use partial functions like !!++import Control.Monad+import Control.Monad.Reader+import Control.Monad.Trans ( lift )++import Data.Either (lefts)+import qualified Data.List as List+import Data.Monoid (Any(..))+import Data.Map (Map)+import qualified Data.Map as Map+import Data.Set (Set)+import qualified Data.Set as Set+import qualified Data.Traversable as Trav++import Agda.Syntax.Common+import Agda.Syntax.Position+-- import Agda.Syntax.Literal+import Agda.Syntax.Internal+import Agda.Syntax.Internal.Pattern++import Agda.Interaction.Options++import Agda.TypeChecking.Names+import Agda.TypeChecking.Primitive hiding (Nat)+import Agda.TypeChecking.Primitive.Cubical+import Agda.TypeChecking.Monad+import Agda.TypeChecking.Monad.Builtin++-- import Agda.TypeChecking.Rules.LHS (checkSortOfSplitVar)+-- import Agda.TypeChecking.Rules.LHS.Problem (allFlexVars)+-- import Agda.TypeChecking.Rules.LHS.Unify++-- import Agda.TypeChecking.Coverage.Match+-- import Agda.TypeChecking.Coverage.SplitTree++import Agda.TypeChecking.Conversion (tryConversion, equalType, equalTermOnFace)+-- import Agda.TypeChecking.Datatypes (getConForm)+-- import {-# SOURCE #-} Agda.TypeChecking.Empty (isEmptyTel)+-- import Agda.TypeChecking.Free+-- import Agda.TypeChecking.Irrelevance+-- import Agda.TypeChecking.Patterns.Internal (dotPatternsToPatterns)+import Agda.TypeChecking.Pretty+import Agda.TypeChecking.Substitute+import Agda.TypeChecking.Reduce+import Agda.TypeChecking.Records+import Agda.TypeChecking.Telescope+import Agda.TypeChecking.Telescope.Path+-- import Agda.TypeChecking.MetaVars+-- import Agda.TypeChecking.Warnings++-- import Agda.Interaction.Options++import Agda.Utils.Either+import Agda.Utils.Except+  ( ExceptT+  , MonadError(catchError, throwError)+  , runExceptT+  )+import Agda.Utils.Function+import Agda.Utils.Functor+import Agda.Utils.List+import Agda.Utils.Maybe+import Agda.Utils.Monad+import Agda.Utils.Null+import Agda.Utils.Permutation+import Agda.Utils.Pretty (prettyShow)+import Agda.Utils.Size+import Agda.Utils.Tuple+import Agda.Utils.Lens++#include "undefined.h"+import Agda.Utils.Impossible++checkIApplyConfluence_ :: QName -> TCM ()+checkIApplyConfluence_ f = whenM (optCubical <$> pragmaOptions) $ do+  -- Andreas, 2019-03-27, iapply confluence should only be checked when --cubical.+  -- See test/Succeed/CheckIApplyConfluence.agda.+  -- We cannot reach the following crash point unless --cubical.+  __CRASH_WHEN__ "tc.cover.iapply.confluence.crash" 666+  reportSDoc "tc.cover.iapply" 10 $ text "Checking IApply confluence of" <+> pretty f+  inConcreteOrAbstractMode f $ \ d -> do+  case theDef d of+    Function{funClauses = cls', funCovering = cls} -> do+      reportSDoc "tc.cover.iapply" 10 $ text "length cls =" <+> pretty (length cls)+      when (null cls && not (null $ concatMap (iApplyVars . namedClausePats) cls')) $+        __IMPOSSIBLE__+      modifySignature $ updateDefinition f $ updateTheDef+        $ updateCovering (const [])++      forM_ cls $ checkIApplyConfluence f+    _ -> return ()++-- | @addClause f (Clause {namedClausePats = ps})@ checks that @f ps@+-- reduces in a way that agrees with @IApply@ reductions.+checkIApplyConfluence :: QName -> Closure Clause -> TCM ()+checkIApplyConfluence f clos = do+  enterClosure clos $ \ cl ->+    case cl of+      Clause {clauseBody = Nothing} -> return ()+      Clause {clauseType = Nothing} -> __IMPOSSIBLE__+      cl@Clause { clauseTel = tel+                , namedClausePats = ps+                , clauseType = Just t+                , clauseBody = Just body+                } -> setCurrentRange (getRange f) $ do+          let+            trhs = unArg t+          reportSDoc "tc.cover.iapply" 40 $ "tel =" <+> prettyTCM tel+          reportSDoc "tc.cover.iapply" 40 $ "ps =" <+> pretty ps+          ps <- normaliseProjP ps+          forM_ (iApplyVars ps) $ \ i -> do+            unview <- intervalUnview'+            let phi = unview $ IMax (argN $ var $ i) $ argN $ unview (INeg $ argN $ var i)+            let es = patternsToElims ps+            let lhs = Def f es+            equalTermOnFace phi trhs lhs body
src/full/Agda/TypeChecking/Implicit.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP #-}+{-# LANGUAGE PatternSynonyms #-}  {-| Functions for inserting implicit arguments at the right places. -}@@ -21,33 +22,43 @@ #include "undefined.h" import Agda.Utils.Impossible --- | @implicitArgs n expand eti t@ generates up to @n@ implicit arguments+-- | @implicitArgs n expand t@ generates up to @n@ implicit arguments --   metas (unbounded if @n<0@), as long as @t@ is a function type --   and @expand@ holds on the hiding info of its domain.------   If explicit arguments are to be inserted as well, they are---   inserted as instance arguments (used for recursive instance search). -implicitArgs :: Int -> (Hiding -> Bool) -> Type -> TCM (Args, Type)+implicitArgs+  :: Int               -- ^ @n@, the maximum number of implicts to be inserted.+  -> (Hiding -> Bool)  -- ^ @expand@, the predicate to test whether we should keep inserting.+  -> Type              -- ^ The (function) type @t@ we are eliminating.+  -> TCM (Args, Type)  -- ^ The eliminating arguments and the remaining type. implicitArgs n expand t = mapFst (map (fmap namedThing)) <$> do   implicitNamedArgs n (\ h x -> expand h) t --- | @implicitNamedArgs n expand eti t@ generates up to @n@ named implicit arguments+-- | @implicitNamedArgs n expand t@ generates up to @n@ named implicit arguments --   metas (unbounded if @n<0@), as long as @t@ is a function type --   and @expand@ holds on the hiding and name info of its domain.------   If explicit arguments are to be inserted as well, they are---   inserted as instance arguments (used for recursive instance search). -implicitNamedArgs :: Int -> (Hiding -> ArgName -> Bool) -> Type -> TCM (NamedArgs, Type)+implicitNamedArgs+  :: Int                          -- ^ @n@, the maximum number of implicts to be inserted.+  -> (Hiding -> ArgName -> Bool)  -- ^ @expand@, the predicate to test whether we should keep inserting.+  -> Type                         -- ^ The (function) type @t@ we are eliminating.+  -> TCM (NamedArgs, Type)        -- ^ The eliminating arguments and the remaining type. implicitNamedArgs 0 expand t0 = return ([], t0) implicitNamedArgs n expand t0 = do     t0' <- reduce t0+    reportSDoc "tc.term.args" 30 $ "implicitNamedArgs" <+> prettyTCM t0'+    reportSDoc "tc.term.args" 80 $ "implicitNamedArgs" <+> text (show t0')     case unEl t0' of-      Pi (Dom info a) b | let x = absName b, expand (getHiding info) x -> do+      Pi Dom{domInfo = info, domName = name, unDom = a} b+        | let x = maybe "_" rangedThing name, expand (getHiding info) x -> do           info' <- if hidden info then return info else do             reportSDoc "tc.term.args.ifs" 15 $-              text "inserting instance meta for type" <+> prettyTCM a+              "inserting instance meta for type" <+> prettyTCM a+            reportSDoc "tc.term.args.ifs" 40 $ nest 2 $ vcat+              [ "x      = " <+> text (show x)+              , "hiding = " <+> text (show $ getHiding info)+              ]+             return $ makeInstance info           (_, v) <- newMetaArg info' x a           let narg = Arg info (Named (Just $ unranged x) v)@@ -62,11 +73,11 @@   -> Type      -- ^ Type of meta.   -> TCM (MetaId, Term)  -- ^ The created meta as id and as term. newMetaArg info x a = do-  applyRelevanceToContext (getRelevance info) $+  applyModalityToContext info $     newMeta (getHiding info) (argNameToString x) a   where     newMeta :: Hiding -> String -> Type -> TCM (MetaId, Term)-    newMeta Instance{} = newIFSMeta+    newMeta Instance{} = newInstanceMeta     newMeta Hidden     = newNamedValueMeta RunMetaOccursCheck     newMeta NotHidden  = newNamedValueMeta RunMetaOccursCheck @@ -78,48 +89,74 @@   -> Type      -- ^ Type of meta.   -> TCM (MetaId, Term)  -- ^ The created meta as id and as term. newInteractionMetaArg info x a = do-  applyRelevanceToContext (getRelevance info) $+  applyModalityToContext info $     newMeta (getHiding info) (argNameToString x) a   where     newMeta :: Hiding -> String -> Type -> TCM (MetaId, Term)-    newMeta Instance{} = newIFSMeta+    newMeta Instance{} = newInstanceMeta     newMeta Hidden     = newNamedValueMeta' RunMetaOccursCheck     newMeta NotHidden  = newNamedValueMeta' RunMetaOccursCheck  --------------------------------------------------------------------------- +-- | Possible results of 'insertImplicit'. data ImplicitInsertion-      = ImpInsert [Hiding]        -- ^ this many implicits have to be inserted-      | BadImplicits      -- ^ hidden argument where there should have been a non-hidden arg-      | NoSuchName ArgName -- ^ bad named argument-      | NoInsertNeeded+      = ImpInsert [Hiding] -- ^ Success: this many implicits have to be inserted (list can be empty).+      | BadImplicits       -- ^ Error: hidden argument where there should have been a non-hidden argument.+      | NoSuchName ArgName -- ^ Error: bad named argument.   deriving (Show) -impInsert :: [Hiding] -> ImplicitInsertion-impInsert [] = NoInsertNeeded-impInsert hs = ImpInsert hs+pattern NoInsertNeeded :: ImplicitInsertion+pattern NoInsertNeeded = ImpInsert [] --- | The list should be non-empty.-insertImplicit :: NamedArg e -> [Arg ArgName] -> ImplicitInsertion-insertImplicit _ [] = __IMPOSSIBLE__-insertImplicit a ts | visible a = impInsert $ nofHidden ts-  where-    nofHidden :: [Arg a] -> [Hiding]-    nofHidden = takeWhile notVisible . map getHiding-insertImplicit a ts =-  case nameOf (unArg a) of-    Nothing -> maybe BadImplicits impInsert $ upto (getHiding a) $ map getHiding ts-    Just x  -> find [] (rangedThing x) (getHiding a) ts+-- | If the next given argument is @a@ and the expected arguments are @ts@+--   @insertImplicit' a ts@ returns the prefix of @ts@ that precedes @a@.+--+--   If @a@ is named but this name does not appear in @ts@, the 'NoSuchName' exception is thrown.+--+insertImplicit+  :: NamedArg e  -- ^ Next given argument @a@.+  -> [Dom a]     -- ^ Expected arguments @ts@.+  -> ImplicitInsertion+insertImplicit a doms = insertImplicit' a $ map name doms   where-    upto h [] = Nothing-    upto h (NotHidden : _) = Nothing-    upto h (h' : _) | sameHiding h h' = Just []-    upto h (h' : hs) = (h' :) <$> upto h hs+    name dom = x <$ argFromDom dom+      where x = maybe "_" rangedThing $ domName dom -    find :: [Hiding] -> ArgName -> Hiding -> [Arg ArgName] -> ImplicitInsertion-    find _ x _ (a@(Arg{}) : _) | visible a = NoSuchName x-    find hs x hidingx (a@(Arg _ y) : ts)-      | x == y && sameHiding hidingx a = impInsert $ reverse hs-      | x == y && sameHiding hidingx a = BadImplicits-      | otherwise = find (getHiding a : hs) x hidingx ts-    find i x _ [] = NoSuchName x+-- | If the next given argument is @a@ and the expected arguments are @ts@+--   @insertImplicit' a ts@ returns the prefix of @ts@ that precedes @a@.+--+--   If @a@ is named but this name does not appear in @ts@, the 'NoSuchName' exception is thrown.+--+insertImplicit'+  :: NamedArg e     -- ^ Next given argument @a@.+  -> [Arg ArgName]  -- ^ Expected arguments @ts@.+  -> ImplicitInsertion+insertImplicit' _ [] = BadImplicits+insertImplicit' a ts++  -- If @a@ is visible, then take the non-visible prefix of @ts@.+  | visible a = ImpInsert $ takeWhile notVisible $ map getHiding ts++  -- If @a@ is named, take prefix of @ts@ until the name of @a@ (with correct hiding).+  -- If the name is not found, throw exception 'NoSuchName'.+  | Just x <- rangedThing <$> nameOf (unArg a) = maybe (NoSuchName x) ImpInsert $+      takeHiddenUntil (\ t -> x == unArg t && sameHiding a t) ts++  -- If @a@ is neither visible nor named, take prefix of @ts@ with different hiding than @a@.+  | otherwise = maybe BadImplicits ImpInsert $+      takeHiddenUntil (sameHiding a) ts++    where+    -- | @takeHiddenUntil p ts@ returns the 'getHiding' of the prefix of @ts@+    --   until @p@ holds or a visible argument is encountered.+    --   If @p@ never holds, 'Nothing' is returned.+    --+    --   Precondition: @p@ should imply @not . visible@.+    takeHiddenUntil :: (Arg ArgName -> Bool) -> [Arg ArgName] -> Maybe [Hiding]+    takeHiddenUntil p ts =+      case ts2 of+        []      -> Nothing  -- Predicate was never true+        (t : _) -> if visible t then Nothing else Just $ map getHiding ts1+      where+      (ts1, ts2) = break (\ t -> p t || visible t) ts
src/full/Agda/TypeChecking/Injectivity.hs view
@@ -62,19 +62,21 @@       case def of         Datatype{}  -> yes         Record{}    -> yes+        DataOrRecSig{} -> yes         Axiom{}     -> do           reportSLn "tc.inj.axiom" 50 $ "headSymbol: " ++ prettyShow f ++ " is an Axiom."           -- Don't treat axioms in the current mutual block           -- as constructors (they might have definitions we           -- don't know about yet).-          caseMaybeM (asks envMutualBlock) yes $ \ mb -> do+          caseMaybeM (asksTC envMutualBlock) yes $ \ mb -> do             fs <- mutualNames <$> lookupMutualBlock mb             if Set.member f fs then no else yes         Function{}    -> no         Primitive{}   -> no+        GeneralizableVar{} -> __IMPOSSIBLE__         Constructor{} -> __IMPOSSIBLE__         AbstractDefn{}-> __IMPOSSIBLE__-    Con c _ _ -> return (Just $ ConsHead $ conName c)+    Con c _ _ -> Just . ConsHead <$> canonicalName (conName c)     Sort _  -> return (Just SortHead)     Pi _ _  -> return (Just PiHead)     Var i [] -> return (Just $ VarHead i) -- Only naked variables. Otherwise substituting a neutral term is not guaranteed to stay neutral.@@ -84,6 +86,7 @@     Level{} -> return Nothing     MetaV{} -> return Nothing     DontCare{} -> return Nothing+    Dummy s -> __IMPOSSIBLE_VERBOSE__ s  -- | Do a full whnf and treat neutral terms as rigid. Used on the arguments to --   an injective functions and to the right-hand side.@@ -103,6 +106,7 @@       Level{}    -> return Nothing       MetaV{}    -> return Nothing       DontCare{} -> return Nothing+      Dummy s    -> __IMPOSSIBLE_VERBOSE__ s  -- | Does deBruijn variable i correspond to a top-level argument, and if so --   which one (index from the left).@@ -145,7 +149,7 @@    -- We don't need to consider absurd clauses   let computeHead c@Clause{ clauseBody = Just body } = do-        h <- varToArg c =<< lift (fromMaybe UnknownHead <$> headSymbol body)+        h <- varToArg c =<< lift (fromMaybe UnknownHead <$> addContext (clauseTel c) (headSymbol body))         return [Map.singleton h [c]]       computeHead _ = return [] @@ -158,10 +162,10 @@   reportSLn  "tc.inj.check" 20 $ prettyShow f ++ " is potentially injective."   reportSDoc "tc.inj.check" 30 $ nest 2 $ vcat $     for (Map.toList hdMap) $ \ (h, uc) ->-      text (prettyShow h) <+> text "-->" <+>+      text (prettyShow h) <+> "-->" <+>       case uc of         [c] -> prettyTCM $ map namedArg $ namedClausePats c-        _   -> text "(multiple clauses)"+        _   -> "(multiple clauses)"    return $ Inverse hdMap @@ -185,6 +189,7 @@       def <- getConstInfo q       return $ case theDef def of         Axiom{}        -> True+        DataOrRecSig{} -> True         AbstractDefn{} -> True         Function{}     -> False         Datatype{}     -> True@@ -192,6 +197,7 @@         Constructor{conSrcCon = ConHead{ conFields = fs }}                        -> null fs   -- Record constructors can be eliminated by projections         Primitive{}    -> False+        GeneralizableVar{} -> __IMPOSSIBLE__       isOverapplied Clause{ namedClausePats = ps } = length es > length ps@@ -205,8 +211,7 @@   where     instHead :: TermHead -> MaybeT TCM TermHead     instHead h@(VarHead i)-      | length es > i,-        Apply arg <- es !! i = MaybeT $ headSymbol' (unArg arg)+      | Just (Apply arg) <- es !!! i = MaybeT $ headSymbol' (unArg arg)       | otherwise = empty   -- impossible?     instHead h = return h @@ -231,13 +236,13 @@ -- | Precondition: The first argument must be blocked and the second must be --                 neutral. useInjectivity :: CompareDirection -> Type -> Term -> Term -> TCM ()-useInjectivity dir ty blk neu = locally eInjectivityDepth succ $ do+useInjectivity dir ty blk neu = locallyTC eInjectivityDepth succ $ do   inv <- functionInverse blk   -- Injectivity might cause non-termination for unsatisfiable constraints   -- (#431, #3067). Look at the number of active problems and the injectivity   -- depth to detect this.-  nProblems <- Set.size <$> view eActiveProblems-  injDepth  <- view eInjectivityDepth+  nProblems <- Set.size <$> viewTC eActiveProblems+  injDepth  <- viewTC eInjectivityDepth   let depth = max nProblems injDepth   maxDepth  <- maxInversionDepth   case inv of@@ -247,7 +252,7 @@       | otherwise -> do       reportSDoc "tc.inj.use" 30 $ fsep $         pwords "useInjectivity on" ++-        [ prettyTCM blk, prettyTCM cmp, prettyTCM neu, text ":", prettyTCM ty ]+        [ prettyTCM blk, prettyTCM cmp, prettyTCM neu, ":", prettyTCM ty ]       let canReduceToSelf = Map.member (ConsHead f) hdMap || Map.member UnknownHead hdMap           allUnique       = all isUnique hdMap           isUnique [_] = True@@ -263,11 +268,11 @@                   pwords "at")             , nest 2 $ fsep $ punctuate comma $ map prettyTCM blkArgs             , nest 2 $ fsep $ punctuate comma $ map prettyTCM neuArgs-            , nest 2 $ text "and type" <+> prettyTCM fTy+            , nest 2 $ "and type" <+> prettyTCM fTy             ]           fs  <- getForcedArgs f           pol <- getPolarity' cmp f-          reportSDoc "tc.inj.invert.success" 20 $ hsep [text "Successful spine comparison of", prettyTCM f]+          reportSDoc "tc.inj.invert.success" 20 $ hsep ["Successful spine comparison of", prettyTCM f]           app (compareElims pol fs fTy (Def f [])) blkArgs neuArgs          -- f us == c vs@@ -275,8 +280,14 @@         --    us == ps  with fresh metas for the pattern variables of ps.         --    If there's no such clause we can safely throw an error.         _ -> headSymbol' neu >>= \ case-          Nothing -> fallback-          Just (ConsHead f') | f == f', canReduceToSelf -> fallback+          Nothing -> do+            reportSDoc "tc.inj.use" 20 $ fsep $+              pwords "no head symbol found for" ++ [prettyTCM neu] ++ pwords ", so not inverting"+            fallback+          Just (ConsHead f') | f == f', canReduceToSelf -> do+            reportSDoc "tc.inj.use" 20 $ fsep $+              pwords "head symbol" ++ [prettyTCM f'] ++ pwords "can reduce to self, so not inverting"+            fallback                                     -- We can't invert in this case, since we can't                                     -- tell the difference between a solution that makes                                     -- the blocked term neutral and one that makes progress.@@ -298,9 +309,9 @@ invertFunction cmp blk (Inv f blkArgs hdMap) hd fallback err success = do     fTy <- defType <$> getConstInfo f     reportSDoc "tc.inj.use" 20 $ vcat-      [ text "inverting injective function" <?> hsep [prettyTCM f, text ":", prettyTCM fTy]-      , text "for" <?> pretty hd-      , nest 2 $ text "args =" <+> prettyList (map prettyTCM blkArgs)+      [ "inverting injective function" <?> hsep [prettyTCM f, ":", prettyTCM fTy]+      , "for" <?> pretty hd+      , nest 2 $ "args =" <+> prettyList (map prettyTCM blkArgs)       ]                         -- Clauses with unknown heads are also possible candidates     case fromMaybe [] $ Map.lookup hd hdMap <> Map.lookup UnknownHead hdMap of       [] -> err@@ -311,21 +322,21 @@           -- These are what dot patterns should be instantiated at           ms <- map unArg <$> newTelMeta tel           reportSDoc "tc.inj.invert" 20 $ vcat-            [ text "meta patterns" <+> prettyList (map prettyTCM ms)-            , text "  perm =" <+> text (show perm)-            , text "  tel  =" <+> prettyTCM tel-            , text "  ps   =" <+> prettyList (map (text . show) ps)+            [ "meta patterns" <+> prettyList (map prettyTCM ms)+            , "  perm =" <+> text (show perm)+            , "  tel  =" <+> prettyTCM tel+            , "  ps   =" <+> prettyList (map (text . show) ps)             ]           -- and this is the order the variables occur in the patterns           let msAux = permute (invertP __IMPOSSIBLE__ $ compactP perm) ms           let sub   = parallelS (reverse ms)           margs <- runReaderT (evalStateT (mapM metaElim ps) msAux) sub           reportSDoc "tc.inj.invert" 20 $ vcat-            [ text "inversion"+            [ "inversion"             , nest 2 $ vcat-              [ text "lhs  =" <+> prettyTCM margs-              , text "rhs  =" <+> prettyTCM blkArgs-              , text "type =" <+> prettyTCM fTy+              [ "lhs  =" <+> prettyTCM margs+              , "rhs  =" <+> prettyTCM blkArgs+              , "type =" <+> prettyTCM fTy               ]             ]           -- Since we do not care for the value of non-variant metas here,@@ -342,19 +353,19 @@           r <- runReduceM $ unfoldDefinitionStep False blk f blkArgs           case r of             YesReduction _ blk' -> do-              reportSDoc "tc.inj.invert.success" 20 $ hsep [text "Successful inversion of", prettyTCM f, text "at", pretty hd]+              reportSDoc "tc.inj.invert.success" 20 $ hsep ["Successful inversion of", prettyTCM f, "at", pretty hd]               KeepGoing <$ success blk'             NoReduction{}       -> do               reportSDoc "tc.inj.invert" 30 $ vcat-                [ text "aborting inversion;" <+> prettyTCM blk-                , text "does not reduce"+                [ "aborting inversion;" <+> prettyTCM blk+                , "does not reduce"                 ]               return Abort   where     maybeAbort m = do       (a, s) <- localTCStateSaving m       case a of-        KeepGoing -> put s+        KeepGoing -> putTC s         Abort     -> fallback      nextMeta = do@@ -374,7 +385,9 @@      metaPat (DotP _ v)       = dotP v     metaPat (VarP _ _)       = nextMeta+    metaPat (IApplyP{})      = nextMeta     metaPat (ConP c mt args) = Con c (fromConPatternInfo mt) . map Apply <$> metaArgs args+    metaPat (DefP o q args)  = Def q . map Apply <$> metaArgs args     metaPat (LitP l)         = return $ Lit l     metaPat ProjP{}          = __IMPOSSIBLE__ @@ -389,4 +402,3 @@     fallback  = return ()     err       = typeError (ShouldBePi t)     success _ = return ()-
src/full/Agda/TypeChecking/InstanceArguments.hs view
@@ -1,7 +1,12 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE NondecreasingIndentation #-} -module Agda.TypeChecking.InstanceArguments where+module Agda.TypeChecking.InstanceArguments+  ( findInstance+  , isInstanceConstraint+  , isConsideringInstance+  , postponeInstanceConstraints+  ) where  #if MIN_VERSION_base(4,11,0) import Prelude hiding ((<>))@@ -10,11 +15,16 @@ import Control.Applicative hiding (empty) import Control.Monad.Reader import Control.Monad.State+import qualified Data.IntSet as IntSet import qualified Data.Map as Map import qualified Data.Set as Set import qualified Data.List as List+import Data.Function (on) +import Agda.Interaction.Options (optOverlappingInstances)+ import Agda.Syntax.Common+import Agda.Syntax.Position import Agda.Syntax.Internal as I import Agda.Syntax.Scope.Base (isNameInScope) @@ -33,7 +43,11 @@ import {-# SOURCE #-} Agda.TypeChecking.MetaVars import {-# SOURCE #-} Agda.TypeChecking.Conversion -import Agda.Utils.Except ( MonadError(catchError, throwError) )+import qualified Agda.Benchmarking as Benchmark+import Agda.TypeChecking.Monad.Benchmark (billTo)++import Agda.Utils.Either+import Agda.Utils.Except import Agda.Utils.Lens import Agda.Utils.Maybe import Agda.Utils.Monad@@ -45,54 +59,68 @@ import Agda.Utils.Impossible  -- | Compute a list of instance candidates.---   'Nothing' if type is a meta, error if type is not eligible---   for instance search.-initialIFSCandidates :: Type -> TCM (Maybe [Candidate])-initialIFSCandidates t = do-  otn <- getOutputTypeName t+--   'Nothing' if target type or any context type is a meta, error if+--   type is not eligible for instance search.+initialInstanceCandidates :: Type -> TCM (Maybe [Candidate])+initialInstanceCandidates t = do+  (_ , otn) <- getOutputTypeName t   case otn of     NoOutputTypeName -> typeError $ GenericError $       "Instance search can only be used to find elements in a named type"-    OutputTypeNameNotYetKnown -> return Nothing-    OutputTypeVar    -> Just <$> getContextVars-    OutputTypeName n -> Just <$> do (++) <$> getContextVars <*> getScopeDefs n+    OutputTypeNameNotYetKnown -> do+      reportSDoc "tc.instance.cands" 30 $ "Instance type is not yet known. "+      return Nothing+    OutputTypeVisiblePi -> typeError $ GenericError $+      "Instance search cannot be used to find elements in an explicit function type"+    OutputTypeVar    -> do+      reportSDoc "tc.instance.cands" 30 $ "Instance type is a variable. "+      maybeRight <$> runExceptT getContextVars+    OutputTypeName n -> do+      reportSDoc "tc.instance.cands" 30 $ "Found instance type head: " <+> prettyTCM n+      runExceptT getContextVars >>= \case+        Left b -> return Nothing+        Right ctxVars -> Just . (ctxVars ++) <$> getScopeDefs n   where     -- get a list of variables with their type, relative to current context-    getContextVars :: TCM [Candidate]+    getContextVars :: ExceptT Blocked_ TCM [Candidate]     getContextVars = do       ctx <- getContext-      reportSDoc "tc.instance.cands" 40 $ hang (text "Getting candidates from context") 2 (inTopContext $ prettyTCM $ PrettyContext ctx)+      reportSDoc "tc.instance.cands" 40 $ hang "Getting candidates from context" 2 (inTopContext $ prettyTCM $ PrettyContext ctx)           -- Context variables with their types lifted to live in the full context       let varsAndRaisedTypes = [ (var i, raise (i + 1) t) | (i, t) <- zip [0..] ctx ]-          vars = [ Candidate x t ExplicitStayExplicit (isOverlappable info)-                 | (x, Dom info (_, t)) <- varsAndRaisedTypes+          vars = [ Candidate x t (isOverlappable info)+                 | (x, Dom{domInfo = info, unDom = (_, t)}) <- varsAndRaisedTypes                  , isInstance info-                 , not (unusableRelevance info)+                 , usableRelevance info+                 , usableQuantity info                  ]        -- {{}}-fields of variables are also candidates-      let cxtAndTypes = [ (x, t) | (x, Dom _ (_, t)) <- varsAndRaisedTypes ]+      let cxtAndTypes = [ (x, t) | (x, Dom{unDom = (_, t)}) <- varsAndRaisedTypes ]       fields <- concat <$> mapM instanceFields (reverse cxtAndTypes)       reportSDoc "tc.instance.fields" 30 $-        if null fields then text "no instance field candidates" else-          text "instance field candidates" $$ do+        if null fields then "no instance field candidates" else+          "instance field candidates" $$ do             nest 2 $ vcat-              [ sep [ (if overlap then text "overlap" else empty) <+> prettyTCM v <+> text ":"+              [ sep [ (if overlap then "overlap" else empty) <+> prettyTCM v <+> ":"                     , nest 2 $ prettyTCM t                     ]-              | Candidate v t _ overlap <- fields+              | Candidate v t overlap <- fields               ]        -- get let bindings-      env <- asks envLetBindings+      env <- asksTC envLetBindings       env <- mapM (getOpen . snd) $ Map.toList env-      let lets = [ Candidate v t ExplicitStayExplicit False-                 | (v, Dom info t) <- env+      let lets = [ Candidate v t False+                 | (v, Dom{domInfo = info, unDom = t}) <- env                  , isInstance info-                 , not (unusableRelevance info)+                 , usableRelevance info+                 , usableQuantity info                  ]       return $ vars ++ fields ++ lets +    etaExpand :: (MonadTCM m, MonadReduce m, HasConstInfo m)+              => Bool -> Type -> m (Maybe (QName, Args))     etaExpand etaOnce t =       isEtaRecordType t >>= \case         Nothing | etaOnce -> do@@ -107,20 +135,24 @@                 else return Nothing         r -> return r +    instanceFields :: (Term,Type) -> ExceptT Blocked_ TCM [Candidate]     instanceFields = instanceFields' True++    instanceFields' :: Bool -> (Term,Type) -> ExceptT Blocked_ TCM [Candidate]     instanceFields' etaOnce (v, t) =-      caseMaybeM (etaExpand etaOnce =<< reduce t) (return []) $ \ (r, pars) -> do+      ifBlockedType t (\m _ -> throwError $ Blocked m ()) $ \ _ t -> do+      caseMaybeM (etaExpand etaOnce t) (return []) $ \ (r, pars) -> do         (tel, args) <- forceEtaExpandRecord r pars v         let types = map unDom $ applySubst (parallelS $ reverse $ map unArg args) (flattenTel tel)         fmap concat $ forM (zip args types) $ \ (arg, t) ->-          ([ Candidate (unArg arg) t ExplicitStayExplicit (isOverlappable arg)+          ([ Candidate (unArg arg) t (isOverlappable arg)            | isInstance arg ] ++) <$>           instanceFields' False (unArg arg, t)      getScopeDefs :: QName -> TCM [Candidate]     getScopeDefs n = do       instanceDefs <- getInstanceDefs-      rel          <- asks envRelevance+      rel          <- asksTC envRelevance       let qs = maybe [] Set.toList $ Map.lookup n instanceDefs       catMaybes <$> mapM (candidate rel) qs @@ -147,13 +179,13 @@                -- Ulf, 2014-08-20: constructors are always instances.                Constructor{ conSrcCon = c }       -> Con c ConOSystem []                _                                  -> Def q $ map Apply args-          return $ Just $ Candidate v t ExplicitToInstance False+          return $ Just $ Candidate v t False       where         -- unbound constant throws an internal error         handle (TypeError _ (Closure {clValue = InternalError _})) = return Nothing         handle err                                                 = throwError err --- | @findInScope m (v,a)s@ tries to instantiate on of the types @a@s+-- | @findInstance m (v,a)s@ tries to instantiate on of the types @a@s --   of the candidate terms @v@s to the type @t@ of the metavariable @m@. --   If successful, meta @m@ is solved with the instantiation of @v@. --   If unsuccessful, the constraint is regenerated, with possibly reduced@@ -161,96 +193,97 @@ --   The list of candidates is equal to @Nothing@ when the type of the meta --   wasn't known when the constraint was generated. In that case, try to find --   its type again.-findInScope :: MetaId -> Maybe [Candidate] -> TCM ()-findInScope m Nothing = do+findInstance :: MetaId -> Maybe [Candidate] -> TCM ()+findInstance m Nothing = do   -- Andreas, 2015-02-07: New metas should be created with range of the   -- current instance meta, thus, we set the range.   mv <- lookupMeta m   setCurrentRange mv $ do-    reportSLn "tc.instance" 20 $ "The type of the FindInScope constraint isn't known, trying to find it again."+    reportSLn "tc.instance" 20 $ "The type of the FindInstance constraint isn't known, trying to find it again."     t <- instantiate =<< getMetaTypeInContext m-    reportSLn "tc.instance" 70 $ "findInScope 1: t: " ++ prettyShow t+    reportSLn "tc.instance" 70 $ "findInstance 1: t: " ++ prettyShow t      -- Issue #2577: If the target is a function type the arguments are     -- potential candidates, so we add them to the context to make-    -- initialIFSCandidates pick them up.-    TelV tel t <- telView t-    cands <- addContext tel $ initialIFSCandidates t+    -- initialInstanceCandidates pick them up.+    TelV tel t <- telViewUpTo' (-1) notVisible t+    cands <- addContext tel $ initialInstanceCandidates t     case cands of       Nothing -> do         reportSLn "tc.instance" 20 "Can't figure out target of instance goal. Postponing constraint."-        addConstraint $ FindInScope m Nothing Nothing-      Just {} -> findInScope m cands+        addConstraint $ FindInstance m Nothing Nothing+      Just {} -> findInstance m cands -findInScope m (Just cands) =-  whenJustM (findInScope' m cands) $ (\ (cands, b) -> addConstraint $ FindInScope m b $ Just cands)+findInstance m (Just cands) =+  whenJustM (findInstance' m cands) $ (\ (cands, b) -> addConstraint $ FindInstance m b $ Just cands)  -- | Result says whether we need to add constraint, and if so, the set of --   remaining candidates and an eventual blocking metavariable.-findInScope' :: MetaId -> [Candidate] -> TCM (Maybe ([Candidate], Maybe MetaId))-findInScope' m cands = ifM (isFrozen m) (do+findInstance' :: MetaId -> [Candidate] -> TCM (Maybe ([Candidate], Maybe MetaId))+findInstance' m cands = ifM (isFrozen m) (do     reportSLn "tc.instance" 20 "Refusing to solve frozen instance meta."     return (Just (cands, Nothing))) $ do-  -- Andreas, 2013-12-28 issue 1003:-  -- If instance meta is already solved, simply discard the constraint.-  -- Ulf, 2016-12-06 issue 2325: But only if *fully* instantiated.-  ifM (isFullyInstantiatedMeta m) (Nothing <$ reportSLn "tc.instance" 20 "Instance meta already solved.") $ do-    -- Andreas, 2015-02-07: New metas should be created with range of the-    -- current instance meta, thus, we set the range.-    mv <- lookupMeta m-    setCurrentRange mv $ do+  ifM isConsideringInstance (do+    reportSLn "tc.instance" 20 "Postponing possibly recursive instance search."+    return $ Just (cands, Nothing)) $ billTo [Benchmark.Typing, Benchmark.InstanceSearch] $ do+  -- Andreas, 2015-02-07: New metas should be created with range of the+  -- current instance meta, thus, we set the range.+  mv <- lookupMeta m+  setCurrentRange mv $ do       reportSLn "tc.instance" 15 $-        "findInScope 2: constraint: " ++ prettyShow m ++ "; candidates left: " ++ show (length cands)+        "findInstance 2: constraint: " ++ prettyShow m ++ "; candidates left: " ++ show (length cands)       reportSDoc "tc.instance" 60 $ nest 2 $ vcat-        [ sep [ (if overlap then text "overlap" else empty) <+> prettyTCM v <+> text ":"-              , nest 2 $ prettyTCM t ] | Candidate v t _ overlap <- cands ]-      reportSDoc "tc.instance" 70 $ text "raw" $$ do+        [ sep [ (if overlap then "overlap" else empty) <+> prettyTCM v <+> ":"+              , nest 2 $ prettyTCM t ] | Candidate v t overlap <- cands ]+      reportSDoc "tc.instance" 70 $ "raw" $$ do        nest 2 $ vcat-        [ sep [ (if overlap then text "overlap" else empty) <+> pretty v <+> text ":"-              , nest 2 $ pretty t ] | Candidate v t _ overlap <- cands ]+        [ sep [ (if overlap then "overlap" else empty) <+> pretty v <+> ":"+              , nest 2 $ pretty t ] | Candidate v t overlap <- cands ]       t <- normalise =<< getMetaTypeInContext m-      reportSLn "tc.instance" 70 $ "findInScope 2: t: " ++ prettyShow t+      reportSLn "tc.instance" 70 $ "findInstance 2: t: " ++ prettyShow t       insidePi t $ \ t -> do-      reportSDoc "tc.instance" 15 $ text "findInScope 3: t =" <+> prettyTCM t-      reportSLn "tc.instance" 70 $ "findInScope 3: t: " ++ prettyShow t--      -- If one of the arguments of the typeclass is a meta which is not rigidly-      -- constrained, then don’t do anything because it may loop.-      let abortNonRigid m = do-            reportSLn "tc.instance" 15 $-              "aborting due to non-rigidly constrained meta " ++ show m-            return $ Just (cands, Just m)-      ifJustM (areThereNonRigidMetaArguments (unEl t)) abortNonRigid $ {-else-} do+      reportSDoc "tc.instance" 15 $ "findInstance 3: t =" <+> prettyTCM t+      reportSLn "tc.instance" 70 $ "findInstance 3: t: " ++ prettyShow t -        mcands <- checkCandidates m t cands-        debugConstraints-        case mcands of+      mcands <- checkCandidates m t cands+      debugConstraints+      case mcands of -          Just [] -> do-            reportSDoc "tc.instance" 15 $-              text "findInScope 5: not a single candidate found..."-            typeError $ IFSNoCandidateInScope t+        Just ([(_, err)], []) -> do+          reportSDoc "tc.instance" 15 $+            "findInstance 5: the only viable candidate failed..."+          throwError err+        Just (errs, []) -> do+          if null errs then reportSDoc "tc.instance" 15 $ "findInstance 5: no viable candidate found..."+                       else reportSDoc "tc.instance" 15 $ "findInstance 5: all viable candidates failed..."+          -- #3676: Sort the candidates based on the size of the range for the errors and+          --        set the range of the full error to the range of the most precise candidate+          --        error.+          let sortedErrs = List.sortBy (compare `on` precision) errs+                where precision (_, err) = maybe infinity iLength $ rangeToInterval $ getRange err+                      infinity = 1000000000+          setCurrentRange (take 1 $ map snd sortedErrs) $+            typeError $ InstanceNoCandidate t [ (candidateTerm c, err) | (c, err) <- sortedErrs ] -          Just [Candidate term t' _ _] -> do-            reportSDoc "tc.instance" 15 $ vcat-              [ text "findInScope 5: solved by instance search using the only candidate"-              , nest 2 $ prettyTCM term-              , text "of type " <+> prettyTCM t'-              , text "for type" <+> prettyTCM t-              ]+        Just (_, [Candidate term t' _]) -> do+          reportSDoc "tc.instance" 15 $ vcat+            [ "findInstance 5: solved by instance search using the only candidate"+            , nest 2 $ prettyTCM term+            , "of type " <+> prettyTCM t'+            , "for type" <+> prettyTCM t+            ] -            -- If we actually solved the constraints we should wake up any held-            -- instance constraints, to make sure we don't forget about them.-            wakeConstraints (return . const True)-            solveAwakeConstraints' False-            return Nothing  -- We’re done+          -- If we actually solved the constraints we should wake up any held+          -- instance constraints, to make sure we don't forget about them.+          wakeupInstanceConstraints+          return Nothing  -- We’re done -          _ -> do-            let cs = fromMaybe cands mcands -- keep the current candidates if Nothing-            reportSDoc "tc.instance" 15 $-              text ("findInScope 5: refined candidates: ") <+>-              prettyTCM (List.map candidateTerm cs)-            return (Just (cs, Nothing))+        _ -> do+          let cs = maybe cands snd mcands -- keep the current candidates if Nothing+          reportSDoc "tc.instance" 15 $+            text ("findInstance 5: refined candidates: ") <+>+            prettyTCM (List.map candidateTerm cs)+          return (Just (cs, Nothing))  -- | Precondition: type is spine reduced and ends in a Def or a Var. insidePi :: Type -> (Type -> TCM a) -> TCM a@@ -266,120 +299,20 @@     Level{}    -> __IMPOSSIBLE__     MetaV{}    -> __IMPOSSIBLE__     DontCare{} -> __IMPOSSIBLE__---- | A meta _M is rigidly constrained if there is a constraint _M us == D vs,--- for inert D. Such metas can safely be instantiated by recursive instance--- search, since the constraint limits the solution space.-rigidlyConstrainedMetas :: TCM [MetaId]-rigidlyConstrainedMetas = do-  cs <- (++) <$> use stSleepingConstraints <*> use stAwakeConstraints-  catMaybes <$> mapM rigidMetas cs-  where-    isRigid v = do-      bv <- reduceB v-      case bv of-        Blocked{}    -> return False-        NotBlocked _ v -> case v of-          MetaV{}    -> return False-          Def f _    -> return True-          Con{}      -> return True-          Lit{}      -> return True-          Var{}      -> return True-          Sort{}     -> return True-          Pi{}       -> return True-          Level{}    -> return False-          DontCare{} -> return False-          Lam{}      -> __IMPOSSIBLE__-    rigidMetas c =-      case clValue $ theConstraint c of-        ValueCmp _ _ u v ->-          case (u, v) of-            (MetaV m us, _) | isJust (allApplyElims us) -> ifM (isRigid v) (return $ Just m) (return Nothing)-            (_, MetaV m vs) | isJust (allApplyElims vs) -> ifM (isRigid u) (return $ Just m) (return Nothing)-            _              -> return Nothing-        ElimCmp{}     -> return Nothing-        TypeCmp{}     -> return Nothing-        TelCmp{}      -> return Nothing-        SortCmp{}     -> return Nothing-        LevelCmp{}    -> return Nothing-        UnBlock{}     -> return Nothing-        Guarded{}     -> return Nothing  -- don't look inside Guarded, since the inner constraint might not fire-        IsEmpty{}     -> return Nothing-        CheckSizeLtSat{} -> return Nothing-        FindInScope{} -> return Nothing-        CheckFunDef{} -> return Nothing-        HasBiggerSort{} -> return Nothing-        HasPTSRule{}  -> return Nothing--isRigid :: MetaId -> TCM Bool-isRigid i = do-  rigid <- rigidlyConstrainedMetas-  return (elem i rigid)---- | Returns True if one of the arguments of @t@ is a meta which isn’t rigidly---   constrained. Note that level metas are never considered rigidly constrained---   (#1865).-areThereNonRigidMetaArguments :: Term -> TCM (Maybe MetaId)-areThereNonRigidMetaArguments t = case t of-    Def n args -> do-      TelV tel _ <- telView . defType =<< getConstInfo n-      let varOccs EmptyTel           = []-          varOccs (ExtendTel a btel)-            | getRelevance a == Irrelevant = WeaklyRigid : varOccs tel  -- #2171: ignore irrelevant arguments-            | otherwise                    = occurrence 0 tel : varOccs tel-            where tel = unAbs btel-          rigid StronglyRigid = True-          rigid Unguarded     = True-          rigid WeaklyRigid   = True-          rigid _             = False-      reportSDoc "tc.instance.rigid" 70 $ text "class args:" <+> prettyTCM tel $$-                                          nest 2 (text $ "used: " ++ show (varOccs tel))-      areThereNonRigidMetaArgs [ arg | (o, arg) <- zip (varOccs tel) args, not $ rigid o ]-    Var n args -> return Nothing  -- TODO check what’s the right thing to do, doing the same-                                  -- thing as above makes some examples fail-    Sort{}   -> __IMPOSSIBLE__-    Con{}    -> __IMPOSSIBLE__-    Lam{}    -> __IMPOSSIBLE__-    Lit{}    -> __IMPOSSIBLE__-    Level{}  -> __IMPOSSIBLE__-    MetaV{}  -> __IMPOSSIBLE__-    Pi{}     -> __IMPOSSIBLE__-    DontCare{} -> __IMPOSSIBLE__-  where-    areThereNonRigidMetaArgs :: Elims -> TCM (Maybe MetaId)-    areThereNonRigidMetaArgs []             = return Nothing-    areThereNonRigidMetaArgs (Proj{}  : xs) = areThereNonRigidMetaArgs xs-    areThereNonRigidMetaArgs (Apply x : xs) = do-      ifJustM (isNonRigidMeta $ unArg x) (return . Just) (areThereNonRigidMetaArgs xs)--    isNonRigidMeta :: Term -> TCM (Maybe MetaId)-    isNonRigidMeta v =-      case v of-        Def _ es  -> areThereNonRigidMetaArgs es-        Var _ es  -> areThereNonRigidMetaArgs es-        Con _ _ vs-> areThereNonRigidMetaArgs vs-        MetaV i _ -> ifM (isRigid i) (return Nothing) $ do-          -- Ignore unconstrained level and size metas (#1865)-          mlvl <- getBuiltinDefName builtinLevel-          (msz, mszlt) <- getBuiltinSize-          let ok = catMaybes [ mlvl, msz ]  -- , mszlt ]  -- ?! Andreas, 2016-12-22-            -- @Ulf: are SIZELT metas excluded on purpose?-            -- How to you know the level/size meta is unconstrained?-          o <- getOutputTypeName . jMetaType . mvJudgement =<< lookupMeta i-          case o of-            OutputTypeName l | elem l ok -> return Nothing-            _ -> return $ Just i-        Lam _ t   -> isNonRigidMeta (unAbs t)-        _         -> return Nothing+    Dummy s    -> __IMPOSSIBLE_VERBOSE__ s  -- | Apply the computation to every argument in turn by reseting the state every --   time. Return the list of the arguments giving the result True. -- --   If the resulting list contains exactly one element, then the state is the --   same as the one obtained after running the corresponding computation. In---   all the other cases, the state is reseted.-filterResetingState :: MetaId -> [Candidate] -> (Candidate -> TCM YesNoMaybe) -> TCM [Candidate]-filterResetingState m cands f = disableDestructiveUpdate $ do+--   all the other cases, the state is reset.+--+--   Also returns the candidates that pass type checking but fails constraints,+--   so that the error messages can be reported if there are no successful+--   candidates.+filterResetingState :: MetaId -> [Candidate] -> (Candidate -> TCM YesNoMaybe) -> TCM ([(Candidate, TCErr)], [Candidate])+filterResetingState m cands f = do   ctxArgs  <- getContextArgs   let ctxElims = map Apply ctxArgs       tryC c = do@@ -395,20 +328,21 @@     []      -> return ()    let result' = [ (c, v, a, s) | (c, ((r, v, a), s)) <- result, not (isNo r) ]-      noMaybes = null [ Maybe | (_, ((Maybe, _, _), _)) <- result ]-            -- It's not safe to compare maybes for equality because they might-            -- not have instantiated at all.-  result <- if noMaybes then dropSameCandidates m result' else return result'-  case result of-    [(c, _, _, s)] -> [c] <$ put s-    _              -> return [ c | (c, _, _, _) <- result ]+  result'' <- dropSameCandidates m result'+  case result'' of+    [(c, _, _, s)] -> ([], [c]) <$ putTC s+    _              -> do+      let bad  = [ (c, err) | (c, ((NoBecause err, _, _), _)) <- result ]+          good = [ c | (c, _, _, _) <- result'' ]+      return (bad, good)  -- Drop all candidates which are judgmentally equal to the first one. -- This is sufficient to reduce the list to a singleton should all be equal. dropSameCandidates :: MetaId -> [(Candidate, Term, Type, a)] -> TCM [(Candidate, Term, Type, a)] dropSameCandidates m cands0 = verboseBracket "tc.instance" 30 "dropSameCandidates" $ do-  metas <- Set.fromList . Map.keys <$> getMetaStore-  let freshMetas x = not $ Set.null $ Set.difference (Set.fromList $ allMetas x) metas+  metas <- getMetaVariableSet+  -- Does `it` have any metas in the initial meta variable store?+  let freshMetas = any ((`IntSet.notMember` metas) . metaId) . allMetas    -- Take overlappable candidates into account   let cands =@@ -417,9 +351,9 @@           _              -> cands0  -- otherwise require equality    reportSDoc "tc.instance" 50 $ vcat-    [ text "valid candidates:"-    , nest 2 $ vcat [ if freshMetas (v, a) then text "(redacted)" else-                      sep [ prettyTCM v <+> text ":", nest 2 $ prettyTCM a ]+    [ "valid candidates:"+    , nest 2 $ vcat [ if freshMetas (v, a) then "(redacted)" else+                      sep [ prettyTCM v <+> ":", nest 2 $ prettyTCM a ]                     | (_, v, a, _) <- cands ] ]   rel <- getMetaRelevance <$> lookupMeta m   case cands of@@ -427,6 +361,8 @@     cvd : _ | isIrrelevant rel -> do       reportSLn "tc.instance" 30 "Meta is irrelevant so any candidate will do."       return [cvd]+    (_, MetaV m' _, _, _) : _ | m == m' ->  -- We didn't instantiate, so can't compare+      return cands     cvd@(_, v, a, _) : vas -> do         if freshMetas (v, a)           then return (cvd : vas)@@ -436,55 +372,57 @@             | freshMetas (v', a') = return False  -- If there are fresh metas we can't compare             | otherwise           =           verboseBracket "tc.instance" 30 "comparingCandidates" $ do-          reportSDoc "tc.instance" 30 $ sep [ prettyTCM v <+> text "==", nest 2 $ prettyTCM v' ]+          reportSDoc "tc.instance" 30 $ sep [ prettyTCM v <+> "==", nest 2 $ prettyTCM v' ]           localTCState $ dontAssignMetas $ ifNoConstraints_ (equalType a a' >> equalTerm a v v')                              {- then -} (return True)                              {- else -} (\ _ -> return False)                              `catchError` (\ _ -> return False) -data YesNoMaybe = Yes | No | Maybe | HellNo TCErr+data YesNoMaybe = Yes | No | NoBecause TCErr | Maybe | HellNo TCErr   deriving (Show)  isNo :: YesNoMaybe -> Bool-isNo No = True-isNo _  = False+isNo No          = True+isNo NoBecause{} = True+isNo HellNo{}    = True+isNo _           = False  -- | Given a meta @m@ of type @t@ and a list of candidates @cands@,--- @checkCandidates m t cands@ returns a refined list of valid candidates.-checkCandidates :: MetaId -> Type -> [Candidate] -> TCM (Maybe [Candidate])-checkCandidates m t cands = disableDestructiveUpdate $+-- @checkCandidates m t cands@ returns a refined list of valid candidates and+-- candidates that failed some constraints.+checkCandidates :: MetaId -> Type -> [Candidate] -> TCM (Maybe ([(Candidate, TCErr)], [Candidate]))+checkCandidates m t cands =   verboseBracket "tc.instance.candidates" 20 ("checkCandidates " ++ prettyShow m) $-  ifM (anyMetaTypes cands) (return Nothing) $-  holdConstraints (\ _ -> isIFSConstraint . clValue . theConstraint) $ Just <$> do-    reportSDoc "tc.instance.candidates" 20 $ nest 2 $ text "target:" <+> prettyTCM t+  ifM (anyMetaTypes cands) (return Nothing) $ Just <$> do+    reportSDoc "tc.instance.candidates" 20 $ nest 2 $ "target:" <+> prettyTCM t     reportSDoc "tc.instance.candidates" 20 $ nest 2 $ vcat-      [ text "candidates"-      , vcat [ text "-" <+> (if overlap then text "overlap" else empty) <+> prettyTCM v <+> text ":" <+> prettyTCM t-             | Candidate v t _ overlap <- cands ] ]+      [ "candidates"+      , vcat [ "-" <+> (if overlap then "overlap" else empty) <+> prettyTCM v <+> ":" <+> prettyTCM t+             | Candidate v t overlap <- cands ] ]     cands' <- filterResetingState m cands (checkCandidateForMeta m t)     reportSDoc "tc.instance.candidates" 20 $ nest 2 $ vcat-      [ text "valid candidates"-      , vcat [ text "-" <+> (if overlap then text "overlap" else empty) <+> prettyTCM v <+> text ":" <+> prettyTCM t-             | Candidate v t _ overlap <- cands' ] ]+      [ "valid candidates"+      , vcat [ "-" <+> (if overlap then "overlap" else empty) <+> prettyTCM v <+> ":" <+> prettyTCM t+             | Candidate v t overlap <- snd cands' ] ]     return cands'   where     anyMetaTypes :: [Candidate] -> TCM Bool     anyMetaTypes [] = return False-    anyMetaTypes (Candidate _ a _ _ : cands) = do+    anyMetaTypes (Candidate _ a _ : cands) = do       a <- instantiate a       case unEl a of         MetaV{} -> return True         _       -> anyMetaTypes cands      checkDepth :: Term -> Type -> TCM YesNoMaybe -> TCM YesNoMaybe-    checkDepth c a k = locally eInstanceDepth succ $ do-      d        <- view eInstanceDepth+    checkDepth c a k = locallyTC eInstanceDepth succ $ do+      d        <- viewTC eInstanceDepth       maxDepth <- maxInstanceSearchDepth       when (d > maxDepth) $ typeError $ InstanceSearchDepthExhausted c a maxDepth       k      checkCandidateForMeta :: MetaId -> Type -> Candidate -> TCM YesNoMaybe-    checkCandidateForMeta m t (Candidate term t' eti _) = checkDepth term t' $ do+    checkCandidateForMeta m t (Candidate term t' _) = checkDepth term t' $ do       -- Andreas, 2015-02-07: New metas should be created with range of the       -- current instance meta, thus, we set the range.       mv <- lookupMeta m@@ -494,61 +432,78 @@           liftTCM $ runCandidateCheck $ do             reportSLn "tc.instance" 70 $ "  t: " ++ prettyShow t ++ "\n  t':" ++ prettyShow t' ++ "\n  term: " ++ prettyShow term ++ "."             reportSDoc "tc.instance" 20 $ vcat-              [ text "checkCandidateForMeta"-              , text "t    =" <+> prettyTCM t-              , text "t'   =" <+> prettyTCM t'-              , text "term =" <+> prettyTCM term+              [ "checkCandidateForMeta"+              , "t    =" <+> prettyTCM t+              , "t'   =" <+> prettyTCM t'+              , "term =" <+> prettyTCM term               ]              -- Apply hidden and instance arguments (recursive inst. search!).-            (args, t'') <- implicitArgs (-1) (\h -> notVisible h || eti == ExplicitToInstance) t'+            (args, t'') <- implicitArgs (-1) (\h -> notVisible h) t'              reportSDoc "tc.instance" 20 $-              text "instance search: checking" <+> prettyTCM t''-              <+> text "<=" <+> prettyTCM t+              "instance search: checking" <+> prettyTCM t''+              <+> "<=" <+> prettyTCM t             reportSDoc "tc.instance" 70 $ vcat-              [ text "instance search: checking (raw)"+              [ "instance search: checking (raw)"               , nest 4 $ pretty t''-              , nest 2 $ text "<="+              , nest 2 $ "<="               , nest 4 $ pretty t               ]             v <- (`applyDroppingParameters` args) =<< reduce term             reportSDoc "tc.instance" 15 $ vcat-              [ text "instance search: attempting"-              , nest 2 $ prettyTCM m <+> text ":=" <+> prettyTCM v+              [ "instance search: attempting"+              , nest 2 $ prettyTCM m <+> ":=" <+> prettyTCM v               ]             reportSDoc "tc.instance" 70 $ nest 2 $-              text "candidate v = " <+> pretty v+              "candidate v = " <+> pretty v             -- if constraints remain, we abort, but keep the candidate             -- Jesper, 05-12-2014: When we abort, we should add a constraint to             -- instantiate the meta at a later time (see issue 1377).             ctxElims <- map Apply <$> getContextArgs             guardConstraint (ValueCmp CmpEq t'' (MetaV m ctxElims) v) $ leqType t'' t             -- make a pass over constraints, to detect cases where some are made-            -- unsolvable by the assignment, but don't do this for FindInScope's-            -- to prevent loops. We currently also ignore UnBlock constraints-            -- to be on the safe side.+            -- unsolvable by the assignment, but don't do this for FindInstance's+            -- to prevent loops.             debugConstraints-            solveAwakeConstraints' True -            verboseS "tc.instance" 15 $ do-              sol <- instantiateFull (MetaV m ctxElims)-              case sol of-                MetaV m' _ | m == m' ->-                  reportSDoc "tc.instance" 15 $-                    sep [ text "instance search: maybe solution for" <+> prettyTCM m <> text ":"-                        , nest 2 $ prettyTCM v ]-                _ ->-                  reportSDoc "tc.instance" 15 $-                    sep [ text "instance search: found solution for" <+> prettyTCM m <> text ":"-                        , nest 2 $ prettyTCM sol ]+            let debugSolution = verboseS "tc.instance" 15 $ do+                  sol <- instantiateFull (MetaV m ctxElims)+                  case sol of+                    MetaV m' _ | m == m' ->+                      reportSDoc "tc.instance" 15 $+                        sep [ "instance search: maybe solution for" <+> prettyTCM m <> ":"+                            , nest 2 $ prettyTCM v ]+                    _ ->+                      reportSDoc "tc.instance" 15 $+                        sep [ "instance search: found solution for" <+> prettyTCM m <> ":"+                            , nest 2 $ prettyTCM sol ]++            do solveAwakeConstraints' True+               Yes <$ debugSolution+              `catchError` (return . NoBecause)+         where           runCandidateCheck check =             flip catchError handle $-            ifNoConstraints_ check-              (return Yes)-              (\ _ -> Maybe <$ reportSLn "tc.instance" 50 "assignment inconclusive")+            nowConsideringInstance $+            ifNoConstraints check+              (\ r -> case r of+                  Yes           -> r <$ debugSuccess+                  NoBecause why -> r <$ debugConstraintFail why+                  _             -> __IMPOSSIBLE__+              )+              (\ _ r -> case r of+                  Yes           -> Maybe <$ debugInconclusive+                  NoBecause why -> r <$ debugConstraintFail why+                  _             -> __IMPOSSIBLE__+              ) +          debugSuccess            = reportSLn "tc.instance" 50 "assignment successful" :: TCM ()+          debugInconclusive       = reportSLn "tc.instance" 50 "assignment inconclusive" :: TCM ()+          debugConstraintFail why = reportSDoc "tc.instance" 50 $ "candidate failed constraints:" <+> prettyTCM why+          debugTypeFail err       = reportSDoc "tc.instance" 50 $ "candidate failed type check:" <+> prettyTCM err+           hardFailure :: TCErr -> Bool           hardFailure (TypeError _ err) =             case clValue err of@@ -559,15 +514,31 @@           handle :: TCErr -> TCM YesNoMaybe           handle err             | hardFailure err = return $ HellNo err-            | otherwise       = do-              reportSDoc "tc.instance" 50 $-                text "assignment failed:" <+> prettyTCM err-              return No+            | otherwise       = No <$ debugTypeFail err -isIFSConstraint :: Constraint -> Bool-isIFSConstraint FindInScope{} = True-isIFSConstraint UnBlock{}     = True -- otherwise test/fail/Issue723 loops-isIFSConstraint _             = False+isInstanceConstraint :: Constraint -> Bool+isInstanceConstraint FindInstance{} = True+isInstanceConstraint _              = False++isConsideringInstance :: (ReadTCState m, HasOptions m) => m Bool+isConsideringInstance =+  and2M ((^. stConsideringInstance) <$> getTCState)+        (not . optOverlappingInstances <$> pragmaOptions)++nowConsideringInstance :: (MonadTCState m) => m a -> m a+nowConsideringInstance = locallyTCState stConsideringInstance $ const True++wakeupInstanceConstraints :: TCM ()+wakeupInstanceConstraints =+  unlessM isConsideringInstance $ do+    wakeConstraints (return . isInstance)+    solveSomeAwakeConstraints isInstance False+  where+    isInstance = isInstanceConstraint . clValue . theConstraint++postponeInstanceConstraints :: TCM a -> TCM a+postponeInstanceConstraints m =+  nowConsideringInstance m <* wakeupInstanceConstraints  -- | To preserve the invariant that a constructor is not applied to its --   parameter arguments, we explicitly check whether function term
src/full/Agda/TypeChecking/Irrelevance.hs view
@@ -1,8 +1,77 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE UndecidableInstances #-} -{-| Irrelevant function types.+{-| Compile-time irrelevance.++In type theory with compile-time irrelevance à la Pfenning (LiCS 2001),+variables in the context are annotated with relevance attributes.+@@+  Γ = r₁x₁:A₁, ..., rⱼxⱼ:Aⱼ+@@+To handle irrelevant projections, we also record the current relevance+attribute in the judgement.  For instance, this attribute is equal to+to 'Irrelevant' if we are in an irrelevant position, like an+irrelevant argument.+@@+  Γ ⊢r t : A+@@+Only relevant variables can be used:+@@++  (Relevant x : A) ∈ Γ+  --------------------+  Γ  ⊢r  x  :  A+@@+Irrelevant global declarations can only be used if @r = Irrelevant@.++When we enter a @r'@-relevant function argument, we compose the @r@ with @r'@+and (left-)divide the attributes in the context by @r'@.+@@+  Γ  ⊢r  t  :  (r' x : A) → B      r' \ Γ  ⊢(r'·r)  u  :  A+  ---------------------------------------------------------+  Γ  ⊢r  t u  :  B[u/x]+@@+No surprises for abstraction:+@@++  Γ, (r' x : A)  ⊢r  :  B+  -----------------------------+  Γ  ⊢r  λxt  :  (r' x : A) → B+@@++This is different for runtime irrelevance (erasure) which is ``flat'',+meaning that once one is in an irrelevant context, all new assumptions will+be usable, since they are turned relevant once entering the context.+See Conor McBride (WadlerFest 2016), for a type system in this spirit:++We use such a rule for runtime-irrelevance:+@@+  Γ, (q \ q') x : A  ⊢q  t  :  B+  ------------------------------+  Γ  ⊢q  λxt  :  (q' x : A) → B+@@++Conor's system is however set up differently, with a very different+variable rule:++@@++  (q x : A) ∈ Γ+  --------------+  Γ  ⊢q  x  :  A++  Γ, (q·p) x : A  ⊢q  t  :  B+  -----------------------------+  Γ  ⊢q  λxt  :  (p x : A) → B++  Γ  ⊢q  t  :  (p x : A) → B       Γ'  ⊢qp  u  :  A+  -------------------------------------------------+  Γ + Γ'  ⊢q  t u  :  B[u/x]+@@++ -}+ module Agda.TypeChecking.Irrelevance where  import Control.Arrow (first, second)@@ -17,8 +86,11 @@  import Agda.TypeChecking.Monad import Agda.TypeChecking.Pretty+import Agda.TypeChecking.Reduce import Agda.TypeChecking.Substitute.Class +import Agda.Utils.Function+import Agda.Utils.Lens import Agda.Utils.Monad  #include "undefined.h"@@ -34,16 +106,6 @@ hideAndRelParams :: Dom a -> Dom a hideAndRelParams = hideOrKeepInstance . mapRelevance nonStrictToIrr --- | Used to modify context when going into a @rel@ argument.-inverseApplyRelevance :: Relevance -> Dom a -> Dom a-inverseApplyRelevance rel = mapRelevance (rel `inverseComposeRelevance`)---- | Compose two relevance flags.---   This function is used to update the relevance information---   on pattern variables @a@ after a match against something @rel@.-applyRelevance :: Relevance -> Dom a -> Dom a-applyRelevance rel = mapRelevance (rel `composeRelevance`)- -- * Operations on 'Context'.  -- | Modify the context whenever going from the l.h.s. (term side)@@ -56,29 +118,129 @@ -- | Internal workhorse, expects value of --experimental-irrelevance flag --   as argument. workOnTypes' :: Bool -> TCM a -> TCM a-workOnTypes' experimental =-  modifyContext (map $ mapRelevance f) .-  local (\ e -> e { envWorkingOnTypes = True })+workOnTypes' experimental+  = modifyContext (map $ mapRelevance f)+  . applyQuantityToContext Quantity0+  . localTC (\ e -> e { envWorkingOnTypes = True })   where-    f | experimental = irrToNonStrict . nonStrictToRel-      | otherwise    = nonStrictToRel+    f | experimental = irrToNonStrict+      | otherwise    = id  -- | (Conditionally) wake up irrelevant variables and make them relevant. --   For instance, --   in an irrelevant function argument otherwise irrelevant variables --   may be used, so they are awoken before type checking the argument.-applyRelevanceToContext :: (MonadTCM tcm) => Relevance -> tcm a -> tcm a-applyRelevanceToContext rel =-  case rel of+--+--   Also allow the use of irrelevant definitions.+applyRelevanceToContext :: (MonadTCEnv tcm, LensRelevance r) => r -> tcm a -> tcm a+applyRelevanceToContext thing =+  case getRelevance thing of     Relevant -> id-    _        -> local $ \ e -> e-      { envContext     = map                       (inverseApplyRelevance rel) (envContext e)-      , envLetBindings = (Map.map . fmap . second) (inverseApplyRelevance rel) (envLetBindings e)-                                                  -- enable local  irr. defs-      , envRelevance   = composeRelevance rel (envRelevance e)-                                                  -- enable global irr. defs-      }+    rel      -> applyRelevanceToContextOnly   rel+              . applyRelevanceToJudgementOnly rel +-- | (Conditionally) wake up irrelevant variables and make them relevant.+--   For instance,+--   in an irrelevant function argument otherwise irrelevant variables+--   may be used, so they are awoken before type checking the argument.+--+--   Precondition: @Relevance /= Relevant@+applyRelevanceToContextOnly :: (MonadTCEnv tcm) => Relevance -> tcm a -> tcm a+applyRelevanceToContextOnly rel = localTC+  $ over eContext     (map $ inverseApplyRelevance rel)+  . over eLetBindings (Map.map . fmap . second $ inverseApplyRelevance rel)++-- | Apply relevance @rel@ the the relevance annotation of the (typing/equality)+--   judgement.  This is part of the work done when going into a @rel@-context.+--+--   Precondition: @Relevance /= Relevant@+applyRelevanceToJudgementOnly :: (MonadTCEnv tcm) => Relevance -> tcm a -> tcm a+applyRelevanceToJudgementOnly = localTC . over eRelevance . composeRelevance++-- | Like 'applyRelevanceToContext', but only act on context if+--   @--irrelevant-projections@.+--   See issue #2170.+applyRelevanceToContextFunBody :: (MonadTCM tcm, LensRelevance r) => r -> tcm a -> tcm a+applyRelevanceToContextFunBody thing cont =+  case getRelevance thing of+    Relevant -> cont+    rel -> applyWhenM (optIrrelevantProjections <$> pragmaOptions)+      (applyRelevanceToContextOnly rel) $    -- enable local irr. defs only when option+      applyRelevanceToJudgementOnly rel cont -- enable global irr. defs alway++-- | (Conditionally) wake up erased variables and make them unrestricted.+--   For instance,+--   in an erased function argument otherwise erased variables+--   may be used, so they are awoken before type checking the argument.+--+--   Also allow the use of erased definitions.+applyQuantityToContext :: (MonadTCEnv tcm, LensQuantity q) => q -> tcm a -> tcm a+applyQuantityToContext thing =+  case getQuantity thing of+    Quantity1 -> id+    q         -> applyQuantityToContextOnly   q+               . applyQuantityToJudgementOnly q++-- | (Conditionally) wake up erased variables and make them unrestricted.+--   For instance,+--   in an erased function argument otherwise erased variables+--   may be used, so they are awoken before type checking the argument.+--+--   Precondition: @Quantity /= Quantity1@+applyQuantityToContextOnly :: (MonadTCEnv tcm) => Quantity -> tcm a -> tcm a+applyQuantityToContextOnly q = localTC+  $ over eContext     (map $ inverseApplyQuantity q)+  . over eLetBindings (Map.map . fmap . second $ inverseApplyQuantity q)++-- | Apply quantity @q@ the the quantity annotation of the (typing/equality)+--   judgement.  This is part of the work done when going into a @q@-context.+--+--   Precondition: @Quantity /= Quantity1@+applyQuantityToJudgementOnly :: (MonadTCEnv tcm) => Quantity -> tcm a -> tcm a+applyQuantityToJudgementOnly = localTC . over eQuantity . composeQuantity++-- | (Conditionally) wake up irrelevant variables and make them relevant.+--   For instance,+--   in an irrelevant function argument otherwise irrelevant variables+--   may be used, so they are awoken before type checking the argument.+--+--   Also allow the use of irrelevant definitions.+applyModalityToContext :: (MonadTCEnv tcm, LensModality m) => m -> tcm a -> tcm a+applyModalityToContext thing =+  case getModality thing of+    m | m == mempty -> id+      | otherwise   -> applyModalityToContextOnly   m+                     . applyModalityToJudgementOnly m++-- | (Conditionally) wake up irrelevant variables and make them relevant.+--   For instance,+--   in an irrelevant function argument otherwise irrelevant variables+--   may be used, so they are awoken before type checking the argument.+--+--   Precondition: @Modality /= Relevant@+applyModalityToContextOnly :: (MonadTCEnv tcm) => Modality -> tcm a -> tcm a+applyModalityToContextOnly m = localTC+  $ over eContext     (map $ inverseApplyModality m)+  . over eLetBindings (Map.map . fmap . second $ inverseApplyModality m)++-- | Apply modality @m@ the the modality annotation of the (typing/equality)+--   judgement.  This is part of the work done when going into a @m@-context.+--+--   Precondition: @Modality /= Relevant@+applyModalityToJudgementOnly :: (MonadTCEnv tcm) => Modality -> tcm a -> tcm a+applyModalityToJudgementOnly = localTC . over eModality . composeModality++-- | Like 'applyModalityToContext', but only act on context if+--   @--irrelevant-projections@.+--   See issue #2170.+applyModalityToContextFunBody :: (MonadTCM tcm, LensModality r) => r -> tcm a -> tcm a+applyModalityToContextFunBody thing cont = do+  let m = getModality thing+  if m == mempty then cont else+    applyWhenM (optIrrelevantProjections <$> pragmaOptions)+      (applyRelevanceToContextOnly (getRelevance m)) $    -- enable local irr. defs only when option+      applyModalityToJudgementOnly m cont  -- enable global irr. defs alway+ -- | Wake up irrelevant variables and make them relevant. This is used --   when type checking terms in a hole, in which case you want to be able to --   (for instance) infer the type of an irrelevant variable. In the course@@ -87,13 +249,25 @@ --   This is not the right thing to do when type checking interactively in a --   hole since it also marks all metas created during type checking as --   irrelevant (issue #2568).-wakeIrrelevantVars :: TCM a -> TCM a-wakeIrrelevantVars = local $ \ e -> e-  { envContext     = map                       (inverseApplyRelevance Irrelevant) (envContext e)-  , envLetBindings = (Map.map . fmap . second) (inverseApplyRelevance Irrelevant) (envLetBindings e)-  }+wakeIrrelevantVars :: (MonadTCEnv tcm) => tcm a -> tcm a+wakeIrrelevantVars+  = applyRelevanceToContextOnly Irrelevant+  . applyQuantityToContextOnly  Quantity0  -- | Check whether something can be used in a position of the given relevance.+--+--   This is a substitute for double-checking that only makes sure+--   relevances are correct.  See issue #2640.+--+--   Used in unifier (@ unifyStep Solution{}@).+--+--   At the moment, this implements McBride-style irrelevance,+--   where Pfenning-style would be the most accurate thing.+--   However, these two notions only differ how they handle+--   bound variables in a term.  Here, we are only concerned+--   in the free variables, used meta-variables, and used+--   (irrelevant) definitions.+-- class UsableRelevance a where   usableRel :: Relevance -> a -> TCM Bool @@ -103,7 +277,7 @@       irel <- getRelevance <$> typeOfBV' i       let ok = irel `moreRelevant` rel       reportSDoc "tc.irr" 50 $-        text "Variable" <+> prettyTCM (var i) <+>+        "Variable" <+> prettyTCM (var i) <+>         text ("has relevance " ++ show irel ++ ", which is " ++               (if ok then "" else "NOT ") ++ "more relevant than " ++ show rel)       return ok `and2M` usableRel rel vs@@ -120,6 +294,7 @@       mrel <- getMetaRelevance <$> lookupMeta m       return (mrel `moreRelevant` rel) `and2M` usableRel rel vs     DontCare _ -> return $ isIrrelevant rel+    Dummy{}  -> return True  instance UsableRelevance a => UsableRelevance (Type' a) where   usableRel rel (El _ t) = usableRel rel t@@ -127,12 +302,14 @@ instance UsableRelevance Sort where   usableRel rel s = case s of     Type l -> usableRel rel l-    Prop   -> return True+    Prop l -> usableRel rel l     Inf    -> return True     SizeUniv -> return True     PiSort s1 s2 -> usableRel rel (s1,s2)     UnivSort s -> usableRel rel s     MetaS x es -> usableRel rel es+    DefS d es  -> usableRel rel $ Def d es+    DummyS{} -> return True  instance UsableRelevance Level where   usableRel rel (Max ls) = usableRel rel ls@@ -161,6 +338,7 @@   usableRel rel (Proj _ p) = do     prel <- relOfConst p     return $ prel `moreRelevant` rel+  usableRel rel (IApply x y v) = allM [x,y,v] $ usableRel rel  instance UsableRelevance a => UsableRelevance (Arg a) where   usableRel rel (Arg info u) =@@ -168,7 +346,126 @@     in  usableRel (rel `composeRelevance` rel') u  instance UsableRelevance a => UsableRelevance (Dom a) where-  usableRel rel (Dom _ u) = usableRel rel u+  usableRel rel Dom{unDom = u} = usableRel rel u  instance (Subst t a, UsableRelevance a) => UsableRelevance (Abs a) where   usableRel rel abs = underAbstraction_ abs $ \u -> usableRel rel u++-- | Check whether something can be used in a position of the given modality.+--+--   This is a substitute for double-checking that only makes sure+--   modalities are correct.  See issue #2640.+--+--   Used in unifier (@ unifyStep Solution{}@).+--+--   This uses McBride-style modality checking.+--   It does not differ from Pfenning-style if we+--   are only interested in the modality of the+--   free variables, used meta-variables, and used+--   definitions.+--+class UsableModality a where+  usableMod :: Modality -> a -> TCM Bool++instance UsableModality Term where+  usableMod mod u = case u of+    Var i vs -> do+      imod <- getModality <$> typeOfBV' i+      let ok = imod `moreUsableModality` mod+      reportSDoc "tc.irr" 50 $+        "Variable" <+> prettyTCM (var i) <+>+        text ("has modality " ++ show imod ++ ", which is a " +++              (if ok then "" else "NOT ") ++ "more usable modality than " ++ show mod)+      return ok `and2M` usableMod mod vs+    Def f vs -> do+      fmod <- modalityOfConst f+      let ok = fmod `moreUsableModality` mod+      reportSDoc "tc.irr" 50 $+        "Definition" <+> prettyTCM (Def f []) <+>+        text ("has modality " ++ show fmod ++ ", which is a " +++              (if ok then "" else "NOT ") ++ "more usable modality than " ++ show mod)+      return ok `and2M` usableMod mod vs+    Con c _ vs -> usableMod mod vs+    Lit l    -> return True+    Lam _ v  -> usableMod mod v+    Pi a b   -> usableMod mod (a,b)+    Sort s   -> usableMod mod s+    Level l  -> return True+    MetaV m vs -> do+      mmod <- getMetaModality <$> lookupMeta m+      let ok = mmod `moreUsableModality` mod+      reportSDoc "tc.irr" 50 $+        "Metavariable" <+> prettyTCM (MetaV m []) <+>+        text ("has modality " ++ show mmod ++ ", which is a " +++              (if ok then "" else "NOT ") ++ "more usable modality than " ++ show mod)+      return ok `and2M` usableMod mod vs+    DontCare _ -> return $ isIrrelevant mod+    Dummy{}  -> return True++instance UsableRelevance a => UsableModality (Type' a) where+  usableMod mod (El _ t) = usableRel (getRelevance mod) t++instance UsableModality Sort where+  usableMod mod s = usableRel (getRelevance mod) s+  -- usableMod mod s = case s of+  --   Type l -> usableMod mod l+  --   Prop l -> usableMod mod l+  --   Inf    -> return True+  --   SizeUniv -> return True+  --   PiSort s1 s2 -> usableMod mod (s1,s2)+  --   UnivSort s -> usableMod mod s+  --   MetaS x es -> usableMod mod es+  --   DummyS{} -> return True++instance UsableModality Level where+  usableMod mod (Max ls) = usableRel (getRelevance mod) ls++-- instance UsableModality PlusLevel where+--   usableMod mod ClosedLevel{} = return True+--   usableMod mod (Plus _ l)    = usableMod mod l++-- instance UsableModality LevelAtom where+--   usableMod mod l = case l of+--     MetaLevel m vs -> do+--       mmod <- getMetaModality <$> lookupMeta m+--       return (mmod `moreUsableModality` mod) `and2M` usableMod mod vs+--     NeutralLevel _ v -> usableMod mod v+--     BlockedLevel _ v -> usableMod mod v+--     UnreducedLevel v -> usableMod mod v++instance UsableModality a => UsableModality [a] where+  usableMod mod = andM . map (usableMod mod)++instance (UsableModality a, UsableModality b) => UsableModality (a,b) where+  usableMod mod (a,b) = usableMod mod a `and2M` usableMod mod b++instance UsableModality a => UsableModality (Elim' a) where+  usableMod mod (Apply a) = usableMod mod a+  usableMod mod (Proj _ p) = do+    pmod <- modalityOfConst p+    return $ pmod `moreUsableModality` mod+  usableMod mod (IApply x y v) = allM [x,y,v] $ usableMod mod++instance UsableModality a => UsableModality (Arg a) where+  usableMod mod (Arg info u) =+    let mod' = getModality info+    in  usableMod (mod `composeModality` mod') u++instance UsableModality a => UsableModality (Dom a) where+  usableMod mod Dom{unDom = u} = usableMod mod u++instance (Subst t a, UsableModality a) => UsableModality (Abs a) where+  usableMod mod abs = underAbstraction_ abs $ \u -> usableMod mod u+++-- * Propositions++-- | Is a type a proposition?  (Needs reduction.)++isPropM :: (LensSort a, MonadReduce m) => a -> m Bool+isPropM a = reduce (getSort a) <&> \case+  Prop{} -> True+  _      -> False++isIrrelevantOrPropM :: (LensRelevance a, LensSort a, MonadReduce m) => a -> m Bool+isIrrelevantOrPropM x = return (isIrrelevant x) `or2M` isPropM x
src/full/Agda/TypeChecking/Level.hs view
@@ -99,7 +99,7 @@   case map (unPlusV zer suc) as of     [a] -> a     []  -> zer-    as  -> foldr1 max as+    as  -> foldl1 max as  unPlusV :: Term -> (Term -> Term) -> PlusLevel -> Term unPlusV zer suc (ClosedLevel n) = foldr (.) id (List.genericReplicate n suc) zer@@ -115,20 +115,22 @@     Def f [] <- prim     return f -levelView :: Term -> TCM Level+levelView :: (HasBuiltins m, MonadReduce m, MonadDebug m)+          => Term -> m Level levelView a = do   reportSLn "tc.level.view" 50 $ "{ levelView " ++ show a-  v <- runReduceM $ levelView' a+  v <- levelView' a   reportSLn "tc.level.view" 50 $ "  view: " ++ show v ++ "}"   return v -levelView' :: Term -> ReduceM Level+levelView' :: (HasBuiltins m, MonadReduce m, MonadDebug m)+           => Term -> m Level levelView' a = do   Def lzero [] <- fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinLevelZero   Def lsuc  [] <- fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinLevelSuc   Def lmax  [] <- fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinLevelMax   let view a = do-        a <- reduce' a+        a <- reduce a         case a of           Level l -> return l           Def s [Apply arg]@@ -142,7 +144,7 @@   return v   where     mkAtom a = do-      b <- reduceB' a+      b <- reduceB a       return $ case b of         NotBlocked _ (MetaV m as) -> atom $ MetaLevel m as         NotBlocked r _            -> atom $ NeutralLevel r $ ignoreBlocking b
src/full/Agda/TypeChecking/LevelConstraints.hs view
@@ -27,7 +27,7 @@   where     simpl (a :=< b) | any (matchLeq (b :=< a)) leqs = LevelCmp CmpEq  (Max [a]) (Max [b])                     | otherwise                     = LevelCmp CmpLeq (Max [a]) (Max [b])-    leqs = concat $ catMaybes $ map inequalities old+    leqs = concat $ mapMaybe inequalities old  data Leq = PlusLevel :=< PlusLevel   deriving (Show, Eq)
src/full/Agda/TypeChecking/MetaVars.hs view
@@ -15,6 +15,8 @@ import qualified Data.Foldable as Fold import qualified Data.Traversable as Trav +import Agda.Interaction.Options+ import Agda.Syntax.Abstract.Name as A import Agda.Syntax.Common import Agda.Syntax.Internal@@ -36,6 +38,7 @@ import Agda.TypeChecking.EtaContract import Agda.TypeChecking.SizedTypes (boundedSizeMetaHook, isSizeProblem) import {-# SOURCE #-} Agda.TypeChecking.CheckInternal+import {-# SOURCE #-} Agda.TypeChecking.Conversion  -- import Agda.TypeChecking.CheckInternal -- import {-# SOURCE #-} Agda.TypeChecking.CheckInternal (checkInternal)@@ -80,7 +83,7 @@             PostponedTypeCheckingProblem{} -> True             InstV{}                        -> False             Open{}                         -> False-            OpenIFS{}                      -> False+            OpenInstance{}                 -> False     reportSLn "tc.meta.blocked" 12 $       if r then "  yes, because " ++ show i else "  no"     return r@@ -90,7 +93,7 @@     i <- mvInstantiation <$> lookupMeta x     return $ case i of       Open{}                         -> True-      OpenIFS{}                      -> notElem Records kinds+      OpenInstance{}                 -> notElem Records kinds       InstV{}                        -> False       BlockedConst{}                 -> False       PostponedTypeCheckingProblem{} -> False@@ -113,21 +116,7 @@ assignTerm' x tel v = do     reportSLn "tc.meta.assign" 70 $ prettyShow x ++ " := " ++ show v ++ "\n  in " ++ show tel      -- verify (new) invariants-    whenM (not <$> asks envAssignMetas) __IMPOSSIBLE__--{- TODO make double-checking work--- currently, it does not work since types of sort-metas are inaccurate!--    -- Andreas, 2013-10-25 double check solution before assigning-    m <- lookupMeta x-    case mvJudgement m of-      HasType _ a -> dontAssignMetas $ checkInternal t a-      IsSort{}    -> return ()  -- skip double check since type of meta is not accurate--}-    -- Andreas, 2013-10-25 double check solution before assigning-    -- Andreas, 2013-11-30 this seems to open a can of worms...-    -- dontAssignMetas $ do-    --   checkInternal t . jMetaType . mvJudgement =<< lookupMeta x+    whenM (not <$> asksTC envAssignMetas) __IMPOSSIBLE__      verboseS "profile.metas" 10 $ liftTCM $ tickMax "max-open-metas" . (fromIntegral . size) =<< getOpenMetas     modifyMetaStore $ ins x $ InstV tel $ killRange v@@ -135,7 +124,7 @@     wakeupConstraints x     reportSLn "tc.meta.assign" 20 $ "completed assignment of " ++ prettyShow x   where-    ins x i = Map.adjust (\ mv -> mv { mvInstantiation = i }) x+    ins x i = IntMap.adjust (\ mv -> mv { mvInstantiation = i }) $ metaId x  -- * Creating meta variables. @@ -148,30 +137,22 @@  -- | Create a sort meta that may be instantiated with 'Inf' (Setω). newSortMeta :: TCM Sort-newSortMeta = newSortMeta' $ IsSort ()--newSortMeta' :: (Type -> Judgement ()) -> TCM Sort-newSortMeta' judge =-  ifM typeInType (return $ mkType 0) $ {- else -}-  ifM hasUniversePolymorphism (newSortMetaCtx' judge =<< getContextArgs)+newSortMeta =+  ifM hasUniversePolymorphism (newSortMetaCtx =<< getContextArgs)   -- else (no universe polymorphism)   $ do i   <- createMetaInfo-       x   <- newMeta i normalMetaPriority (idP 0) $ judge typeDontCare+       x   <- newMeta Instantiable i normalMetaPriority (idP 0) $ IsSort () __DUMMY_TYPE__        return $ MetaS x []  -- | Create a sort meta that may be instantiated with 'Inf' (Setω). newSortMetaCtx :: Args -> TCM Sort-newSortMetaCtx = newSortMetaCtx' $ IsSort ()--newSortMetaCtx' :: (Type -> Judgement ()) -> Args -> TCM Sort-newSortMetaCtx' judge vs = do-  ifM typeInType (return $ mkType 0) $ {- else -} do+newSortMetaCtx vs = do     i   <- createMetaInfo     tel <- getContextTelescope-    let t = telePi_ tel typeDontCare-    x   <- newMeta i normalMetaPriority (idP 0) $ judge t+    let t = telePi_ tel __DUMMY_TYPE__+    x   <- newMeta Instantiable i normalMetaPriority (idP $ size tel) $ IsSort () t     reportSDoc "tc.meta.new" 50 $-      text "new sort meta" <+> prettyTCM x <+> text ":" <+> prettyTCM t+      "new sort meta" <+> prettyTCM x <+> ":" <+> prettyTCM t     return $ MetaS x $ map Apply vs  newTypeMeta :: Sort -> TCM Type@@ -184,30 +165,30 @@ -- that it has a sort.  The sort comes from the solution. -- newTypeMeta_  = newTypeMeta Inf --- | @newIFSMeta s t cands@ creates a new "implicit from scope" metavariable+-- | @newInstanceMeta s t cands@ creates a new instance metavariable --   of type the output type of @t@ with name suggestion @s@.-newIFSMeta :: MetaNameSuggestion -> Type -> TCM (MetaId, Term)-newIFSMeta s t = do+newInstanceMeta :: MetaNameSuggestion -> Type -> TCM (MetaId, Term)+newInstanceMeta s t = do   vs  <- getContextArgs   ctx <- getContextTelescope-  newIFSMetaCtx s (telePi_ ctx t) vs+  newInstanceMetaCtx s (telePi_ ctx t) vs -newIFSMetaCtx :: MetaNameSuggestion -> Type -> Args -> TCM (MetaId, Term)-newIFSMetaCtx s t vs = do+newInstanceMetaCtx :: MetaNameSuggestion -> Type -> Args -> TCM (MetaId, Term)+newInstanceMetaCtx s t vs = do   reportSDoc "tc.meta.new" 50 $ fsep-    [ text "new ifs meta:"-    , nest 2 $ prettyTCM vs <+> text "|-"+    [ "new instance meta:"+    , nest 2 $ prettyTCM vs <+> "|-"     ]   -- Andreas, 2017-10-04, issue #2753: no metaOccurs check for instance metas   i0 <- createMetaInfo' DontRunMetaOccursCheck   let i = i0 { miNameSuggestion = s }   TelV tel _ <- telView t   let perm = idP (size tel)-  x <- newMeta' OpenIFS i normalMetaPriority perm (HasType () t)+  x <- newMeta' OpenInstance Instantiable i normalMetaPriority perm (HasType () t)   reportSDoc "tc.meta.new" 50 $ fsep-    [ nest 2 $ pretty x <+> text ":" <+> prettyTCM t+    [ nest 2 $ pretty x <+> ":" <+> prettyTCM t     ]-  let c = FindInScope x Nothing Nothing+  let c = FindInstance x Nothing Nothing   -- If we're not already solving instance constraints we should add this   -- to the awake constraints to make sure we don't forget about it. If we   -- are solving constraints it will get woken up later (see #2690)@@ -234,29 +215,29 @@ newValueMeta b t = do   vs  <- getContextArgs   tel <- getContextTelescope-  newValueMetaCtx b t tel (idP $ size tel) vs+  newValueMetaCtx Instantiable b t tel (idP $ size tel) vs -newValueMetaCtx :: RunMetaOccursCheck -> Type -> Telescope -> Permutation -> Args -> TCM (MetaId, Term)-newValueMetaCtx b t tel perm ctx =-  mapSndM instantiateFull =<< newValueMetaCtx' b t tel perm ctx+newValueMetaCtx :: Frozen -> RunMetaOccursCheck -> Type -> Telescope -> Permutation -> Args -> TCM (MetaId, Term)+newValueMetaCtx frozen b t tel perm ctx =+  mapSndM instantiateFull =<< newValueMetaCtx' frozen b t tel perm ctx  -- | Create a new value meta without η-expanding. newValueMeta' :: RunMetaOccursCheck -> Type -> TCM (MetaId, Term) newValueMeta' b t = do   vs  <- getContextArgs   tel <- getContextTelescope-  newValueMetaCtx' b t tel (idP $ size tel) vs+  newValueMetaCtx' Instantiable b t tel (idP $ size tel) vs  -- | Create a new value meta with specific dependencies.-newValueMetaCtx' :: RunMetaOccursCheck -> Type -> Telescope -> Permutation -> Args -> TCM (MetaId, Term)-newValueMetaCtx' b a tel perm vs = do+newValueMetaCtx' :: Frozen -> RunMetaOccursCheck -> Type -> Telescope -> Permutation -> Args -> TCM (MetaId, Term)+newValueMetaCtx' frozen b a tel perm vs = do   i <- createMetaInfo' b   let t     = telePi_ tel a-  x <- newMeta i normalMetaPriority perm (HasType () t)+  x <- newMeta frozen i normalMetaPriority perm (HasType () t)   reportSDoc "tc.meta.new" 50 $ fsep-    [ text "new meta:"-    , nest 2 $ prettyTCM vs <+> text "|-"-    , nest 2 $ pretty x <+> text ":" <+> prettyTCM t+    [ "new meta:"+    , nest 2 $ prettyTCM vs <+> "|-"+    , nest 2 $ pretty x <+> ":" <+> prettyTCM t     ]   etaExpandMetaSafe x   -- Andreas, 2012-09-24: for Metas X : Size< u add constraint X+1 <= u@@ -265,7 +246,7 @@   return (x, u)  newTelMeta :: Telescope -> TCM Args-newTelMeta tel = newArgsMeta (abstract tel $ typeDontCare)+newTelMeta tel = newArgsMeta (abstract tel $ __DUMMY_TYPE__)  type Condition = Dom Type -> Abs Type -> Bool @@ -279,29 +260,25 @@ newArgsMeta' condition t = do   args <- getContextArgs   tel  <- getContextTelescope-  newArgsMetaCtx' condition t tel (idP $ size tel) args+  newArgsMetaCtx' Instantiable condition t tel (idP $ size tel) args  newArgsMetaCtx :: Type -> Telescope -> Permutation -> Args -> TCM Args-newArgsMetaCtx = newArgsMetaCtx' trueCondition+newArgsMetaCtx = newArgsMetaCtx' Instantiable trueCondition -newArgsMetaCtx' :: Condition -> Type -> Telescope -> Permutation -> Args -> TCM Args-newArgsMetaCtx' condition (El s tm) tel perm ctx = do+newArgsMetaCtx' :: Frozen -> Condition -> Type -> Telescope -> Permutation -> Args -> TCM Args+newArgsMetaCtx' frozen condition (El s tm) tel perm ctx = do   tm <- reduce tm   case tm of-    Pi dom@(Dom info a) codom | condition dom codom -> do-      let r    = getRelevance info-          -- Issue #3031: It's not enough to applyRelevanceToContext, since most (all?)+    Pi dom@(Dom{domInfo = info, unDom = a}) codom | condition dom codom -> do+      let mod  = getModality info+          -- Issue #3031: It's not enough to applyModalityToContext, since most (all?)           -- of the context lives in tel. Don't forget the arguments in ctx.-          tel' = telFromList . map (inverseApplyRelevance r) . telToList $ tel-          ctx' = (map . mapRelevance) (r `inverseComposeRelevance`) ctx-      (_, u) <- applyRelevanceToContext (getRelevance info) $-               {--                 -- Andreas, 2010-09-24 skip irrelevant record fields when eta-expanding a meta var-                 -- Andreas, 2010-10-11 this is WRONG, see Issue 347-                if r == Irrelevant then return DontCare else-                -}-                 newValueMetaCtx RunMetaOccursCheck a tel' perm ctx'-      args <- newArgsMetaCtx' condition (codom `absApp` u) tel perm ctx+          tel' = telFromList . map (mod `inverseApplyModality`) . telToList $ tel+          ctx' = (map . mapModality) (mod `inverseComposeModality`) ctx+      (m, u) <- applyModalityToContext info $+                 newValueMetaCtx frozen RunMetaOccursCheck a tel' perm ctx'+      setMetaArgInfo m (getArgInfo dom)+      args <- newArgsMetaCtx' frozen condition (codom `absApp` u) tel perm ctx       return $ Arg info u : args     _  -> return [] @@ -311,12 +288,17 @@ newRecordMeta r pars = do   args <- getContextArgs   tel  <- getContextTelescope-  newRecordMetaCtx r pars tel (idP $ size tel) args+  newRecordMetaCtx Instantiable r pars tel (idP $ size tel) args -newRecordMetaCtx :: QName -> Args -> Telescope -> Permutation -> Args -> TCM Term-newRecordMetaCtx r pars tel perm ctx = do+newRecordMetaCtx+  :: Frozen  -- ^ Should the meta be created frozen?+  -> QName   -- ^ Name of record type+  -> Args    -- ^ Parameters of record type.+  -> Telescope -> Permutation -> Args -> TCM Term+newRecordMetaCtx frozen r pars tel perm ctx = do   ftel   <- flip apply pars <$> getRecordFieldTypes r-  fields <- newArgsMetaCtx (telePi_ ftel $ sort Prop) tel perm ctx+  fields <- newArgsMetaCtx' frozen trueCondition+              (telePi_ ftel __DUMMY_TYPE__) tel perm ctx   con    <- getRecordConstructor r   return $ Con con ConOSystem (map Apply fields) @@ -353,13 +335,13 @@     es  <- map Apply <$> getContextArgs     tel <- getContextTelescope     x   <- newMeta' (BlockedConst $ abstract tel v)-                    i lowMetaPriority (idP $ size tel)+                    Instantiable i lowMetaPriority (idP $ size tel)                     (HasType () $ telePi_ tel t)                     -- we don't instantiate blocked terms     inTopContext $ addConstraint (Guarded (UnBlock x) pid)     reportSDoc "tc.meta.blocked" 20 $ vcat-      [ text "blocked" <+> prettyTCM x <+> text ":=" <+> inTopContext (prettyTCM $ abstract tel v)-      , text "     by" <+> (prettyTCM =<< getConstraintsForProblem pid) ]+      [ "blocked" <+> prettyTCM x <+> ":=" <+> inTopContext (prettyTCM $ abstract tel v)+      , "     by" <+> (prettyTCM =<< getConstraintsForProblem pid) ]     inst <- isInstantiatedMeta x     case inst of       True  -> instantiate (MetaV x es)@@ -391,10 +373,11 @@ postponeTypeCheckingProblem_ p = do   postponeTypeCheckingProblem p (unblock p)   where-    unblock (CheckExpr _ t)           = unblockedTester t+    unblock (CheckExpr _ _ t)         = unblockedTester t     unblock (CheckArgs _ _ _ t _ _)   = unblockedTester t  -- The type of the head of the application.-    unblock (CheckLambda _ _ t)       = unblockedTester t-    unblock (UnquoteTactic _ _ _)     = __IMPOSSIBLE__     -- unquote problems must be supply their own tester+    unblock (CheckProjAppToKnownPrincipalArg _ _ _ _ _ _ _ _ t) = unblockedTester t -- The type of the principal argument+    unblock (CheckLambda _ _ _ t)     = unblockedTester t+    unblock (DoQuoteTerm _ _ _)       = __IMPOSSIBLE__     -- also quoteTerm problems  -- | Create a postponed type checking problem @e : t@ that waits for conditon --   @unblock@.  A new meta is created in the current context that has as@@ -405,9 +388,9 @@   i   <- createMetaInfo' DontRunMetaOccursCheck   tel <- getContextTelescope   cl  <- buildClosure p-  t   <- problemType p+  let t = problemType p   m   <- newMeta' (PostponedTypeCheckingProblem cl unblock)-                  i normalMetaPriority (idP (size tel))+                  Instantiable i normalMetaPriority (idP (size tel))          $ HasType () $ telePi_ tel t    -- Create the meta that we actually return@@ -426,11 +409,12 @@   return v  -- | Type of the term that is produced by solving the 'TypeCheckingProblem'.-problemType :: TypeCheckingProblem -> TCM Type-problemType (CheckExpr _ t           ) = return t-problemType (CheckArgs _ _ _ _ t _ )   = return t  -- The target type of the application.-problemType (CheckLambda _ _ t       ) = return t-problemType (UnquoteTactic tac hole t) = return t+problemType :: TypeCheckingProblem -> Type+problemType (CheckExpr _ _ t         ) = t+problemType (CheckArgs _ _ _ _ t _ )   = t  -- The target type of the application.+problemType (CheckProjAppToKnownPrincipalArg _ _ _ _ _ t _ _ _) = t -- The target type of the application+problemType (CheckLambda _ _ _ t     ) = t+problemType (DoQuoteTerm _ _ t)        = t  -- | Eta expand metavariables listening on the current meta. etaExpandListeners :: MetaId -> TCM ()@@ -444,7 +428,7 @@   -- Andreas 2010-10-15: do not expand record mvars, lazyness needed for irrelevance wakeupListener (EtaExpand x)         = etaExpandMetaSafe x wakeupListener (CheckConstraint _ c) = do-  reportSDoc "tc.meta.blocked" 20 $ text "waking boxed constraint" <+> prettyTCM c+  reportSDoc "tc.meta.blocked" 20 $ "waking boxed constraint" <+> prettyTCM c   addAwakeConstraints [c]   solveAwakeConstraints @@ -471,23 +455,44 @@ -- | Eta expand a metavariable, if it is of the specified kind. --   Don't do anything if the metavariable is a blocked term. etaExpandMeta :: [MetaKind] -> MetaId -> TCM ()-etaExpandMeta kinds m = whenM (asks envAssignMetas `and2M` isEtaExpandable kinds m) $ do+etaExpandMeta kinds m = whenM (asksTC envAssignMetas `and2M` isEtaExpandable kinds m) $ do   verboseBracket "tc.meta.eta" 20 ("etaExpandMeta " ++ prettyShow m) $ do     let waitFor x = do           reportSDoc "tc.meta.eta" 20 $ do-            text "postponing eta-expansion of meta variable" <+>+            "postponing eta-expansion of meta variable" <+>               prettyTCM m <+>-              text "which is blocked by" <+> prettyTCM x+              "which is blocked by" <+> prettyTCM x           listenToMeta (EtaExpand m) x         dontExpand = do           reportSDoc "tc.meta.eta" 20 $ do-            text "we do not expand meta variable" <+> prettyTCM m <+>+            "we do not expand meta variable" <+> prettyTCM m <+>               text ("(requested was expansion of " ++ show kinds ++ ")")     meta <- lookupMeta m     case mvJudgement meta of       IsSort{} -> dontExpand       HasType _ a -> do++        reportSDoc "tc.meta.eta" 40 $ sep+          [ text "considering eta-expansion at type "+          , prettyTCM a+          , text " raw: "+          , pretty a+          ]+         TelV tel b <- telView a+        reportSDoc "tc.meta.eta" 40 $ sep+          [ text "considering eta-expansion at type"+          , addContext tel (prettyTCM b)+          , text "under telescope"+          , prettyTCM tel+          ]++        -- Eta expanding metas with a domFinite will just make sure+        -- they go unsolved: conversion will compare them at the+        -- different cases for the domain, so it will not find the+        -- solution for the whole meta.+        if any domFinite (flattenTel tel) then dontExpand else do+         -- if the target type @b@ of @m@ is a meta variable @x@ itself         -- (@NonBlocked (MetaV{})@),         -- or it is blocked by a meta-variable @x@ (@Blocked@), we cannot@@ -499,12 +504,15 @@             ifM (isEtaRecord r) {- then -} (do               let ps = fromMaybe __IMPOSSIBLE__ $ allApplyElims es               let expand = do-                    u <- withMetaInfo' meta $ newRecordMetaCtx r ps tel (idP $ size tel) $ teleArgs tel+                    u <- withMetaInfo' meta $+                      newRecordMetaCtx (mvFrozen meta) r ps tel (idP $ size tel) $ teleArgs tel+                    -- Andreas, 2019-03-18, AIM XXIX, issue #3597+                    -- When meta is frozen instantiate it with in-turn frozen metas.                     inTopContext $ do                       verboseS "tc.meta.eta" 15 $ do                         du <- prettyTCM u                         reportSDoc "tc.meta.eta" 15 $ sep-                          [ text "eta expanding: " <+> pretty m <+> text " --> "+                          [ "eta expanding: " <+> pretty m <+> " --> "                           , nest 2 $ prettyTCM u                           ]                       -- Andreas, 2012-03-29: No need for occurrence check etc.@@ -559,9 +567,9 @@  assignWrapper :: CompareDirection -> MetaId -> Elims -> Term -> TCM () -> TCM () assignWrapper dir x es v doAssign = do-  ifNotM (asks envAssignMetas) patternViolation $ {- else -} do+  ifNotM (asksTC envAssignMetas) patternViolation $ {- else -} do     reportSDoc "tc.meta.assign" 10 $ do-      text "term" <+> prettyTCM (MetaV x es) <+> text (":" ++ show dir) <+> prettyTCM v+      "term" <+> prettyTCM (MetaV x es) <+> text (":" ++ show dir) <+> prettyTCM v     liftTCM $ nowSolvingConstraints doAssign `finally` solveAwakeConstraints  @@ -600,14 +608,14 @@   -- with full unfolding.   v <- instantiate v   reportSDoc "tc.meta.assign" 45 $-    text "MetaVars.assign: assigning to " <+> prettyTCM v+    "MetaVars.assign: assigning to " <+> prettyTCM v    reportSLn "tc.meta.assign" 75 $     "MetaVars.assign: assigning meta  " ++ show x ++ "  with args  " ++ show args ++ "  to  " ++ show v    case (v, mvJudgement mvar) of-      (Sort Inf, HasType{}) -> typeError SetOmegaNotValidType-      _                     -> return ()+      (Sort s, HasType{}) -> hasBiggerSort s+      _                   -> return ()    -- We don't instantiate frozen mvars   when (mvFrozen mvar == Frozen) $ do@@ -615,15 +623,17 @@     patternViolation    -- We never get blocked terms here anymore. TODO: we actually do. why?-  whenM (isBlockedTerm x) patternViolation+  whenM (isBlockedTerm x) $ do+    reportSLn "tc.meta.assign" 25 $ "aborting: meta is a blocked term!"+    patternViolation    -- Andreas, 2010-10-15 I want to see whether rhs is blocked   reportSLn "tc.meta.assign" 50 $ "MetaVars.assign: I want to see whether rhs is blocked"   reportSDoc "tc.meta.assign" 25 $ do     v0 <- reduceB v     case v0 of-      Blocked m0 _ -> text "r.h.s. blocked on:" <+> prettyTCM m0-      NotBlocked{} -> text "r.h.s. not blocked"+      Blocked m0 _ -> "r.h.s. blocked on:" <+> prettyTCM m0+      NotBlocked{} -> "r.h.s. not blocked"    -- Turn the assignment problem @_X args >= SizeLt u@ into   -- @_X args = SizeLt (_Y args@ and constraint@@ -640,7 +650,7 @@     reportSDoc "tc.meta.assign.proj" 45 $ do       cxt <- getContextTelescope       vcat-        [ text "context before projection expansion"+        [ "context before projection expansion"         , nest 2 $ inTopContext $ prettyTCM cxt         ] @@ -649,7 +659,7 @@       reportSDoc "tc.meta.assign.proj" 45 $ do         cxt <- getContextTelescope         vcat-          [ text "context after projection expansion"+          [ "context after projection expansion"           , nest 2 $ inTopContext $ prettyTCM cxt           ] @@ -665,7 +675,7 @@         -- Andreas, 2016-11-03 #2211 attempt to do s.th. for unused         if False -- irrelevant $ getMetaRelevance mvar           then do-            reportSDoc "tc.meta.assign" 25 $ text "meta is irrelevant or unused"+            reportSDoc "tc.meta.assign" 25 $ "meta is irrelevant or unused"             return (Set.toList $ allFreeVars args, empty, empty)           else do             let vars  = allFreeVarsWithOcc args@@ -687,12 +697,12 @@       reportSDoc "tc.meta.assign" 20 $           let pr (Var n []) = text (show n)               pr (Def c []) = prettyTCM c-              pr _          = text ".."+              pr _          = ".."           in vcat-               [ text "mvar args:" <+> sep (map (pr . unArg) args)-               , text "fvars lhs (rel):" <+> sep (map (text . show) relVL)-               , text "fvars lhs (nonstrict):" <+> sep (map (text . show) nonstrictVL)-               , text "fvars lhs (irr):" <+> sep (map (text . show) irrVL)+               [ "mvar args:" <+> sep (map (pr . unArg) args)+               , "fvars lhs (rel):" <+> sep (map (text . show) relVL)+               , "fvars lhs (nonstrict):" <+> sep (map (text . show) nonstrictVL)+               , "fvars lhs (irr):" <+> sep (map (text . show) irrVL)                ]        -- Check that the x doesn't occur in the right hand side.@@ -706,9 +716,9 @@       verboseS "tc.meta.assign" 30 $ do         let n = termSize v         when (n > 200) $ reportSDoc "tc.meta.assign" 30 $-          sep [ text "size" <+> text (show n)---              , nest 2 $ text "type" <+> prettyTCM t-              , nest 2 $ text "term" <+> prettyTCM v+          sep [ "size" <+> text (show n)+--              , nest 2 $ "type" <+> prettyTCM t+              , nest 2 $ "term" <+> prettyTCM v               ]        -- Check linearity of @ids@@@ -718,7 +728,7 @@       -- we'll build solutions where the irrelevant terms are not valid       let fvs = allFreeVars v       reportSDoc "tc.meta.assign" 20 $-        text "fvars rhs:" <+> sep (map (text . show) $ Set.toList fvs)+        "fvars rhs:" <+> sep (map (text . show) $ Set.toList fvs)        -- Check that the arguments are variables       mids <- do@@ -727,7 +737,7 @@           -- all args are variables           Right ids -> do             reportSDoc "tc.meta.assign" 50 $-              text "inverseSubst returns:" <+> sep (map prettyTCM ids)+              "inverseSubst returns:" <+> sep (map prettyTCM ids)             return $ Just ids           -- we have proper values as arguments which could be cased on           -- here, we cannot prune, since offending vars could be eliminated@@ -764,7 +774,7 @@       -- non-linear lhs: we cannot solve, but prune       killResult <- prune x args $ Set.toList fvs       reportSDoc "tc.meta.assign" 10 $-        text "pruning" <+> prettyTCM x <+> do+        "pruning" <+> prettyTCM x <+> do         text $           if killResult `elem` [PrunedSomething,PrunedEverything] then "succeeded"            else "failed"@@ -777,8 +787,8 @@ attemptInertRHSImprovement :: MetaId -> Args -> Term -> TCM () attemptInertRHSImprovement m args v = do   reportSDoc "tc.meta.inert" 30 $ vcat-    [ text "attempting inert rhs improvement"-    , nest 2 $ sep [ prettyTCM (MetaV m $ map Apply args) <+> text "=="+    [ "attempting inert rhs improvement"+    , nest 2 $ sep [ prettyTCM (MetaV m $ map Apply args) <+> "=="                    , prettyTCM v ] ]   -- Check that the right-hand side has the form D vs, for some inert constant D.   -- Returns the type of D and a function to build an application of D.@@ -793,7 +803,7 @@   -- When attempting shortcut meta solutions, metas aren't necessarily fully   -- eta expanded. If this is the case we skip inert improvement.   when (length args < size tel) $ do-    reportSDoc "tc.meta.inert" 30 $ text "not fully applied"+    reportSDoc "tc.meta.inert" 30 $ "not fully applied"     patternViolation   -- Solve the meta with _M := \ xs -> D (_Y1 xs) .. (_Yn xs), for fresh metas   -- _Yi.@@ -802,10 +812,10 @@       sol     = mkRHS metaArgs       argTel  = map ("x" <$) args   reportSDoc "tc.meta.inert" 30 $ nest 2 $ vcat-    [ text "a       =" <+> prettyTCM a-    , text "tel     =" <+> prettyTCM tel-    , text "metas   =" <+> prettyList (map prettyTCM metaArgs)-    , text "sol     =" <+> prettyTCM sol+    [ "a       =" <+> prettyTCM a+    , "tel     =" <+> prettyTCM tel+    , "metas   =" <+> prettyList (map prettyTCM metaArgs)+    , "sol     =" <+> prettyTCM sol     ]   assignTerm m argTel sol   patternViolation  -- throwing a pattern violation here lets the constraint@@ -814,12 +824,12 @@     ensureInert :: Term -> TCM (Type, Args -> Term)     ensureInert v = do       let notInert = do-            reportSDoc "tc.meta.inert" 30 $ nest 2 $ text "not inert:" <+> prettyTCM v+            reportSDoc "tc.meta.inert" 30 $ nest 2 $ "not inert:" <+> prettyTCM v             patternViolation           toArgs elims =             case allApplyElims elims of               Nothing -> do-                reportSDoc "tc.meta.inert" 30 $ nest 2 $ text "can't do projections from inert"+                reportSDoc "tc.meta.inert" 30 $ nest 2 $ "can't do projections from inert"                 patternViolation               Just args -> return args       case v of@@ -848,11 +858,11 @@     ensureNeutral rhs v = do       b <- reduceB v       let notNeutral v = do-            reportSDoc "tc.meta.inert" 30 $ nest 2 $ text "not neutral:" <+> prettyTCM v+            reportSDoc "tc.meta.inert" 30 $ nest 2 $ "not neutral:" <+> prettyTCM v             patternViolation           checkRHS arg             | arg == rhs = do-              reportSDoc "tc.meta.inert" 30 $ nest 2 $ text "argument shares head with RHS:" <+> prettyTCM arg+              reportSDoc "tc.meta.inert" 30 $ nest 2 $ "argument shares head with RHS:" <+> prettyTCM arg               patternViolation             | otherwise  = return ()       case b of@@ -887,7 +897,7 @@ assignMeta' m x t n ids v = do   -- we are linear, so we can solve!   reportSDoc "tc.meta.assign" 25 $-      text "preparing to instantiate: " <+> prettyTCM v+      "preparing to instantiate: " <+> prettyTCM v    -- Rename the variables in v to make it suitable for abstraction over ids.   v' <- do@@ -918,12 +928,12 @@     -- we need to construct tel' from the type of the meta variable     -- (no longer from ids which may not be the complete variable list     -- any more)-    reportSDoc "tc.meta.assign" 15 $ text "type of meta =" <+> prettyTCM t-    reportSDoc "tc.meta.assign" 70 $ text "type of meta =" <+> text (show t)+    reportSDoc "tc.meta.assign" 15 $ "type of meta =" <+> prettyTCM t+    reportSDoc "tc.meta.assign" 70 $ "type of meta =" <+> text (show t) -    TelV tel' _ <- telViewUpTo n t-    reportSDoc "tc.meta.assign" 30 $ text "tel'  =" <+> prettyTCM tel'-    reportSDoc "tc.meta.assign" 30 $ text "#args =" <+> text (show n)+    (telv@(TelV tel' a),bs) <- telViewUpToPathBoundary n t+    reportSDoc "tc.meta.assign" 30 $ "tel'  =" <+> prettyTCM tel'+    reportSDoc "tc.meta.assign" 30 $ "#args =" <+> text (show n)     -- Andreas, 2013-09-17 (AIM XVIII): if t does not provide enough     -- types for the arguments, it might be blocked by a meta;     -- then we give up. (Issue 903)@@ -933,23 +943,38 @@     -- Perform the assignment (and wake constraints).      let vsol = abstract tel' v'-    -- -- Andreas, 2013-10-25 double check solution before assigning-    -- -- Andreas, 2017-07-28-    -- m <- lookupMeta x-    -- case mvJudgement m of-    --   IsSort{}    -> return ()  -- skip double check since type of meta is not accurate-    --   HasType _ a -> do-    --     reportSDoc "tc.meta.check" 30 $ vcat-    --       [ text "double checking solution"-    --       , nest 2 $ prettyTCM vsol <+> text " : " <+> prettyTCM a-    --       ]-    --     dontAssignMetas $ checkInternal vsol a  -- This can crash at assignTerm'! +    -- Andreas, 2013-10-25 double check solution before assigning+    whenM (optDoubleCheck <$> pragmaOptions) $ noConstraints $ dontAssignMetas $ do+      m <- lookupMeta x+      reportSDoc "tc.meta.check" 30 $ "double checking solution"+      addContext tel' $ case mvJudgement m of+        HasType{} -> do+          reportSDoc "tc.meta.check" 30 $ nest 2 $+            prettyTCM v' <+> " : " <+> prettyTCM a+          checkInternal v' a+        IsSort{}  -> void $ do+          reportSDoc "tc.meta.check" 30 $ nest 2 $+            prettyTCM v' <+> " is a sort"+          checkSort defaultAction =<< shouldBeSort (El __DUMMY_SORT__ v')+     reportSDoc "tc.meta.assign" 10 $-      text "solving" <+> prettyTCM x <+> text ":=" <+> prettyTCM vsol-    assignTerm x (telToArgs tel') v'+      "solving" <+> prettyTCM x <+> ":=" <+> prettyTCM vsol +    v' <- blockOnBoundary telv bs v' +    assignTerm x (telToArgs tel') v'+  where+    blockOnBoundary :: TelView -> Boundary -> Term -> TCM Term+    blockOnBoundary telv         [] v = return v+    blockOnBoundary (TelV tel t) bs v = addContext tel $+      blockTerm t $ do+        neg <- primINeg+        forM_ bs $ \ (r,(x,y)) -> do+          equalTermOnFace (neg `apply1` r) t x v+          equalTermOnFace r  t y v+        return v+ -- | Turn the assignment problem @_X args <= SizeLt u@ into -- @_X args = SizeLt (_Y args)@ and constraint -- @_Y args <= u@.@@ -978,7 +1003,7 @@           TelV tel _ <- telView t           let size = sizeType_ qSize               t'   = telePi tel size-          y <- newMeta (mvInfo mvar) (mvPriority mvar) (mvPermutation mvar)+          y <- newMeta Instantiable (mvInfo mvar) (mvPriority mvar) (mvPermutation mvar)                        (HasType __IMPOSSIBLE__ t')           -- Note: no eta-expansion of new meta possible/necessary.           -- Add the size constraint @y args `dir` u@.@@ -1006,16 +1031,16 @@   -> TCM c expandProjectedVars args v ret = loop (args, v) where   loop (args, v) = do-    reportSDoc "tc.meta.assign.proj" 45 $ text "meta args: " <+> prettyTCM args+    reportSDoc "tc.meta.assign.proj" 45 $ "meta args: " <+> prettyTCM args     args <- callByName $ reduceAndEtaContract args     -- args <- etaContract =<< normalise args-    reportSDoc "tc.meta.assign.proj" 45 $ text "norm args: " <+> prettyTCM args-    reportSDoc "tc.meta.assign.proj" 85 $ text "norm args: " <+> text (show args)+    reportSDoc "tc.meta.assign.proj" 45 $ "norm args: " <+> prettyTCM args+    reportSDoc "tc.meta.assign.proj" 85 $ "norm args: " <+> text (show args)     let done = ret args v     case noProjectedVar args of       Right ()              -> do         reportSDoc "tc.meta.assign.proj" 40 $-          text "no projected var found in args: " <+> prettyTCM args+          "no projected var found in args: " <+> prettyTCM args         done       Left (ProjVarExc i _) -> etaExpandProjectedVar i (args, v) done loop @@ -1023,11 +1048,11 @@ etaExpandProjectedVar :: (PrettyTCM a, Subst Term a) => Int -> a -> TCM c -> (a -> TCM c) -> TCM c etaExpandProjectedVar i v fail succeed = do   reportSDoc "tc.meta.assign.proj" 40 $-    text "trying to expand projected variable" <+> prettyTCM (var i)+    "trying to expand projected variable" <+> prettyTCM (var i)   caseMaybeM (etaExpandBoundVar i) fail $ \ (delta, sigma, tau) -> do     reportSDoc "tc.meta.assign.proj" 25 $-      text "eta-expanding var " <+> prettyTCM (var i) <+>-      text " in terms " <+> prettyTCM v+      "eta-expanding var " <+> prettyTCM (var i) <+>+      " in terms " <+> prettyTCM v     inTopContext $ addContext delta $       succeed $ applySubst tau v @@ -1072,7 +1097,7 @@       -- In case of lambda or record constructor, it makes sense to       -- reduce further.       Lam ai (Abs x b) -> etaLam ai x =<< reduceAndEtaContract b-      Con c ci es | Just args <- allApplyElims es -> etaCon c ci args $ \ r c ci args -> do+      Con c ci es -> etaCon c ci es $ \ r c ci args -> do         args <- reduceAndEtaContract args         etaContractRecord r c ci args       v -> return v@@ -1177,8 +1202,8 @@     terms = map var (downFrom (size args))     failure = do       lift $ reportSDoc "tc.meta.assign" 15 $ vcat-        [ text "not all arguments are variables: " <+> prettyTCM args-        , text "  aborting assignment" ]+        [ "not all arguments are variables: " <+> prettyTCM args+        , "  aborting assignment" ]       throwError CantInvert     neutralArg = throwError NeutralArg @@ -1236,6 +1261,7 @@         Arg _ Pi{}       -> neutralArg         Arg _ Sort{}     -> neutralArg         Arg _ Level{}    -> neutralArg+        Arg _ (Dummy s)  -> __IMPOSSIBLE_VERBOSE__ s      -- managing an assoc list where duplicate indizes cannot be irrelevant vars     append :: Res -> Res -> Res@@ -1268,10 +1294,10 @@ -- openMetasToPostulates :: TCM () openMetasToPostulates = do-  m <- asks envCurrentModule+  m <- asksTC envCurrentModule    -- Go through all open metas.-  ms <- Map.assocs <$> use stMetaStore+  ms <- IntMap.assocs <$> useTC stMetaStore   forM_ ms $ \ (x, mv) -> do     when (isOpenMeta $ mvInstantiation mv) $ do       let t = jMetaType $ mvJudgement mv@@ -1279,17 +1305,17 @@       -- Create a name for the new postulate.       let r = clValue $ miClosRange $ mvInfo mv       -- s <- render <$> prettyTCM x -- Using _ is a bad idea, as it prints as prefix op-      let s = "unsolved#meta." ++ show (metaId x)+      let s = "unsolved#meta." ++ show x       n <- freshName r s       let q = A.QName m n        -- Debug.       reportSDoc "meta.postulate" 20 $ vcat         [ text ("Turning " ++ if isSortMeta_ mv then "sort" else "value" ++ " meta ")-            <+> prettyTCM x <+> text " into postulate."+            <+> prettyTCM (MetaId x) <+> " into postulate."         , nest 2 $ vcat-          [ text "Name: " <+> prettyTCM q-          , text "Type: " <+> prettyTCM t+          [ "Name: " <+> prettyTCM q+          , "Type: " <+> prettyTCM t           ]         ] @@ -1298,5 +1324,5 @@        -- Solve the meta.       let inst = InstV [] $ Def q []-      stMetaStore %= Map.adjust (\ mv0 -> mv0 { mvInstantiation = inst }) x+      updateMetaVar (MetaId x) $ \ mv0 -> mv0 { mvInstantiation = inst }       return ()
src/full/Agda/TypeChecking/MetaVars.hs-boot view
@@ -11,7 +11,7 @@ etaExpandMetaSafe :: MetaId -> TCM () assignV           :: CompareDirection -> MetaId -> Args -> Term -> TCM () assign            :: CompareDirection -> MetaId -> Args -> Term -> TCM ()-newIFSMeta        :: String -> Type -> TCM (MetaId, Term)+newInstanceMeta   :: String -> Type -> TCM (MetaId, Term) newValueMeta      :: RunMetaOccursCheck -> Type -> TCM (MetaId, Term) newNamedValueMeta :: RunMetaOccursCheck -> String -> Type -> TCM (MetaId, Term) newNamedValueMeta':: RunMetaOccursCheck -> String -> Type -> TCM (MetaId, Term)
src/full/Agda/TypeChecking/MetaVars/Mention.hs view
@@ -18,6 +18,7 @@     Pi a b       -> mm (a, b)     Sort s       -> mm s     Level l      -> mm l+    Dummy{}      -> False     DontCare v   -> False   -- we don't have to look inside don't cares when deciding to wake constraints     MetaV y args -> x == y || mm args   -- TODO: we really only have to look one level deep at meta args     where@@ -43,12 +44,14 @@ instance MentionsMeta Sort where   mentionsMeta x s = case s of     Type l     -> mentionsMeta x l-    Prop       -> False+    Prop l     -> mentionsMeta x l     Inf        -> False     SizeUniv   -> False     PiSort s1 s2 -> mentionsMeta x (s1, s2)     UnivSort s -> mentionsMeta x s     MetaS m es -> x == m || mentionsMeta x es+    DefS d es  -> mentionsMeta x es+    DummyS{}   -> False  instance MentionsMeta t => MentionsMeta (Abs t) where   mentionsMeta x = mentionsMeta x . unAbs@@ -79,6 +82,7 @@ instance MentionsMeta Elim where   mentionsMeta x Proj{} = False   mentionsMeta x (Apply v) = mentionsMeta x v+  mentionsMeta x (IApply y0 y1 v) = mentionsMeta x (y0,y1,v)  instance MentionsMeta a => MentionsMeta (Tele a) where   mentionsMeta x EmptyTel = False@@ -90,6 +94,7 @@ instance MentionsMeta Constraint where   mentionsMeta x c = case c of     ValueCmp _ t u v    -> mm (t, u, v)+    ValueCmpOnFace _ p t u v    -> mm ((p,t), u, v)     ElimCmp _ _ t v as bs -> mm ((t, v), (as, bs))     LevelCmp _ u v      -> mm (u, v)     TypeCmp _ a b       -> mm (a, b)@@ -99,12 +104,13 @@     UnBlock _           -> True   -- this might be a postponed typechecking                                   -- problem and we don't have a handle on                                   -- what metas it depends on-    FindInScope{}       -> True   -- this needs to be woken up for any meta+    FindInstance{}      -> True   -- this needs to be woken up for any meta     IsEmpty r t         -> mm t     CheckSizeLtSat t    -> mm t     CheckFunDef{}       -> True   -- not sure what metas this depends on     HasBiggerSort a     -> mm a     HasPTSRule a b      -> mm (a, b)+    UnquoteTactic bl tac hole goal -> Just x == bl     where       mm v = mentionsMeta x v 
src/full/Agda/TypeChecking/MetaVars/Occurs.hs view
@@ -23,6 +23,8 @@ import Data.Monoid import Data.Set (Set) import qualified Data.Set as Set+import qualified Data.IntMap as IntMap+import Data.IntMap (IntMap) import qualified Data.IntSet as IntSet import Data.IntSet (IntSet) import Data.Traversable (traverse)@@ -33,6 +35,7 @@ import Agda.Syntax.Internal  import Agda.TypeChecking.Monad+import Agda.TypeChecking.Monad.Builtin import qualified Agda.TypeChecking.Monad.Benchmark as Bench import Agda.TypeChecking.Reduce import Agda.TypeChecking.Pretty@@ -98,7 +101,7 @@ -}  modifyOccursCheckDefs :: (Set QName -> Set QName) -> TCM ()-modifyOccursCheckDefs f = stOccursCheckDefs %= f+modifyOccursCheckDefs f = stOccursCheckDefs `modifyTCLens` f  -- | Set the names of definitions to be looked at --   to the defs in the current mutual block.@@ -112,7 +115,7 @@    else do      reportSLn "tc.meta.occurs" 20 $        "initOccursCheck: we look into the following definitions:"-     mb <- asks envMutualBlock+     mb <- asksTC envMutualBlock      case mb of        Nothing -> do          reportSLn "tc.meta.occurs" 20 $ "(none)"@@ -125,7 +128,7 @@  -- | Is a def in the list of stuff to be checked? defNeedsChecking :: QName -> TCM Bool-defNeedsChecking d = Set.member d <$> use stOccursCheckDefs+defNeedsChecking d = Set.member d <$> useTC stOccursCheckDefs  -- | Remove a def from the list of defs to be looked at. tallyDef :: QName -> TCM ()@@ -201,12 +204,12 @@ occursCheck   :: (Occurs a, InstantiateFull a, PrettyTCM a)   => MetaId -> Vars -> a -> TCM a-occursCheck m xs v = disableDestructiveUpdate $ Bench.billTo [ Bench.Typing, Bench.OccursCheck ] $ do+occursCheck m xs v = Bench.billTo [ Bench.Typing, Bench.OccursCheck ] $ do   mv <- lookupMeta m   let ctx = if isIrrelevant (getMetaRelevance mv) then Irrel else StronglyRigid   initOccursCheck mv       -- TODO: Can we do this in a better way?-  let redo m = m -- disableDestructiveUpdate m >> m+  let redo m = m   -- First try without normalising the term   redo (occurs NoUnfold  ctx m xs v) `catchError` \_ -> do     initOccursCheck mv@@ -223,13 +226,13 @@           ( typeError . GenericError . show =<<             fsep [ text ("Cannot instantiate the metavariable " ++ prettyShow m ++ " to")                  , prettyTCM v-                 , text "since universe polymorphism is disabled"+                 , "since universe polymorphism is disabled"                  ]           ) {- else -}           ( typeError . GenericError . show =<<               fsep [ text ("Cannot instantiate the metavariable " ++ prettyShow m ++ " to solution")                    , prettyTCM v-                   , text "since it contains the variable"+                   , "since it contains the variable"                    , enterClosure cl $ \_ -> prettyTCM (Var i [])                    , text $ "which is not in scope of the metavariable or irrelevant in the metavariable but relevant in the solution"                    ]@@ -238,7 +241,7 @@           typeError . GenericError . show =<<             fsep [ text ("Cannot instantiate the metavariable " ++ prettyShow m ++ " to solution")                  , prettyTCM v-                 , text "since (part of) the solution was created in an irrelevant context."+                 , "since (part of) the solution was created in an irrelevant context."                  ]         _ -> throwError err       _ -> throwError err@@ -263,11 +266,11 @@             if (i `allowedVar` xs) then Var i <$> occ (weakly ctx) es else do               -- if the offending variable is of singleton type,               -- eta-expand it away-              reportSDoc "tc.meta.occurs" 35 $ text "offending variable: " <+> prettyTCM (var i)+              reportSDoc "tc.meta.occurs" 35 $ "offending variable: " <+> prettyTCM (var i)               t <-  typeOfBV i-              reportSDoc "tc.meta.occurs" 35 $ nest 2 $ text "of type " <+> prettyTCM t+              reportSDoc "tc.meta.occurs" 35 $ nest 2 $ "of type " <+> prettyTCM t               isST <- isSingletonType t-              reportSDoc "tc.meta.occurs" 35 $ nest 2 $ text "(after singleton test)"+              reportSDoc "tc.meta.occurs" 35 $ nest 2 $ "(after singleton test)"               case isST of                 -- cannot decide, blocked by meta-var                 Left mid -> patternViolation' 70 $ "Disallowed var " ++ show i ++ " not obviously singleton"@@ -279,13 +282,14 @@           Lam h f     -> Lam h <$> occ ctx f           Level l     -> Level <$> occ ctx l           Lit l       -> return v+          Dummy{}     -> return v           DontCare v  -> if ctx == Irrel then                            dontCare <$> occurs red ctx m xs v                          else                            abort (strongly ctx) $ MetaIrrelevantSolution m v           Def d es    -> do             drel <- relOfConst d-            unless (not (unusableRelevance drel) || ctx == Irrel) $ do+            unless (usableRelevance drel || ctx == Irrel) $ do               reportSDoc "tc.meta.occurs" 35 $ text ("relevance of definition: " ++ show drel)               abort ctx $ MetaIrrelevantSolution m $ Def d []             Def d <$> occDef d ctx es@@ -347,6 +351,7 @@       Lam h f    -> metaOccurs m f       Level l    -> metaOccurs m l       Lit l      -> return ()+      Dummy{}    -> return ()       DontCare v -> metaOccurs m v       Def d vs   -> metaOccurs m d >> metaOccurs m vs       Con c _ vs -> metaOccurs m vs@@ -367,6 +372,7 @@   occurs red ctx m xs def = __IMPOSSIBLE__    metaOccurs m Axiom{}                      = return ()+  metaOccurs m DataOrRecSig{}               = return ()   metaOccurs m Function{ funClauses = cls } = metaOccurs m cls   -- since a datatype is isomorphic to the sum of its constructor types   -- we check the constructor types@@ -376,6 +382,7 @@   metaOccurs m Constructor{}                = return ()   metaOccurs m Primitive{}                  = return ()   metaOccurs m AbstractDefn{}               = __IMPOSSIBLE__+  metaOccurs m GeneralizableVar{}           = __IMPOSSIBLE__  instance Occurs Clause where   occurs red ctx m xs cl = __IMPOSSIBLE__@@ -428,36 +435,47 @@     case s' of       PiSort s1 s2 -> uncurry PiSort <$> occurs red (weakly ctx) m xs (s1,s2)       Type a     -> Type <$> occurs red ctx m xs a-      Prop       -> return s'+      Prop a     -> Prop <$> occurs red ctx m xs a       Inf        -> return s'       SizeUniv   -> return s'       UnivSort s -> UnivSort <$> occurs red (weakly ctx) m xs s       MetaS x es -> do         MetaV x es <- occurs red ctx m xs (MetaV x es)         return $ MetaS x es+      DefS x es -> do+        Def x es <- occurs red ctx m xs (Def x es)+        return $ DefS x es+      DummyS{}   -> return s    metaOccurs m s = do     s <- instantiate s     case s of       PiSort s1 s2 -> metaOccurs m (s1,s2)       Type a     -> metaOccurs m a-      Prop       -> return ()+      Prop a     -> metaOccurs m a       Inf        -> return ()       SizeUniv   -> return ()       UnivSort s -> metaOccurs m s       MetaS x es -> metaOccurs m $ MetaV x es+      DefS d es  -> metaOccurs m $ Def d es+      DummyS{}   -> return ()  instance Occurs a => Occurs (Elim' a) where   occurs red ctx m xs e@(Proj _ f) = do     frel <- relOfConst f-    unless (not (unusableRelevance frel) || ctx == Irrel) $ do+    unless (usableRelevance frel || ctx == Irrel) $ do       reportSDoc "tc.meta.occurs" 35 $ text ("relevance of projection: " ++ show frel)       abort ctx $ MetaIrrelevantSolution m $ Def f []     return e   occurs red ctx m xs (Apply a) = Apply <$> occurs red ctx m xs a+  occurs red ctx m xs (IApply x y a)+    = IApply <$> occurs red ctx m xs x+             <*> occurs red ctx m xs y+             <*> occurs red ctx m xs a    metaOccurs m (Proj{} ) = return ()   metaOccurs m (Apply a) = metaOccurs m a+  metaOccurs m (IApply x y a) = metaOccurs m (x,(y,a))  instance (Occurs a, Subst t a) => Occurs (Abs a) where   occurs red ctx m xs b@(Abs   s x) = Abs   s <$> underAbstraction_ b (occurs red ctx m (liftUnderAbs xs))@@ -477,7 +495,7 @@   metaOccurs m a = metaOccurs m (unArg a)  instance Occurs a => Occurs (Dom a) where-  occurs red ctx m xs (Dom info x) = Dom info <$> occurs red ctx m xs x+  occurs red ctx m xs = traverse $ occurs red ctx m xs   metaOccurs m = metaOccurs m . unDom  instance (Occurs a, Occurs b) => Occurs (a,b) where@@ -511,12 +529,12 @@   caseEitherM (runExceptT $ mapM (hasBadRigid xs) $ map unArg vs)     (const $ return PrunedNothing) $ \ kills -> do     reportSDoc "tc.meta.kill" 10 $ vcat-      [ text "attempting kills"+      [ "attempting kills"       , nest 2 $ vcat-        [ text "m'    =" <+> pretty m'-        , text "xs    =" <+> prettyList (map (prettyTCM . var) xs)-        , text "vs    =" <+> prettyList (map prettyTCM vs)-        , text "kills =" <+> text (show kills)+        [ "m'    =" <+> pretty m'+        , "xs    =" <+> prettyList (map (prettyTCM . var) xs)+        , "vs    =" <+> prettyList (map prettyTCM vs)+        , "kills =" <+> text (show kills)         ]       ]     killArgs kills m'@@ -563,6 +581,7 @@     Con c _ es | otherwise -> failure     Lit{}        -> failure -- matchable     MetaV{}      -> failure -- potentially matchable+    Dummy{}      -> return False  -- | Check whether a term @Def f es@ is finally stuck. --   Currently, we give only a crude approximation.@@ -581,6 +600,7 @@       NotBlocked StuckOn{}   _ -> yes       NotBlocked AbsurdMatch _ -> yes       _                        -> no+    GeneralizableVar{} -> __IMPOSSIBLE__     _          -> no  -- | Check whether any of the variables (given as de Bruijn indices)@@ -638,6 +658,7 @@       Level l    -> fold l       MetaV{}    -> mempty       DontCare{} -> mempty+      Dummy{}    -> mempty     where fold = foldRigid f  instance FoldRigid Type where@@ -647,12 +668,14 @@   foldRigid f s =     case s of       Type l     -> fold l-      Prop       -> mempty+      Prop l     -> fold l       Inf        -> mempty       SizeUniv   -> mempty-      PiSort s1 s2 -> fold (s1, s2)+      PiSort s1 s2 -> mempty       UnivSort s -> fold s       MetaS{}    -> mempty+      DefS{}     -> mempty+      DummyS{}   -> mempty     where fold = foldRigid f  instance FoldRigid Level where@@ -689,6 +712,7 @@  instance FoldRigid a => FoldRigid (Elim' a) where   foldRigid f (Apply a) = foldRigid f a+  foldRigid f (IApply x y a) = foldRigid f (x,(y,a))   foldRigid f Proj{}    = mempty  instance FoldRigid a => FoldRigid [a] where@@ -712,7 +736,7 @@   | not (or kills) = return NothingToPrune  -- nothing to kill killArgs kills m = do   mv <- lookupMeta m-  allowAssign <- asks envAssignMetas+  allowAssign <- asksTC envAssignMetas   if mvFrozen mv == Frozen || not allowAssign then return PrunedNothing else do       -- Andreas 2011-04-26, we allow pruning in MetaV and MetaS       let a = jMetaType $ mvJudgement mv@@ -735,13 +759,13 @@     implies True  x = x     dbg kills' a a' =       reportSDoc "tc.meta.kill" 10 $ vcat-        [ text "after kill analysis"+        [ "after kill analysis"         , nest 2 $ vcat-          [ text "metavar =" <+> prettyTCM m-          , text "kills   =" <+> text (show kills)-          , text "kills'  =" <+> text (show kills')-          , text "oldType =" <+> prettyTCM a-          , text "newType =" <+> prettyTCM a'+          [ "metavar =" <+> prettyTCM m+          , "kills   =" <+> text (show kills)+          , "kills'  =" <+> text (show kills')+          , "oldType =" <+> prettyTCM a+          , "newType =" <+> prettyTCM a'           ]         ] @@ -822,7 +846,9 @@      | otherwise -> do         -- If there are non-rigid occurrences we need to reduce a to see if         -- we can get rid of them (#3177).-        forceNotFree (IntSet.difference xs rigid) a+        (fvs , a) <- forceNotFree (IntSet.difference xs rigid) a+        let xs = IntMap.keysSet $ IntMap.filter (== NotFree) fvs+        return (xs , a)  -- | Instantiate a meta variable with a new one that only takes --   the arguments which are not pruneable.@@ -845,7 +871,7 @@       judg = case mvJudgement mv of         HasType{} -> HasType __IMPOSSIBLE__ a         IsSort{}  -> IsSort  __IMPOSSIBLE__ a-  m' <- newMeta (mvInfo mv) (mvPriority mv) perm judg+  m' <- newMeta Instantiable (mvInfo mv) (mvPriority mv) perm judg   -- Andreas, 2010-10-15 eta expand new meta variable if necessary   etaExpandMetaSafe m'   let -- Arguments to new meta (de Bruijn indices)@@ -860,10 +886,10 @@   assignTerm m tel u  -- m tel := u   where     dbg m' u = reportSDoc "tc.meta.kill" 10 $ vcat-      [ text "actual killing"+      [ "actual killing"       , nest 2 $ vcat-        [ text "new meta:" <+> pretty m'-        , text "kills   :" <+> text (show kills)-        , text "inst    :" <+> pretty m <+> text ":=" <+> prettyTCM u+        [ "new meta:" <+> pretty m'+        , "kills   :" <+> text (show kills)+        , "inst    :" <+> pretty m <+> ":=" <+> prettyTCM u         ]       ]
src/full/Agda/TypeChecking/Monad/Base.hs view
@@ -9,3393 +9,3904 @@  import qualified Control.Concurrent as C import qualified Control.Exception as E-import Control.Monad.State-import Control.Monad.Reader-import Control.Monad.Writer hiding ((<>))-import Control.Monad.Trans.Maybe-import Control.Applicative hiding (empty)--import Data.Function-import Data.Int-import Data.IntMap (IntMap)-import qualified Data.IntMap as IntMap-import qualified Data.List as List-import Data.Maybe-import Data.Map (Map)-import qualified Data.Map as Map -- hiding (singleton, null, empty)-import Data.Monoid ( Monoid, mempty, mappend )-import Data.Set (Set)-import qualified Data.Set as Set -- hiding (singleton, null, empty)-import Data.Semigroup ( Semigroup, (<>), Any(..) )-import Data.Data (Data, toConstr)-import Data.Foldable (Foldable)-import Data.Traversable-import Data.IORef--import qualified System.Console.Haskeline as Haskeline--import Agda.Benchmarking (Benchmark, Phase)--import Agda.Syntax.Concrete (TopLevelModuleName)-import Agda.Syntax.Common-import qualified Agda.Syntax.Concrete as C-import Agda.Syntax.Concrete.Definitions-  (NiceDeclaration, DeclarationWarning, declarationWarningName)-import qualified Agda.Syntax.Abstract as A-import Agda.Syntax.Abstract (AllNames)-import Agda.Syntax.Internal as I-import Agda.Syntax.Internal.Pattern ()-import Agda.Syntax.Internal.Generic (TermLike(..))-import Agda.Syntax.Literal-import Agda.Syntax.Parser (PM(..), ParseWarning, runPMIO)-import Agda.Syntax.Parser.Monad (parseWarningName)-import Agda.Syntax.Treeless (Compiled)-import Agda.Syntax.Fixity-import Agda.Syntax.Position-import Agda.Syntax.Scope.Base-import qualified Agda.Syntax.Info as Info--import Agda.TypeChecking.CompiledClause-import Agda.TypeChecking.Positivity.Occurrence-import Agda.TypeChecking.Free.Lazy (Free(freeVars'), bind', bind)--import {-# SOURCE #-} Agda.Compiler.Backend---- import {-# SOURCE #-} Agda.Interaction.FindFile-import Agda.Interaction.Options-import Agda.Interaction.Options.Warnings-import Agda.Interaction.Response-  (InteractionOutputCallback, defaultInteractionOutputCallback, Response(..))-import Agda.Interaction.Highlighting.Precise-  (CompressedFile, HighlightingInfo)--import Agda.Utils.Except-  ( Error(strMsg)-  , ExceptT-  , MonadError(catchError, throwError)-  , runExceptT-  )--import Agda.Utils.Benchmark (MonadBench(..))-import Agda.Utils.FileName-import Agda.Utils.HashMap (HashMap)-import qualified Agda.Utils.HashMap as HMap-import Agda.Utils.Hash-import Agda.Utils.Lens-import Agda.Utils.List-import Agda.Utils.ListT-import Agda.Utils.Monad-import Agda.Utils.NonemptyList-import Agda.Utils.Null-import Agda.Utils.Permutation-import Agda.Utils.Pretty hiding ((<>))-import qualified Agda.Utils.Pretty as P-import Agda.Utils.Singleton-import Agda.Utils.Functor-import Agda.Utils.Function--#include "undefined.h"-import Agda.Utils.Impossible-------------------------------------------------------------------------------- * Type checking state------------------------------------------------------------------------------data TCState = TCSt-  { stPreScopeState   :: !PreScopeState-    -- ^ The state which is frozen after scope checking.-  , stPostScopeState  :: !PostScopeState-    -- ^ The state which is modified after scope checking.-  , stPersistentState :: !PersistentTCState-    -- ^ State which is forever, like a diamond.-  }--class Monad m => ReadTCState m where-  getTCState :: m TCState--instance Show TCState where-  show _ = "TCSt{}"--data PreScopeState = PreScopeState-  { stPreTokens             :: !CompressedFile -- from lexer-    -- ^ Highlighting info for tokens (but not those tokens for-    -- which highlighting exists in 'stSyntaxInfo').-  , stPreImports            :: !Signature  -- XX populated by scopec hecker-    -- ^ Imported declared identifiers.-    --   Those most not be serialized!-  , stPreImportedModules    :: !(Set ModuleName)  -- imports logic-  , stPreModuleToSource     :: !ModuleToSource   -- imports-  , stPreVisitedModules     :: !VisitedModules   -- imports-  , stPreScope              :: !ScopeInfo-    -- generated by scope checker, current file: which modules you have, public definitions, current file, maps concrete names to abstract names.-  , stPrePatternSyns        :: !A.PatternSynDefns-    -- ^ Pattern synonyms of the current file.  Serialized.-  , stPrePatternSynImports  :: !A.PatternSynDefns-    -- ^ Imported pattern synonyms.  Must not be serialized!-  , stPrePragmaOptions      :: !PragmaOptions-    -- ^ Options applying to the current file. @OPTIONS@-    -- pragmas only affect this field.-  , stPreImportedBuiltins   :: !(BuiltinThings PrimFun)-  , stPreImportedDisplayForms :: !DisplayForms-    -- ^ Display forms added by someone else to imported identifiers-  , stPreImportedInstanceDefs :: !InstanceTable-  , stPreForeignCode        :: !(Map BackendName [ForeignCode])-    -- ^ @{-# FOREIGN #-}@ code that should be included in the compiled output.-    -- Does not include code for imported modules.-  , stPreFreshInteractionId :: !InteractionId-  , stPreImportedUserWarnings :: !(Map A.QName String)-    -- ^ Imported @UserWarning@s, not to be stored in the @Interface@-  , stPreLocalUserWarnings    :: !(Map A.QName String)-    -- ^ Locally defined @UserWarning@s, to be stored in the @Interface@-  }--type DisambiguatedNames = IntMap A.QName--data PostScopeState = PostScopeState-  { stPostSyntaxInfo          :: !CompressedFile-    -- ^ Highlighting info.-  , stPostDisambiguatedNames  :: !DisambiguatedNames-    -- ^ Disambiguation carried out by the type checker.-    --   Maps position of first name character to disambiguated @'A.QName'@-    --   for each @'A.AmbiguousQName'@ already passed by the type checker.-  , stPostMetaStore           :: !MetaStore-  , stPostInteractionPoints   :: !InteractionPoints -- scope checker first-  , stPostAwakeConstraints    :: !Constraints-  , stPostSleepingConstraints :: !Constraints-  , stPostDirty               :: !Bool -- local-    -- ^ Dirty when a constraint is added, used to prevent pointer update.-    -- Currently unused.-  , stPostOccursCheckDefs     :: !(Set QName) -- local-    -- ^ Definitions to be considered during occurs check.-    --   Initialized to the current mutual block before the check.-    --   During occurs check, we remove definitions from this set-    --   as soon we have checked them.-  , stPostSignature           :: !Signature-    -- ^ Declared identifiers of the current file.-    --   These will be serialized after successful type checking.-  , stPostModuleCheckpoints   :: !(Map ModuleName CheckpointId)-    -- ^ For each module remember the checkpoint corresponding to the orignal-    --   context of the module parameters.-  , stPostImportsDisplayForms :: !DisplayForms-    -- ^ Display forms we add for imported identifiers-  , stPostCurrentModule       :: !(Maybe ModuleName)-    -- ^ The current module is available after it has been type-    -- checked.-  , stPostInstanceDefs        :: !TempInstanceTable-  , stPostStatistics          :: !Statistics-    -- ^ Counters to collect various statistics about meta variables etc.-    --   Only for current file.-  , stPostTCWarnings          :: ![TCWarning]-  , stPostMutualBlocks        :: !(Map MutualId MutualBlock)-  , stPostLocalBuiltins       :: !(BuiltinThings PrimFun)-  , stPostFreshMetaId         :: !MetaId-  , stPostFreshMutualId       :: !MutualId-  , stPostFreshProblemId      :: !ProblemId-  , stPostFreshCheckpointId   :: !CheckpointId-  , stPostFreshInt            :: !Int-  , stPostFreshNameId         :: !NameId-  , stPostAreWeCaching        :: !Bool-  }---- | A mutual block of names in the signature.-data MutualBlock = MutualBlock-  { mutualInfo  :: Info.MutualInfo-    -- ^ The original info of the mutual block.-  , mutualNames :: Set QName-  } deriving (Show, Eq)--instance Null MutualBlock where-  empty = MutualBlock empty empty---- | A part of the state which is not reverted when an error is thrown--- or the state is reset.-data PersistentTCState = PersistentTCSt-  { stDecodedModules    :: DecodedModules-  , stPersistentOptions :: CommandLineOptions-  , stInteractionOutputCallback  :: InteractionOutputCallback-    -- ^ Callback function to call when there is a response-    --   to give to the interactive frontend.-    --   See the documentation of 'InteractionOutputCallback'.-  , stBenchmark         :: !Benchmark-    -- ^ Structure to track how much CPU time was spent on which Agda phase.-    --   Needs to be a strict field to avoid space leaks!-  , stAccumStatistics   :: !Statistics-    -- ^ Should be strict field.-  , stLoadedFileCache   :: !(Maybe LoadedFileCache)-    -- ^ Cached typechecking state from the last loaded file.-    --   Should be Nothing when checking imports.-  , stPersistBackends   :: [Backend]-    -- ^ Current backends with their options-  }--data LoadedFileCache = LoadedFileCache-  { lfcCached  :: !CachedTypeCheckLog-  , lfcCurrent :: !CurrentTypeCheckLog-  }---- | A log of what the type checker does and states after the action is--- completed.  The cached version is stored first executed action first.-type CachedTypeCheckLog = [(TypeCheckAction, PostScopeState)]---- | Like 'CachedTypeCheckLog', but storing the log for an ongoing type--- checking of a module.  Stored in reverse order (last performed action--- first).-type CurrentTypeCheckLog = [(TypeCheckAction, PostScopeState)]---- | A complete log for a module will look like this:------   * 'Pragmas'------   * 'EnterSection', entering the main module.------   * 'Decl'/'EnterSection'/'LeaveSection', for declarations and nested---     modules------   * 'LeaveSection', leaving the main module.-data TypeCheckAction-  = EnterSection !Info.ModuleInfo !ModuleName ![A.TypedBindings]-  | LeaveSection !ModuleName-  | Decl !A.Declaration-    -- ^ Never a Section or ScopeDecl-  | Pragmas !PragmaOptions---- | Empty persistent state.--initPersistentState :: PersistentTCState-initPersistentState = PersistentTCSt-  { stPersistentOptions         = defaultOptions-  , stDecodedModules            = Map.empty-  , stInteractionOutputCallback = defaultInteractionOutputCallback-  , stBenchmark                 = empty-  , stAccumStatistics           = Map.empty-  , stLoadedFileCache           = Nothing-  , stPersistBackends           = []-  }---- | Empty state of type checker.--initPreScopeState :: PreScopeState-initPreScopeState = PreScopeState-  { stPreTokens               = mempty-  , stPreImports              = emptySignature-  , stPreImportedModules      = Set.empty-  , stPreModuleToSource       = Map.empty-  , stPreVisitedModules       = Map.empty-  , stPreScope                = emptyScopeInfo-  , stPrePatternSyns          = Map.empty-  , stPrePatternSynImports    = Map.empty-  , stPrePragmaOptions        = defaultInteractionOptions-  , stPreImportedBuiltins     = Map.empty-  , stPreImportedDisplayForms = HMap.empty-  , stPreImportedInstanceDefs = Map.empty-  , stPreForeignCode          = Map.empty-  , stPreFreshInteractionId   = 0-  , stPreImportedUserWarnings = Map.empty-  , stPreLocalUserWarnings    = Map.empty-  }--initPostScopeState :: PostScopeState-initPostScopeState = PostScopeState-  { stPostSyntaxInfo           = mempty-  , stPostDisambiguatedNames   = IntMap.empty-  , stPostMetaStore            = Map.empty-  , stPostInteractionPoints    = Map.empty-  , stPostAwakeConstraints     = []-  , stPostSleepingConstraints  = []-  , stPostDirty                = False-  , stPostOccursCheckDefs      = Set.empty-  , stPostSignature            = emptySignature-  , stPostModuleCheckpoints    = Map.empty-  , stPostImportsDisplayForms  = HMap.empty-  , stPostCurrentModule        = Nothing-  , stPostInstanceDefs         = (Map.empty , Set.empty)-  , stPostStatistics           = Map.empty-  , stPostTCWarnings           = []-  , stPostMutualBlocks         = Map.empty-  , stPostLocalBuiltins        = Map.empty-  , stPostFreshMetaId          = 0-  , stPostFreshMutualId        = 0-  , stPostFreshProblemId       = 1-  , stPostFreshCheckpointId    = 1-  , stPostFreshInt             = 0-  , stPostFreshNameId           = NameId 0 0-  , stPostAreWeCaching         = False-  }--initState :: TCState-initState = TCSt-  { stPreScopeState   = initPreScopeState-  , stPostScopeState  = initPostScopeState-  , stPersistentState = initPersistentState-  }---- * st-prefixed lenses---------------------------------------------------------------------------stTokens :: Lens' CompressedFile TCState-stTokens f s =-  f (stPreTokens (stPreScopeState s)) <&>-  \x -> s {stPreScopeState = (stPreScopeState s) {stPreTokens = x}}--stImports :: Lens' Signature TCState-stImports f s =-  f (stPreImports (stPreScopeState s)) <&>-  \x -> s {stPreScopeState = (stPreScopeState s) {stPreImports = x}}--stImportedModules :: Lens' (Set ModuleName) TCState-stImportedModules f s =-  f (stPreImportedModules (stPreScopeState s)) <&>-  \x -> s {stPreScopeState = (stPreScopeState s) {stPreImportedModules = x}}--stModuleToSource :: Lens' ModuleToSource TCState-stModuleToSource f s =-  f (stPreModuleToSource (stPreScopeState s)) <&>-  \x -> s {stPreScopeState = (stPreScopeState s) {stPreModuleToSource = x}}--stVisitedModules :: Lens' VisitedModules TCState-stVisitedModules f s =-  f (stPreVisitedModules (stPreScopeState s)) <&>-  \x -> s {stPreScopeState = (stPreScopeState s) {stPreVisitedModules = x}}--stScope :: Lens' ScopeInfo TCState-stScope f s =-  f (stPreScope (stPreScopeState s)) <&>-  \x -> s {stPreScopeState = (stPreScopeState s) {stPreScope = x}}--stPatternSyns :: Lens' A.PatternSynDefns TCState-stPatternSyns f s =-  f (stPrePatternSyns (stPreScopeState s)) <&>-  \x -> s {stPreScopeState = (stPreScopeState s) {stPrePatternSyns = x}}--stPatternSynImports :: Lens' A.PatternSynDefns TCState-stPatternSynImports f s =-  f (stPrePatternSynImports (stPreScopeState s)) <&>-  \x -> s {stPreScopeState = (stPreScopeState s) {stPrePatternSynImports = x}}--stPragmaOptions :: Lens' PragmaOptions TCState-stPragmaOptions f s =-  f (stPrePragmaOptions (stPreScopeState s)) <&>-  \x -> s {stPreScopeState = (stPreScopeState s) {stPrePragmaOptions = x}}--stImportedBuiltins :: Lens' (BuiltinThings PrimFun) TCState-stImportedBuiltins f s =-  f (stPreImportedBuiltins (stPreScopeState s)) <&>-  \x -> s {stPreScopeState = (stPreScopeState s) {stPreImportedBuiltins = x}}--stForeignCode :: Lens' (Map BackendName [ForeignCode]) TCState-stForeignCode f s =-  f (stPreForeignCode (stPreScopeState s)) <&>-  \x -> s {stPreScopeState = (stPreScopeState s) {stPreForeignCode = x}}--stFreshInteractionId :: Lens' InteractionId TCState-stFreshInteractionId f s =-  f (stPreFreshInteractionId (stPreScopeState s)) <&>-  \x -> s {stPreScopeState = (stPreScopeState s) {stPreFreshInteractionId = x}}--stImportedUserWarnings :: Lens' (Map A.QName String) TCState-stImportedUserWarnings f s =-  f (stPreImportedUserWarnings (stPreScopeState s)) <&>-  \ x -> s {stPreScopeState = (stPreScopeState s) {stPreImportedUserWarnings = x}}--stLocalUserWarnings :: Lens' (Map A.QName String) TCState-stLocalUserWarnings f s =-  f (stPreLocalUserWarnings (stPreScopeState s)) <&>-  \ x -> s {stPreScopeState = (stPreScopeState s) {stPreLocalUserWarnings = x}}--getUserWarnings :: MonadState TCState m => m (Map A.QName String)-getUserWarnings = do-  iuw <- use stImportedUserWarnings-  luw <- use stLocalUserWarnings-  return $ iuw `Map.union` luw--stBackends :: Lens' [Backend] TCState-stBackends f s =-  f (stPersistBackends (stPersistentState s)) <&>-  \x -> s {stPersistentState = (stPersistentState s) {stPersistBackends = x}}--stFreshNameId :: Lens' NameId TCState-stFreshNameId f s =-  f (stPostFreshNameId (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostFreshNameId = x}}--stSyntaxInfo :: Lens' CompressedFile TCState-stSyntaxInfo f s =-  f (stPostSyntaxInfo (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostSyntaxInfo = x}}--stDisambiguatedNames :: Lens' DisambiguatedNames TCState-stDisambiguatedNames f s =-  f (stPostDisambiguatedNames (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostDisambiguatedNames = x}}--stMetaStore :: Lens' MetaStore TCState-stMetaStore f s =-  f (stPostMetaStore (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostMetaStore = x}}--stInteractionPoints :: Lens' InteractionPoints TCState-stInteractionPoints f s =-  f (stPostInteractionPoints (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostInteractionPoints = x}}--stAwakeConstraints :: Lens' Constraints TCState-stAwakeConstraints f s =-  f (stPostAwakeConstraints (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostAwakeConstraints = x}}--stSleepingConstraints :: Lens' Constraints TCState-stSleepingConstraints f s =-  f (stPostSleepingConstraints (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostSleepingConstraints = x}}--stDirty :: Lens' Bool TCState-stDirty f s =-  f (stPostDirty (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostDirty = x}}--stOccursCheckDefs :: Lens' (Set QName) TCState-stOccursCheckDefs f s =-  f (stPostOccursCheckDefs (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostOccursCheckDefs = x}}--stSignature :: Lens' Signature TCState-stSignature f s =-  f (stPostSignature (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostSignature = x}}--stModuleCheckpoints :: Lens' (Map ModuleName CheckpointId) TCState-stModuleCheckpoints f s =-  f (stPostModuleCheckpoints (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostModuleCheckpoints = x}}--stImportsDisplayForms :: Lens' DisplayForms TCState-stImportsDisplayForms f s =-  f (stPostImportsDisplayForms (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostImportsDisplayForms = x}}--stImportedDisplayForms :: Lens' DisplayForms TCState-stImportedDisplayForms f s =-  f (stPreImportedDisplayForms (stPreScopeState s)) <&>-  \x -> s {stPreScopeState = (stPreScopeState s) {stPreImportedDisplayForms = x}}--stCurrentModule :: Lens' (Maybe ModuleName) TCState-stCurrentModule f s =-  f (stPostCurrentModule (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostCurrentModule = x}}--stImportedInstanceDefs :: Lens' InstanceTable TCState-stImportedInstanceDefs f s =-  f (stPreImportedInstanceDefs (stPreScopeState s)) <&>-  \x -> s {stPreScopeState = (stPreScopeState s) {stPreImportedInstanceDefs = x}}--stInstanceDefs :: Lens' TempInstanceTable TCState-stInstanceDefs f s =-  f (stPostInstanceDefs (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostInstanceDefs = x}}--stStatistics :: Lens' Statistics TCState-stStatistics f s =-  f (stPostStatistics (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostStatistics = x}}--stTCWarnings :: Lens' [TCWarning] TCState-stTCWarnings f s =-  f (stPostTCWarnings (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostTCWarnings = x}}--stMutualBlocks :: Lens' (Map MutualId MutualBlock) TCState-stMutualBlocks f s =-  f (stPostMutualBlocks (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostMutualBlocks = x}}--stLocalBuiltins :: Lens' (BuiltinThings PrimFun) TCState-stLocalBuiltins f s =-  f (stPostLocalBuiltins (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostLocalBuiltins = x}}--stFreshMetaId :: Lens' MetaId TCState-stFreshMetaId f s =-  f (stPostFreshMetaId (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostFreshMetaId = x}}--stFreshMutualId :: Lens' MutualId TCState-stFreshMutualId f s =-  f (stPostFreshMutualId (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostFreshMutualId = x}}--stFreshProblemId :: Lens' ProblemId TCState-stFreshProblemId f s =-  f (stPostFreshProblemId (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostFreshProblemId = x}}--stFreshCheckpointId :: Lens' CheckpointId TCState-stFreshCheckpointId f s =-  f (stPostFreshCheckpointId (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostFreshCheckpointId = x}}--stFreshInt :: Lens' Int TCState-stFreshInt f s =-  f (stPostFreshInt (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostFreshInt = x}}---- use @areWeCaching@ from the Caching module instead.-stAreWeCaching :: Lens' Bool TCState-stAreWeCaching f s =-  f (stPostAreWeCaching (stPostScopeState s)) <&>-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostAreWeCaching = x}}--stBuiltinThings :: TCState -> BuiltinThings PrimFun-stBuiltinThings s = (s^.stLocalBuiltins) `Map.union` (s^.stImportedBuiltins)---- * Fresh things---------------------------------------------------------------------------class Enum i => HasFresh i where-    freshLens :: Lens' i TCState-    nextFresh' :: i -> i-    nextFresh' = succ--nextFresh :: HasFresh i => TCState -> (i, TCState)-nextFresh s =-  let !c = s^.freshLens-  in (c, set freshLens (nextFresh' c) s)--fresh :: (HasFresh i, MonadState TCState m) => m i-fresh =-    do  !s <- get-        let (!c , !s') = nextFresh s-        put s'-        return c--instance HasFresh MetaId where-  freshLens = stFreshMetaId--instance HasFresh MutualId where-  freshLens = stFreshMutualId--instance HasFresh InteractionId where-  freshLens = stFreshInteractionId--instance HasFresh NameId where-  freshLens = stFreshNameId-  -- nextFresh increments the current fresh name by 2 so @NameId@s used-  -- before caching starts do not overlap with the ones used after.-  nextFresh' = succ . succ--instance HasFresh Int where-  freshLens = stFreshInt--newtype ProblemId = ProblemId Nat-  deriving (Data, Eq, Ord, Enum, Real, Integral, Num)---- TODO: 'Show' should output Haskell-parseable representations.--- The following instance is deprecated, and Pretty[TCM] should be used--- instead. Later, simply derive Show for this type.---- ASR (28 December 2014). This instance is not used anymore (module--- the test suite) when reporting errors. See Issue 1293.---- This particular Show instance is ok because of the Num instance.-instance Show ProblemId where-  show (ProblemId n) = show n--instance Pretty ProblemId where-  pretty (ProblemId n) = pretty n--instance HasFresh ProblemId where-  freshLens = stFreshProblemId--newtype CheckpointId = CheckpointId Int-  deriving (Data, Eq, Ord, Enum, Real, Integral, Num)--instance Show CheckpointId where-  show (CheckpointId n) = show n--instance Pretty CheckpointId where-  pretty (CheckpointId n) = pretty n--instance HasFresh CheckpointId where-  freshLens = stFreshCheckpointId--freshName :: MonadState TCState m => Range -> String -> m Name-freshName r s = do-  i <- fresh-  return $ mkName r i s--freshNoName :: MonadState TCState m => Range -> m Name-freshNoName r =-    do  i <- fresh-        return $ Name i (C.NoName noRange i) r noFixity'--freshNoName_ :: MonadState TCState m => m Name-freshNoName_ = freshNoName noRange---- | Create a fresh name from @a@.-class FreshName a where-  freshName_ :: MonadState TCState m => a -> m Name--instance FreshName (Range, String) where-  freshName_ = uncurry freshName--instance FreshName String where-  freshName_ = freshName noRange--instance FreshName Range where-  freshName_ = freshNoName--instance FreshName () where-  freshName_ () = freshNoName_-------------------------------------------------------------------------------- ** Managing file names-------------------------------------------------------------------------------- | Maps top-level module names to the corresponding source file--- names.--type ModuleToSource = Map TopLevelModuleName AbsolutePath---- | Maps source file names to the corresponding top-level module--- names.--type SourceToModule = Map AbsolutePath TopLevelModuleName---- | Creates a 'SourceToModule' map based on 'stModuleToSource'.------   O(n log n).------   For a single reverse lookup in 'stModuleToSource',---   rather use 'lookupModuleFromSourse'.--sourceToModule :: TCM SourceToModule-sourceToModule =-  Map.fromList-     .  List.map (\(m, f) -> (f, m))-     .  Map.toList-    <$> use stModuleToSource---- | Lookup an 'AbsolutePath' in 'sourceToModule'.------   O(n).--lookupModuleFromSource :: AbsolutePath -> TCM (Maybe TopLevelModuleName)-lookupModuleFromSource f =-  fmap fst . List.find ((f ==) . snd) . Map.toList <$> use stModuleToSource-------------------------------------------------------------------------------- ** Interface------------------------------------------------------------------------------data ModuleInfo = ModuleInfo-  { miInterface  :: Interface-  , miWarnings   :: Bool-    -- ^ 'True' if warnings were encountered when the module was type-    -- checked.-  }---- Note that the use of 'C.TopLevelModuleName' here is a potential--- performance problem, because these names do not contain unique--- identifiers.--type VisitedModules = Map C.TopLevelModuleName ModuleInfo-type DecodedModules = Map C.TopLevelModuleName Interface--data ForeignCode = ForeignCode Range String-  deriving Show--data Interface = Interface-  { iSourceHash      :: Hash-    -- ^ Hash of the source code.-  , iImportedModules :: [(ModuleName, Hash)]-    -- ^ Imported modules and their hashes.-  , iModuleName      :: ModuleName-    -- ^ Module name of this interface.-  , iScope           :: Map ModuleName Scope-    -- ^ Scope defined by this module.-    ---    --   Andreas, AIM XX: Too avoid duplicate serialization, this field is-    --   not serialized, so if you deserialize an interface, @iScope@-    --   will be empty.-    --   But 'constructIScope' constructs 'iScope' from 'iInsideScope'.-  , iInsideScope     :: ScopeInfo-    -- ^ Scope after we loaded this interface.-    --   Used in 'Agda.Interaction.BasicOps.AtTopLevel'-    --   and     'Agda.Interaction.CommandLine.interactionLoop'.-  , iSignature       :: Signature-  , iDisplayForms    :: DisplayForms-    -- ^ Display forms added for imported identifiers.-  , iUserWarnings    :: Map A.QName String-    -- ^ User warnings for imported identifiers-  , iBuiltin         :: BuiltinThings (String, QName)-  , iForeignCode     :: Map BackendName [ForeignCode]-  , iHighlighting    :: HighlightingInfo-  , iPragmaOptions   :: [OptionsPragma]-                        -- ^ Pragma options set in the file.-  , iPatternSyns     :: A.PatternSynDefns-  , iWarnings        :: [TCWarning]-  }-  deriving Show--instance Pretty Interface where-  pretty (Interface sourceH importedM moduleN scope insideS signature display-                    userwarn builtin foreignCode highlighting pragmaO patternS-                    warnings) =-    hang (text "Interface") 2 $ vcat-      [ text "source hash:"         <+> (pretty . show) sourceH-      , text "imported modules:"    <+> (pretty . show) importedM-      , text "module name:"         <+> pretty moduleN-      , text "scope:"               <+> (pretty . show) scope-      , text "inside scope:"        <+> (pretty . show) insideS-      , text "signature:"           <+> (pretty . show) signature-      , text "display:"             <+> (pretty . show) display-      , text "user warnings:"       <+> (pretty . show) userwarn-      , text "builtin:"             <+> (pretty . show) builtin-      , text "Foreign code:"        <+> (pretty . show) foreignCode-      , text "highlighting:"        <+> (pretty . show) highlighting-      , text "pragma options:"      <+> (pretty . show) pragmaO-      , text "pattern syns:"        <+> (pretty . show) patternS-      , text "warnings:"            <+> (pretty . show) warnings-      ]---- | Combines the source hash and the (full) hashes of the imported modules.-iFullHash :: Interface -> Hash-iFullHash i = combineHashes $ iSourceHash i : List.map snd (iImportedModules i)-------------------------------------------------------------------------------- ** Closure------------------------------------------------------------------------------data Closure a = Closure-  { clSignature        :: Signature-  , clEnv              :: TCEnv-  , clScope            :: ScopeInfo-  , clModuleCheckpoints :: Map ModuleName CheckpointId-  , clValue            :: a-  }-    deriving (Data, Functor, Foldable)--instance Show a => Show (Closure a) where-  show cl = "Closure { clValue = " ++ show (clValue cl) ++ " }"--instance HasRange a => HasRange (Closure a) where-    getRange = getRange . clValue--buildClosure :: a -> TCM (Closure a)-buildClosure x = do-    env   <- ask-    sig   <- use stSignature-    scope <- use stScope-    cps   <- use stModuleCheckpoints-    return $ Closure sig env scope cps x-------------------------------------------------------------------------------- ** Constraints------------------------------------------------------------------------------type Constraints = [ProblemConstraint]--data ProblemConstraint = PConstr-  { constraintProblems :: Set ProblemId-  , theConstraint      :: Closure Constraint-  }-  deriving (Data, Show)--instance HasRange ProblemConstraint where-  getRange = getRange . theConstraint--data Constraint-  = ValueCmp Comparison Type Term Term-  | ElimCmp [Polarity] [IsForced] Type Term [Elim] [Elim]-  | TypeCmp Comparison Type Type-  | TelCmp Type Type Comparison Telescope Telescope -- ^ the two types are for the error message only-  | SortCmp Comparison Sort Sort-  | LevelCmp Comparison Level Level---  | ShortCut MetaId Term Type---    -- ^ A delayed instantiation.  Replaces @ValueCmp@ in 'postponeTypeCheckingProblem'.-  | HasBiggerSort Sort-  | HasPTSRule Sort (Abs Sort)-  | UnBlock MetaId-  | Guarded Constraint ProblemId-  | IsEmpty Range Type-    -- ^ The range is the one of the absurd pattern.-  | CheckSizeLtSat Term-    -- ^ Check that the 'Term' is either not a SIZELT or a non-empty SIZELT.-  | FindInScope MetaId (Maybe MetaId) (Maybe [Candidate])-    -- ^ the first argument is the instance argument, the second one is the meta-    --   on which the constraint may be blocked on and the third one is the list-    --   of candidates (or Nothing if we haven’t determined the list of-    --   candidates yet)-  | CheckFunDef Delayed Info.DefInfo QName [A.Clause]-  deriving (Data, Show)--instance HasRange Constraint where-  getRange (IsEmpty r t) = r-  getRange _ = noRange-{- no Range instances for Term, Type, Elm, Tele, Sort, Level, MetaId-  getRange (ValueCmp cmp a u v) = getRange (a,u,v)-  getRange (ElimCmp pol a v es es') = getRange (a,v,es,es')-  getRange (TypeCmp cmp a b) = getRange (a,b)-  getRange (TelCmp a b cmp tel tel') = getRange (a,b,tel,tel')-  getRange (SortCmp cmp s s') = getRange (s,s')-  getRange (LevelCmp cmp l l') = getRange (l,l')-  getRange (UnBlock x) = getRange x-  getRange (Guarded c pid) = getRange c-  getRange (FindInScope x cands) = getRange x--}--instance Free Constraint where-  freeVars' c =-    case c of-      ValueCmp _ t u v      -> freeVars' (t, (u, v))-      ElimCmp _ _ t u es es'  -> freeVars' ((t, u), (es, es'))-      TypeCmp _ t t'        -> freeVars' (t, t')-      TelCmp _ _ _ tel tel' -> freeVars' (tel, tel')-      SortCmp _ s s'        -> freeVars' (s, s')-      LevelCmp _ l l'       -> freeVars' (l, l')-      UnBlock _             -> mempty-      Guarded c _           -> freeVars' c-      IsEmpty _ t           -> freeVars' t-      CheckSizeLtSat u      -> freeVars' u-      FindInScope _ _ cs    -> freeVars' cs-      CheckFunDef _ _ _ _   -> mempty-      HasBiggerSort s       -> freeVars' s-      HasPTSRule s1 s2      -> freeVars' (s1 , s2)--instance TermLike Constraint where-  foldTerm f = \case-      ValueCmp _ t u v       -> foldTerm f (t, u, v)-      ElimCmp _ _ t u es es' -> foldTerm f (t, u, es, es')-      TypeCmp _ t t'         -> foldTerm f (t, t')-      LevelCmp _ l l'        -> foldTerm f (l, l')-      IsEmpty _ t            -> foldTerm f t-      CheckSizeLtSat u       -> foldTerm f u-      TelCmp _ _ _ tel1 tel2 -> __IMPOSSIBLE__  -- foldTerm f (tel1, tel2) -- Not yet implemented-      SortCmp _ s1 s2        -> __IMPOSSIBLE__  -- foldTerm f (s1, s2) -- Not yet implemented-      UnBlock _              -> __IMPOSSIBLE__  -- mempty     -- Not yet implemented-      Guarded c _            -> __IMPOSSIBLE__  -- foldTerm c -- Not yet implemented-      FindInScope _ _ cs     -> __IMPOSSIBLE__  -- Not yet implemented-      CheckFunDef _ _ _ _    -> __IMPOSSIBLE__  -- Not yet implemented-      HasBiggerSort _        -> __IMPOSSIBLE__  -- Not yet implemented-      HasPTSRule _ _         -> __IMPOSSIBLE__  -- Not yet implemented-  traverseTermM f c = __IMPOSSIBLE__ -- Not yet implemented---data Comparison = CmpEq | CmpLeq-  deriving (Eq, Data, Show)--instance Pretty Comparison where-  pretty CmpEq  = text "="-  pretty CmpLeq = text "=<"---- | An extension of 'Comparison' to @>=@.-data CompareDirection = DirEq | DirLeq | DirGeq-  deriving (Eq, Show)--instance Pretty CompareDirection where-  pretty = text . \case-    DirEq  -> "="-    DirLeq -> "=<"-    DirGeq -> ">="---- | Embed 'Comparison' into 'CompareDirection'.-fromCmp :: Comparison -> CompareDirection-fromCmp CmpEq  = DirEq-fromCmp CmpLeq = DirLeq---- | Flip the direction of comparison.-flipCmp :: CompareDirection -> CompareDirection-flipCmp DirEq  = DirEq-flipCmp DirLeq = DirGeq-flipCmp DirGeq = DirLeq---- | Turn a 'Comparison' function into a 'CompareDirection' function.------   Property: @dirToCmp f (fromCmp cmp) = f cmp@-dirToCmp :: (Comparison -> a -> a -> c) -> CompareDirection -> a -> a -> c-dirToCmp cont DirEq  = cont CmpEq-dirToCmp cont DirLeq = cont CmpLeq-dirToCmp cont DirGeq = flip $ cont CmpLeq-------------------------------------------------------------------------------- * Open things-------------------------------------------------------------------------------- | A thing tagged with the context it came from.-data Open a = OpenThing { openThingCheckpoint :: CheckpointId, openThing :: a }-    deriving (Data, Show, Functor, Foldable, Traversable)--instance Decoration Open where-  traverseF f (OpenThing cp x) = OpenThing cp <$> f x-------------------------------------------------------------------------------- * Judgements------ Used exclusively for typing of meta variables.-------------------------------------------------------------------------------- | Parametrized since it is used without MetaId when creating a new meta.-data Judgement a-  = HasType { jMetaId :: a, jMetaType :: Type }-  | IsSort  { jMetaId :: a, jMetaType :: Type } -- Andreas, 2011-04-26: type needed for higher-order sort metas--instance Show a => Show (Judgement a) where-    show (HasType a t) = show a ++ " : " ++ show t-    show (IsSort  a t) = show a ++ " :sort " ++ show t-------------------------------------------------------------------------------- ** Meta variables------------------------------------------------------------------------------data MetaVariable =-        MetaVar { mvInfo          :: MetaInfo-                , mvPriority      :: MetaPriority -- ^ some metavariables are more eager to be instantiated-                , mvPermutation   :: Permutation-                  -- ^ a metavariable doesn't have to depend on all variables-                  --   in the context, this "permutation" will throw away the-                  --   ones it does not depend on-                , mvJudgement     :: Judgement MetaId-                , mvInstantiation :: MetaInstantiation-                , mvListeners     :: Set Listener -- ^ meta variables scheduled for eta-expansion but blocked by this one-                , mvFrozen        :: Frozen -- ^ are we past the point where we can instantiate this meta variable?-                }--data Listener = EtaExpand MetaId-              | CheckConstraint Nat ProblemConstraint--instance Eq Listener where-  EtaExpand       x   == EtaExpand       y   = x == y-  CheckConstraint x _ == CheckConstraint y _ = x == y-  _ == _ = False--instance Ord Listener where-  EtaExpand       x   `compare` EtaExpand       y   = x `compare` y-  CheckConstraint x _ `compare` CheckConstraint y _ = x `compare` y-  EtaExpand{} `compare` CheckConstraint{} = LT-  CheckConstraint{} `compare` EtaExpand{} = GT---- | Frozen meta variable cannot be instantiated by unification.---   This serves to prevent the completion of a definition by its use---   outside of the current block.---   (See issues 118, 288, 399).-data Frozen-  = Frozen        -- ^ Do not instantiate.-  | Instantiable-    deriving (Eq, Show)--data MetaInstantiation-        = InstV [Arg String] Term -- ^ solved by term (abstracted over some free variables)-        | Open               -- ^ unsolved-        | OpenIFS            -- ^ open, to be instantiated as "implicit from scope"-        | BlockedConst Term  -- ^ solution blocked by unsolved constraints-        | PostponedTypeCheckingProblem (Closure TypeCheckingProblem) (TCM Bool)---- | Solving a 'CheckArgs' constraint may or may not check the target type. If---   it did, it returns a handle to any unsolved constraints.-data CheckedTarget = CheckedTarget (Maybe ProblemId)-                   | NotCheckedTarget--data TypeCheckingProblem-  = CheckExpr A.Expr Type-  | CheckArgs ExpandHidden Range [NamedArg A.Expr] Type Type (Elims -> Type -> CheckedTarget -> TCM Term)-  | CheckLambda (Arg ([WithHiding Name], Maybe Type)) A.Expr Type-    -- ^ @(λ (xs : t₀) → e) : t@-    --   This is not an instance of 'CheckExpr' as the domain type-    --   has already been checked.-    --   For example, when checking-    --     @(λ (x y : Fin _) → e) : (x : Fin n) → ?@-    --   we want to postpone @(λ (y : Fin n) → e) : ?@ where @Fin n@-    --   is a 'Type' rather than an 'A.Expr'.-  | UnquoteTactic Term Term Type   -- ^ First argument is computation and the others are hole and goal type--instance Show MetaInstantiation where-  show (InstV tel t) = "InstV " ++ show tel ++ " (" ++ show t ++ ")"-  show Open      = "Open"-  show OpenIFS   = "OpenIFS"-  show (BlockedConst t) = "BlockedConst (" ++ show t ++ ")"-  show (PostponedTypeCheckingProblem{}) = "PostponedTypeCheckingProblem (...)"---- | Meta variable priority:---   When we have an equation between meta-variables, which one---   should be instantiated?------   Higher value means higher priority to be instantiated.-newtype MetaPriority = MetaPriority Int-    deriving (Eq , Ord , Show)--data RunMetaOccursCheck-  = RunMetaOccursCheck-  | DontRunMetaOccursCheck-  deriving (Eq , Ord , Show)---- | @MetaInfo@ is cloned from one meta to the next during pruning.-data MetaInfo = MetaInfo-  { miClosRange       :: Closure Range -- TODO: Not so nice. But we want both to have the environment of the meta (Closure) and its range.---  , miRelevance       :: Relevance          -- ^ Created in irrelevant position?-  , miMetaOccursCheck :: RunMetaOccursCheck -- ^ Run the extended occurs check that goes in definitions?-  , miNameSuggestion  :: MetaNameSuggestion-    -- ^ Used for printing.-    --   @Just x@ if meta-variable comes from omitted argument with name @x@.-  }---- | Name suggestion for meta variable.  Empty string means no suggestion.-type MetaNameSuggestion = String---- | For printing, we couple a meta with its name suggestion.-data NamedMeta = NamedMeta-  { nmSuggestion :: MetaNameSuggestion-  , nmid         :: MetaId-  }--instance Pretty NamedMeta where-  pretty (NamedMeta "" x) = pretty x-  pretty (NamedMeta "_" x) = pretty x-  pretty (NamedMeta s  x) = text $ "_" ++ s ++ prettyShow x--type MetaStore = Map MetaId MetaVariable--instance HasRange MetaInfo where-  getRange = clValue . miClosRange--instance HasRange MetaVariable where-    getRange m = getRange $ getMetaInfo m--instance SetRange MetaInfo where-  setRange r m = m { miClosRange = (miClosRange m) { clValue = r }}--instance SetRange MetaVariable where-  setRange r m = m { mvInfo = setRange r (mvInfo m) }--normalMetaPriority :: MetaPriority-normalMetaPriority = MetaPriority 0--lowMetaPriority :: MetaPriority-lowMetaPriority = MetaPriority (-10)--highMetaPriority :: MetaPriority-highMetaPriority = MetaPriority 10--getMetaInfo :: MetaVariable -> Closure Range-getMetaInfo = miClosRange . mvInfo--getMetaScope :: MetaVariable -> ScopeInfo-getMetaScope m = clScope $ getMetaInfo m--getMetaEnv :: MetaVariable -> TCEnv-getMetaEnv m = clEnv $ getMetaInfo m--getMetaSig :: MetaVariable -> Signature-getMetaSig m = clSignature $ getMetaInfo m--getMetaRelevance :: MetaVariable -> Relevance-getMetaRelevance = envRelevance . getMetaEnv-------------------------------------------------------------------------------- ** Interaction meta variables-------------------------------------------------------------------------------- | Interaction points are created by the scope checker who sets the range.---   The meta variable is created by the type checker and then hooked up to the---   interaction point.-data InteractionPoint = InteractionPoint-  { ipRange :: Range        -- ^ The position of the interaction point.-  , ipMeta  :: Maybe MetaId -- ^ The meta variable, if any, holding the type etc.-  , ipSolved:: Bool         -- ^ Has this interaction point already been solved?-  , ipClause:: IPClause-      -- ^ The clause of the interaction point (if any).-      --   Used for case splitting.-  }--instance Eq InteractionPoint where (==) = (==) `on` ipMeta---- | Data structure managing the interaction points.------   We never remove interaction points from this map, only set their---   'ipSolved' to @True@.  (Issue #2368)-type InteractionPoints = Map InteractionId InteractionPoint---- | Which clause is an interaction point located in?-data IPClause = IPClause-  { ipcQName    :: QName  -- ^ The name of the function.-  , ipcClauseNo :: Int    -- ^ The number of the clause of this function.-  , ipcClause   :: A.RHS  -- ^ The original AST clause rhs.-  }-  | IPNoClause -- ^ The interaction point is not in the rhs of a clause.-  deriving Data--instance Eq IPClause where-  IPNoClause     == IPNoClause       = True-  IPClause x i _ == IPClause x' i' _ = x == x' && i == i'-  _              == _                = False-------------------------------------------------------------------------------- ** Signature------------------------------------------------------------------------------data Signature = Sig-      { _sigSections    :: Sections-      , _sigDefinitions :: Definitions-      , _sigRewriteRules:: RewriteRuleMap  -- ^ The rewrite rules defined in this file.-      }-  deriving (Data, Show)--sigSections :: Lens' Sections Signature-sigSections f s =-  f (_sigSections s) <&>-  \x -> s {_sigSections = x}--sigDefinitions :: Lens' Definitions Signature-sigDefinitions f s =-  f (_sigDefinitions s) <&>-  \x -> s {_sigDefinitions = x}--sigRewriteRules :: Lens' RewriteRuleMap Signature-sigRewriteRules f s =-  f (_sigRewriteRules s) <&>-  \x -> s {_sigRewriteRules = x}--type Sections    = Map ModuleName Section-type Definitions = HashMap QName Definition-type RewriteRuleMap = HashMap QName RewriteRules-type DisplayForms = HashMap QName [LocalDisplayForm]--newtype Section = Section { _secTelescope :: Telescope }-  deriving (Data, Show)--instance Pretty Section where-  pretty = pretty . _secTelescope--secTelescope :: Lens' Telescope Section-secTelescope f s =-  f (_secTelescope s) <&>-  \x -> s {_secTelescope = x}--emptySignature :: Signature-emptySignature = Sig Map.empty HMap.empty HMap.empty---- | A @DisplayForm@ is in essence a rewrite rule---   @---      q ts --> dt---   @---   for a defined symbol (could be a constructor as well) @q@.---   The right hand side is a 'DisplayTerm' which is used to---   'reify' to a more readable 'Abstract.Syntax'.------   The patterns @ts@ are just terms, but @var 0@ is interpreted---   as a hole.  Each occurrence of @var 0@ is a new hole (pattern var).---   For each *occurrence* of @var0@ the rhs @dt@ has a free variable.---   These are instantiated when matching a display form against a---   term @q vs@ succeeds.-data DisplayForm = Display-  { dfFreeVars :: Nat-    -- ^ Number @n@ of free variables in 'dfRHS'.-  , dfPats     :: Elims-    -- ^ Left hand side patterns, where @var 0@ stands for a pattern-    --   variable.  There should be @n@ occurrences of @var0@ in-    --   'dfPats'.-    --   The 'ArgInfo' is ignored in these patterns.-  , dfRHS      :: DisplayTerm-    -- ^ Right hand side, with @n@ free variables.-  }-  deriving (Data, Show)--type LocalDisplayForm = Open DisplayForm---- | A structured presentation of a 'Term' for reification into---   'Abstract.Syntax'.-data DisplayTerm-  = DWithApp DisplayTerm [DisplayTerm] Elims-    -- ^ @(f vs | ws) es@.-    --   The first 'DisplayTerm' is the parent function @f@ with its args @vs@.-    --   The list of 'DisplayTerm's are the with expressions @ws@.-    --   The 'Elims' are additional arguments @es@-    --   (possible in case the with-application is of function type)-    --   or projections (if it is of record type).-  | DCon ConHead ConInfo [Arg DisplayTerm]-    -- ^ @c vs@.-  | DDef QName [Elim' DisplayTerm]-    -- ^ @d vs@.-  | DDot Term-    -- ^ @.v@.-  | DTerm Term-    -- ^ @v@.-  deriving (Data, Show)--instance Free DisplayForm where-  freeVars' (Display n ps t) = bind (freeVars' ps) `mappend` bind' n (freeVars' t)--instance Free DisplayTerm where-  freeVars' (DWithApp t ws es) = freeVars' (t, (ws, es))-  freeVars' (DCon _ _ vs)      = freeVars' vs-  freeVars' (DDef _ es)        = freeVars' es-  freeVars' (DDot v)           = freeVars' v-  freeVars' (DTerm v)          = freeVars' v--instance Pretty DisplayTerm where-  prettyPrec p v =-    case v of-      DTerm v          -> prettyPrec p v-      DDot v           -> text "." P.<> prettyPrec 10 v-      DDef f es        -> pretty f `pApp` es-      DCon c _ vs      -> pretty (conName c) `pApp` map Apply vs-      DWithApp h ws es ->-        mparens (p > 0)-          (sep [ pretty h-              , nest 2 $ fsep [ text "|" <+> pretty w | w <- ws ] ])-        `pApp` es-    where-      pApp d els = mparens (not (null els) && p > 9) $-                   sep [d, nest 2 $ fsep (map (prettyPrec 10) els)]---- | By default, we have no display form.-defaultDisplayForm :: QName -> [LocalDisplayForm]-defaultDisplayForm c = []--defRelevance :: Definition -> Relevance-defRelevance = getRelevance . defArgInfo---- | Non-linear (non-constructor) first-order pattern.-data NLPat-  = PVar !Int [Arg Int]-    -- ^ Matches anything (modulo non-linearity) that only contains bound-    --   variables that occur in the given arguments.-  | PWild-    -- ^ Matches anything (e.g. irrelevant terms).-  | PDef QName PElims-    -- ^ Matches @f es@-  | PLam ArgInfo (Abs NLPat)-    -- ^ Matches @λ x → t@-  | PPi (Dom NLPType) (Abs NLPType)-    -- ^ Matches @(x : A) → B@-  | PBoundVar {-# UNPACK #-} !Int PElims-    -- ^ Matches @x es@ where x is a lambda-bound variable-  | PTerm Term-    -- ^ Matches the term modulo β (ideally βη).-  deriving (Data, Show)-type PElims = [Elim' NLPat]--data NLPType = NLPType-  { nlpTypeLevel :: NLPat  -- always PWild or PVar (with all bound variables in scope)-  , nlpTypeUnEl  :: NLPat-  } deriving (Data, Show)--type RewriteRules = [RewriteRule]---- | Rewrite rules can be added independently from function clauses.-data RewriteRule = RewriteRule-  { rewName    :: QName      -- ^ Name of rewrite rule @q : Γ → f ps ≡ rhs@-                             --   where @≡@ is the rewrite relation.-  , rewContext :: Telescope  -- ^ @Γ@.-  , rewHead    :: QName      -- ^ @f@.-  , rewPats    :: PElims     -- ^ @Γ ⊢ f ps : t@.-  , rewRHS     :: Term       -- ^ @Γ ⊢ rhs : t@.-  , rewType    :: Type       -- ^ @Γ ⊢ t@.-  }-    deriving (Data, Show)--data Definition = Defn-  { defArgInfo        :: ArgInfo -- ^ Hiding should not be used.-  , defName           :: QName-  , defType           :: Type    -- ^ Type of the lifted definition.-  , defPolarity       :: [Polarity]-    -- ^ Variance information on arguments of the definition.-    --   Does not include info for dropped parameters to-    --   projection(-like) functions and constructors.-  , defArgOccurrences :: [Occurrence]-    -- ^ Positivity information on arguments of the definition.-    --   Does not include info for dropped parameters to-    --   projection(-like) functions and constructors.--    --   Sometimes Agda looks up 'Occurrence's in these lists based on-    --   their position, so one might consider replacing the list-    --   with, say, an 'IntMap'. However, presumably these lists tend-    --   to be short, in which case 'IntMap's could be slower than-    --   lists. For instance, at one point the longest list-    --   encountered for the standard library (in serialised-    --   interfaces) had length 27. Distribution:-    ---    --   Length, number of lists-    --   ------------------------    ---    --    0, 2444-    --    1,  721-    --    2,  433-    --    3,  668-    --    4,  602-    --    5,  624-    --    6,  626-    --    7,  484-    --    8,  375-    --    9,  264-    --   10,  305-    --   11,  188-    --   12,  171-    --   13,  108-    --   14,   84-    --   15,   80-    --   16,   38-    --   17,   23-    --   18,   16-    --   19,    8-    --   20,    7-    --   21,    5-    --   22,    2-    --   23,    3-    --   27,    1--  , defDisplay        :: [LocalDisplayForm]-  , defMutual         :: MutualId-  , defCompiledRep    :: CompiledRepresentation-  , defInstance       :: Maybe QName-    -- ^ @Just q@ when this definition is an instance of class q-  , defCopy           :: Bool-    -- ^ Has this function been created by a module-                         -- instantiation?-  , defMatchable      :: Bool-    -- ^ Is the def matched against in a rewrite rule?-  , defInjective      :: Bool-    -- ^ Should the def be treated as injective by the pattern matching unifier?-  , theDef            :: Defn-  }-    deriving (Data, Show)--theDefLens :: Lens' Defn Definition-theDefLens f d = f (theDef d) <&> \ df -> d { theDef = df }---- | Create a definition with sensible defaults.-defaultDefn :: ArgInfo -> QName -> Type -> Defn -> Definition-defaultDefn info x t def = Defn-  { defArgInfo        = info-  , defName           = x-  , defType           = t-  , defPolarity       = []-  , defArgOccurrences = []-  , defDisplay        = defaultDisplayForm x-  , defMutual         = 0-  , defCompiledRep    = noCompiledRep-  , defInstance       = Nothing-  , defCopy           = False-  , defMatchable      = False-  , defInjective      = False-  , theDef            = def-  }---- | Polarity for equality and subtype checking.-data Polarity-  = Covariant      -- ^ monotone-  | Contravariant  -- ^ antitone-  | Invariant      -- ^ no information (mixed variance)-  | Nonvariant     -- ^ constant-  deriving (Data, Show, Eq)--instance Pretty Polarity where-  pretty = text . \case-    Covariant     -> "+"-    Contravariant -> "-"-    Invariant     -> "*"-    Nonvariant    -> "_"---- | Information about whether an argument is forced by the type of a function.-data IsForced-  = Forced-  | NotForced-  deriving (Data, Show, Eq)---- | The backends are responsible for parsing their own pragmas.-data CompilerPragma = CompilerPragma Range String-  deriving (Data, Show, Eq)--instance HasRange CompilerPragma where-  getRange (CompilerPragma r _) = r--type BackendName    = String---- Temporary: while we still parse the old pragmas we need to know the names of--- the corresponding backends.-jsBackendName, ghcBackendName, uhcBackendName :: BackendName-jsBackendName  = "JS"-ghcBackendName = "GHC"-uhcBackendName = "UHC"--type CompiledRepresentation = Map BackendName [CompilerPragma]--noCompiledRep :: CompiledRepresentation-noCompiledRep = Map.empty---- | Additional information for extended lambdas.-data ExtLamInfo = ExtLamInfo-  { extLamModule    :: ModuleName-    -- ^ For complicated reasons the scope checker decides the QName of a-    --   pattern lambda, and thus its module. We really need to decide the-    --   module during type checking though, since if the lambda appears in a-    --   refined context the module picked by the scope checker has very much-    --   the wrong parameters.-  } deriving (Data, Eq, Ord, Show)---- | Additional information for projection 'Function's.-data Projection = Projection-  { projProper    :: Maybe QName-    -- ^ @Nothing@ if only projection-like, @Just r@ if record projection.-    --   The @r@ is the name of the record type projected from.-    --   This field is updated by module application.-  , projOrig      :: QName-    -- ^ The original projection name-    --   (current name could be from module application).-  , projFromType  :: Arg QName-    -- ^ Type projected from. Original record type if @projProper = Just{}@.-    --   Also stores @ArgInfo@ of the principal argument.-    --   This field is unchanged by module application.-  , projIndex     :: Int-    -- ^ Index of the record argument.-    --   Start counting with 1, because 0 means that-    --   it is already applied to the record value.-    --   This can happen in module instantiation, but-    --   then either the record value is @var 0@, or @funProjection == Nothing@.-  , projLams :: ProjLams-    -- ^ Term @t@ to be be applied to record parameters and record value.-    --   The parameters will be dropped.-    --   In case of a proper projection, a postfix projection application-    --   will be created: @t = \ pars r -> r .p@-    --   (Invariant: the number of abstractions equals 'projIndex'.)-    --   In case of a projection-like function, just the function symbol-    --   is returned as 'Def':  @t = \ pars -> f@.-  } deriving (Data, Show)---- | Abstractions to build projection function (dropping parameters).-newtype ProjLams = ProjLams { getProjLams :: [Arg ArgName] }-  deriving (Data, Show, Null)---- | Building the projection function (which drops the parameters).-projDropPars :: Projection -> ProjOrigin -> Term--- Proper projections:-projDropPars (Projection Just{} d _ _ lams) o =-  case initLast $ getProjLams lams of-    Nothing -> Def d []-    Just (pars, Arg i y) ->-      let core = Lam i $ Abs y $ Var 0 [Proj o d] in-      List.foldr (\ (Arg ai x) -> Lam ai . NoAbs x) core pars--- Projection-like functions:-projDropPars (Projection Nothing _ _ _ lams) o | null lams = __IMPOSSIBLE__-projDropPars (Projection Nothing d _ _ lams) o =-  List.foldr (\ (Arg ai x) -> Lam ai . NoAbs x) (Def d []) $ init $ getProjLams lams---- | The info of the principal (record) argument.-projArgInfo :: Projection -> ArgInfo-projArgInfo (Projection _ _ _ _ lams) =-  maybe __IMPOSSIBLE__ getArgInfo $ lastMaybe $ getProjLams lams---- | Should a record type admit eta-equality?-data EtaEquality-  = Specified { theEtaEquality :: !HasEta }  -- ^ User specifed 'eta-equality' or 'no-eta-equality'.-  | Inferred  { theEtaEquality :: !HasEta }  -- ^ Positivity checker inferred whether eta is safe.-  deriving (Data, Show, Eq)---- | Make sure we do not overwrite a user specification.-setEtaEquality :: EtaEquality -> HasEta -> EtaEquality-setEtaEquality e@Specified{} _ = e-setEtaEquality _ b = Inferred b--data FunctionFlag-  = FunStatic  -- ^ Should calls to this function be normalised at compile-time?-  | FunInline  -- ^ Should calls to this function be inlined by the compiler?-  | FunMacro   -- ^ Is this function a macro?-  deriving (Data, Eq, Ord, Enum, Show)--data Defn = Axiom-            -- ^ Postulate.-          | AbstractDefn Defn-            -- ^ Returned by 'getConstInfo' if definition is abstract.-          | Function-            { funClauses        :: [Clause]-            , funCompiled       :: Maybe CompiledClauses-              -- ^ 'Nothing' while function is still type-checked.-              --   @Just cc@ after type and coverage checking and-              --   translation to case trees.-            , funTreeless       :: Maybe Compiled-              -- ^ Intermediate representation for compiler backends.-            , funInv            :: FunctionInverse-            , funMutual         :: Maybe [QName]-              -- ^ Mutually recursive functions, @data@s and @record@s.-              --   Does include this function.-              --   Empty list if not recursive.-              --   @Nothing@ if not yet computed (by positivity checker).-            , funAbstr          :: IsAbstract-            , funDelayed        :: Delayed-              -- ^ Are the clauses of this definition delayed?-            , funProjection     :: Maybe Projection-              -- ^ Is it a record projection?-              --   If yes, then return the name of the record type and index of-              --   the record argument.  Start counting with 1, because 0 means that-              --   it is already applied to the record. (Can happen in module-              --   instantiation.) This information is used in the termination-              --   checker.-            , funFlags          :: Set FunctionFlag-            , funTerminates     :: Maybe Bool-              -- ^ Has this function been termination checked?  Did it pass?-            , funExtLam         :: Maybe ExtLamInfo-              -- ^ Is this function generated from an extended lambda?-              --   If yes, then return the number of hidden and non-hidden lambda-lifted arguments-            , funWith           :: Maybe QName-              -- ^ Is this a generated with-function? If yes, then what's the-              --   name of the parent function.-            , funCopatternLHS   :: Bool-              -- ^ Is this a function defined by copatterns?-            }-          | Datatype-            { dataPars           :: Nat            -- ^ Number of parameters.-            , dataIxs            :: Nat            -- ^ Number of indices.-            , dataInduction      :: Induction      -- ^ @data@ or @codata@ (legacy).-            , dataClause         :: (Maybe Clause) -- ^ This might be in an instantiated module.-            , dataCons           :: [QName]        -- ^ Constructor names.-            , dataSort           :: Sort-            , dataMutual         :: Maybe [QName]-              -- ^ Mutually recursive functions, @data@s and @record@s.-              --   Does include this data type.-              --   Empty if not recursive.-              --   @Nothing@ if not yet computed (by positivity checker).-            , dataAbstr          :: IsAbstract-            }-          | Record-            { recPars           :: Nat-              -- ^ Number of parameters.-            , recClause         :: Maybe Clause-              -- ^ Was this record type created by a module application?-              --   If yes, the clause is its definition (linking back to the original record type).-            , recConHead        :: ConHead-              -- ^ Constructor name and fields.-            , recNamedCon       :: Bool-              -- ^ Does this record have a @constructor@?-            , recFields         :: [Arg QName]-              -- ^ The record field names.-            , recTel            :: Telescope-              -- ^ The record field telescope. (Includes record parameters.)-              --   Note: @TelV recTel _ == telView' recConType@.-              --   Thus, @recTel@ is redundant.-            , recMutual         :: Maybe [QName]-              -- ^ Mutually recursive functions, @data@s and @record@s.-              --   Does include this record.-              --   Empty if not recursive.-              --   @Nothing@ if not yet computed (by positivity checker).-            , recEtaEquality'    :: EtaEquality-              -- ^ Eta-expand at this record type?-              --   @False@ for unguarded recursive records and coinductive records-              --   unless the user specifies otherwise.-            , recInduction      :: Maybe Induction-              -- ^ 'Inductive' or 'CoInductive'?  Matters only for recursive records.-              --   'Nothing' means that the user did not specify it, which is an error-              --   for recursive records.-            , recAbstr          :: IsAbstract-            }-          | Constructor-            { conPars   :: Int         -- ^ Number of parameters.-            , conArity  :: Int         -- ^ Number of arguments (excluding parameters).-            , conSrcCon :: ConHead     -- ^ Name of (original) constructor and fields. (This might be in a module instance.)-            , conData   :: QName       -- ^ Name of datatype or record type.-            , conAbstr  :: IsAbstract-            , conInd    :: Induction   -- ^ Inductive or coinductive?-            , conForced :: [IsForced]  -- ^ Which arguments are forced (i.e. determined by the type of the constructor)?-            , conErased :: [Bool]      -- ^ Which arguments are erased at runtime (computed during compilation to treeless)-            }-          | Primitive-            { primAbstr :: IsAbstract-            , primName  :: String-            , primClauses :: [Clause]-              -- ^ 'null' for primitive functions, @not null@ for builtin functions.-            , primInv      :: FunctionInverse-              -- ^ Builtin functions can have inverses. For instance, natural number addition.-            , primCompiled :: Maybe CompiledClauses-              -- ^ 'Nothing' for primitive functions,-              --   @'Just' something@ for builtin functions.-            }-            -- ^ Primitive or builtin functions.-    deriving (Data, Show)--instance Pretty Definition where-  pretty Defn{..} =-    text "Defn {" <?> vcat-      [ text "defArgInfo        =" <?> pshow defArgInfo-      , text "defName           =" <?> pretty defName-      , text "defType           =" <?> pretty defType-      , text "defPolarity       =" <?> pshow defPolarity-      , text "defArgOccurrences =" <?> pshow defArgOccurrences-      , text "defDisplay        =" <?> pshow defDisplay -- TODO: pretty DisplayForm-      , text "defMutual         =" <?> pshow defMutual-      , text "defCompiledRep    =" <?> pshow defCompiledRep-      , text "defInstance       =" <?> pshow defInstance-      , text "defCopy           =" <?> pshow defCopy-      , text "defMatchable      =" <?> pshow defMatchable-      , text "defInjective      =" <?> pshow defInjective-      , text "theDef            =" <?> pretty theDef ] <+> text "}"--instance Pretty Defn where-  pretty Axiom = text "Axiom"-  pretty (AbstractDefn def) = text "AbstractDefn" <?> parens (pretty def)-  pretty Function{..} =-    text "Function {" <?> vcat-      [ text "funClauses      =" <?> vcat (map pretty funClauses)-      , text "funCompiled     =" <?> pshow funCompiled-      , text "funTreeless     =" <?> pshow funTreeless-      , text "funInv          =" <?> pshow funInv-      , text "funMutual       =" <?> pshow funMutual-      , text "funAbstr        =" <?> pshow funAbstr-      , text "funDelayed      =" <?> pshow funDelayed-      , text "funProjection   =" <?> pshow funProjection-      , text "funFlags        =" <?> pshow funFlags-      , text "funTerminates   =" <?> pshow funTerminates-      , text "funWith         =" <?> pshow funWith-      , text "funCopatternLHS =" <?> pshow funCopatternLHS ] <?> text "}"-  pretty Datatype{..} =-    text "Datatype {" <?> vcat-      [ text "dataPars       =" <?> pshow dataPars-      , text "dataIxs        =" <?> pshow dataIxs-      , text "dataInduction  =" <?> pshow dataInduction-      , text "dataClause     =" <?> pretty dataClause-      , text "dataCons       =" <?> pshow dataCons-      , text "dataSort       =" <?> pretty dataSort-      , text "dataMutual     =" <?> pshow dataMutual-      , text "dataAbstr      =" <?> pshow dataAbstr ] <?> text "}"-  pretty Record{..} =-    text "Record {" <?> vcat-      [ text "recPars         =" <?> pshow recPars-      , text "recClause       =" <?> pretty recClause-      , text "recConHead      =" <?> pshow recConHead-      , text "recNamedCon     =" <?> pshow recNamedCon-      , text "recFields       =" <?> pshow recFields-      , text "recTel          =" <?> pretty recTel-      , text "recMutual       =" <?> pshow recMutual-      , text "recEtaEquality' =" <?> pshow recEtaEquality'-      , text "recInduction    =" <?> pshow recInduction-      , text "recAbstr        =" <?> pshow recAbstr ] <?> text "}"-  pretty Constructor{..} =-    text "Constructor {" <?> vcat-      [ text "conPars   =" <?> pshow conPars-      , text "conArity  =" <?> pshow conArity-      , text "conSrcCon =" <?> pshow conSrcCon-      , text "conData   =" <?> pshow conData-      , text "conAbstr  =" <?> pshow conAbstr-      , text "conInd    =" <?> pshow conInd-      , text "conErased =" <?> pshow conErased ] <?> text "}"-  pretty Primitive{..} =-    text "Primitive {" <?> vcat-      [ text "primAbstr    =" <?> pshow primAbstr-      , text "primName     =" <?> pshow primName-      , text "primClauses  =" <?> pshow primClauses-      , text "primCompiled =" <?> pshow primCompiled ] <?> text "}"----- | Is the record type recursive?-recRecursive :: Defn -> Bool-recRecursive (Record { recMutual = Just qs }) = not $ null qs-recRecursive _ = __IMPOSSIBLE__--recEtaEquality :: Defn -> HasEta-recEtaEquality = theEtaEquality . recEtaEquality'---- | A template for creating 'Function' definitions, with sensible defaults.-emptyFunction :: Defn-emptyFunction = Function-  { funClauses     = []-  , funCompiled    = Nothing-  , funTreeless    = Nothing-  , funInv         = NotInjective-  , funMutual      = Nothing-  , funAbstr       = ConcreteDef-  , funDelayed     = NotDelayed-  , funProjection  = Nothing-  , funFlags       = Set.empty-  , funTerminates  = Nothing-  , funExtLam      = Nothing-  , funWith        = Nothing-  , funCopatternLHS = False-  }--funFlag :: FunctionFlag -> Lens' Bool Defn-funFlag flag f def@Function{ funFlags = flags } =-  f (Set.member flag flags) <&>-  \ b -> def{ funFlags = (if b then Set.insert else Set.delete) flag flags }-funFlag _ f def = f False <&> const def--funStatic, funInline, funMacro :: Lens' Bool Defn-funStatic       = funFlag FunStatic-funInline       = funFlag FunInline-funMacro        = funFlag FunMacro--isMacro :: Defn -> Bool-isMacro = (^. funMacro)---- | Checking whether we are dealing with a function yet to be defined.-isEmptyFunction :: Defn -> Bool-isEmptyFunction def =-  case def of-    Function { funClauses = [] } -> True-    _ -> False--isCopatternLHS :: [Clause] -> Bool-isCopatternLHS = List.any (List.any (isJust . A.isProjP) . namedClausePats)--recCon :: Defn -> QName-recCon Record{ recConHead } = conName recConHead-recCon _ = __IMPOSSIBLE__--defIsRecord :: Defn -> Bool-defIsRecord Record{} = True-defIsRecord _        = False--defIsDataOrRecord :: Defn -> Bool-defIsDataOrRecord Record{}   = True-defIsDataOrRecord Datatype{} = True-defIsDataOrRecord _          = False--defConstructors :: Defn -> [QName]-defConstructors Datatype{dataCons = cs} = cs-defConstructors Record{recConHead = c} = [conName c]-defConstructors _ = __IMPOSSIBLE__--newtype Fields = Fields [(C.Name, Type)]-  deriving Null---- | Did we encounter a simplifying reduction?---   In terms of CIC, that would be a iota-reduction.---   In terms of Agda, this is a constructor or literal---   pattern that matched.---   Just beta-reduction (substitution) or delta-reduction---   (unfolding of definitions) does not count as simplifying?--data Simplification = YesSimplification | NoSimplification-  deriving (Data, Eq, Show)--instance Null Simplification where-  empty = NoSimplification-  null  = (== NoSimplification)--instance Semigroup Simplification where-  YesSimplification <> _ = YesSimplification-  NoSimplification  <> s = s--instance Monoid Simplification where-  mempty = NoSimplification-  mappend = (<>)--data Reduced no yes = NoReduction no | YesReduction Simplification yes-    deriving Functor---- | Three cases: 1. not reduced, 2. reduced, but blocked, 3. reduced, not blocked.-data IsReduced-  = NotReduced-  | Reduced    (Blocked ())--data MaybeReduced a = MaybeRed-  { isReduced     :: IsReduced-  , ignoreReduced :: a-  }-  deriving (Functor)--instance IsProjElim e => IsProjElim (MaybeReduced e) where-  isProjElim = isProjElim . ignoreReduced--type MaybeReducedArgs = [MaybeReduced (Arg Term)]-type MaybeReducedElims = [MaybeReduced Elim]--notReduced :: a -> MaybeReduced a-notReduced x = MaybeRed NotReduced x--reduced :: Blocked (Arg Term) -> MaybeReduced (Arg Term)-reduced b = case b of-  NotBlocked _ (Arg _ (MetaV x _)) -> MaybeRed (Reduced $ Blocked x ()) v-  _                                -> MaybeRed (Reduced $ () <$ b)      v-  where-    v = ignoreBlocking b---- | Controlling 'reduce'.-data AllowedReduction-  = ProjectionReductions     -- ^ (Projection and) projection-like functions may be reduced.-  | InlineReductions         -- ^ Functions marked INLINE may be reduced.-  | CopatternReductions      -- ^ Copattern definitions may be reduced.-  | FunctionReductions       -- ^ Non-recursive functions and primitives may be reduced.-  | RecursiveReductions      -- ^ Even recursive functions may be reduced.-  | LevelReductions          -- ^ Reduce @'Level'@ terms.-  | UnconfirmedReductions    -- ^ Functions whose termination has not (yet) been confirmed.-  | NonTerminatingReductions -- ^ Functions that have failed termination checking.-  deriving (Show, Eq, Ord, Enum, Bounded, Data)--type AllowedReductions = [AllowedReduction]---- | Not quite all reductions (skip non-terminating reductions)-allReductions :: AllowedReductions-allReductions = [minBound..pred maxBound]--data PrimFun = PrimFun-        { primFunName           :: QName-        , primFunArity          :: Arity-        , primFunImplementation :: [Arg Term] -> ReduceM (Reduced MaybeReducedArgs Term)-        }--defClauses :: Definition -> [Clause]-defClauses Defn{theDef = Function{funClauses = cs}}        = cs-defClauses Defn{theDef = Primitive{primClauses = cs}}      = cs-defClauses Defn{theDef = Datatype{dataClause = Just c}}    = [c]-defClauses Defn{theDef = Record{recClause = Just c}}       = [c]-defClauses _                                               = []--defCompiled :: Definition -> Maybe CompiledClauses-defCompiled Defn{theDef = Function {funCompiled  = mcc}} = mcc-defCompiled Defn{theDef = Primitive{primCompiled = mcc}} = mcc-defCompiled _ = Nothing--defParameters :: Definition -> Maybe Nat-defParameters Defn{theDef = Datatype{dataPars = n}} = Just n-defParameters Defn{theDef = Record  {recPars  = n}} = Just n-defParameters _                                     = Nothing--defInverse :: Definition -> FunctionInverse-defInverse Defn{theDef = Function { funInv  = inv }} = inv-defInverse Defn{theDef = Primitive{ primInv = inv }} = inv-defInverse _                                         = NotInjective--defCompilerPragmas :: BackendName -> Definition -> [CompilerPragma]-defCompilerPragmas b = reverse . fromMaybe [] . Map.lookup b . defCompiledRep-  -- reversed because we add new pragmas to the front of the list---- | Are the clauses of this definition delayed?-defDelayed :: Definition -> Delayed-defDelayed Defn{theDef = Function{funDelayed = d}} = d-defDelayed _                                       = NotDelayed---- | Has the definition failed the termination checker?-defNonterminating :: Definition -> Bool-defNonterminating Defn{theDef = Function{funTerminates = Just False}} = True-defNonterminating _                                                   = False---- | Has the definition not termination checked or did the check fail?-defTerminationUnconfirmed :: Definition -> Bool-defTerminationUnconfirmed Defn{theDef = Function{funTerminates = Just True}} = False-defTerminationUnconfirmed Defn{theDef = Function{funTerminates = _        }} = True-defTerminationUnconfirmed _ = False--defAbstract :: Definition -> IsAbstract-defAbstract d = case theDef d of-    Axiom{}                   -> ConcreteDef-    AbstractDefn{}            -> AbstractDef-    Function{funAbstr = a}    -> a-    Datatype{dataAbstr = a}   -> a-    Record{recAbstr = a}      -> a-    Constructor{conAbstr = a} -> a-    Primitive{primAbstr = a}  -> a--defForced :: Definition -> [IsForced]-defForced d = case theDef d of-    Constructor{conForced = fs} -> fs-    Axiom{}                     -> []-    AbstractDefn{}              -> []-    Function{}                  -> []-    Datatype{}                  -> []-    Record{}                    -> []-    Primitive{}                 -> []-------------------------------------------------------------------------------- ** Injectivity------------------------------------------------------------------------------type FunctionInverse = FunctionInverse' Clause-type InversionMap c = Map TermHead [c]--data FunctionInverse' c-  = NotInjective-  | Inverse (InversionMap c)-  deriving (Data, Show, Functor)--data TermHead = SortHead-              | PiHead-              | ConsHead QName-              | VarHead Nat-              | UnknownHead-  deriving (Data, Eq, Ord, Show)--instance Pretty TermHead where-  pretty = \ case-    SortHead    -> text "SortHead"-    PiHead      -> text "PiHead"-    ConsHead q  -> text "ConsHead" <+> pretty q-    VarHead i   -> text ("VarHead " ++ show i)-    UnknownHead -> text "UnknownHead"-------------------------------------------------------------------------------- ** Mutual blocks------------------------------------------------------------------------------newtype MutualId = MutId Int32-  deriving (Data, Eq, Ord, Show, Num, Enum)-------------------------------------------------------------------------------- ** Statistics------------------------------------------------------------------------------type Statistics = Map String Integer-------------------------------------------------------------------------------- ** Trace------------------------------------------------------------------------------data Call = CheckClause Type A.SpineClause-          | CheckPattern A.Pattern Telescope Type-          | CheckLetBinding A.LetBinding-          | InferExpr A.Expr-          | CheckExprCall A.Expr Type-          | CheckDotPattern A.Expr Term-          | CheckPatternShadowing A.SpineClause-          | CheckProjection Range QName Type-          | IsTypeCall A.Expr Sort-          | IsType_ A.Expr-          | InferVar Name-          | InferDef QName-          | CheckArguments Range [NamedArg A.Expr] Type (Maybe Type)-          | CheckTargetType Range Type Type-          | CheckDataDef Range Name [A.LamBinding] [A.Constructor]-          | CheckRecDef Range Name [A.LamBinding] [A.Constructor]-          | CheckConstructor QName Telescope Sort A.Constructor-          | CheckFunDefCall Range Name [A.Clause]-          | CheckPragma Range A.Pragma-          | CheckPrimitive Range Name A.Expr-          | CheckIsEmpty Range Type-          | CheckWithFunctionType A.Expr-          | CheckSectionApplication Range ModuleName A.ModuleApplication-          | CheckNamedWhere ModuleName-          | ScopeCheckExpr C.Expr-          | ScopeCheckDeclaration NiceDeclaration-          | ScopeCheckLHS C.QName C.Pattern-          | NoHighlighting-          | ModuleContents  -- ^ Interaction command: show module contents.-          | SetRange Range  -- ^ used by 'setCurrentRange'-    deriving Data--instance Pretty Call where-    pretty CheckClause{}             = text "CheckClause"-    pretty CheckPattern{}            = text "CheckPattern"-    pretty InferExpr{}               = text "InferExpr"-    pretty CheckExprCall{}           = text "CheckExprCall"-    pretty CheckLetBinding{}         = text "CheckLetBinding"-    pretty CheckProjection{}         = text "CheckProjection"-    pretty IsTypeCall{}              = text "IsTypeCall"-    pretty IsType_{}                 = text "IsType_"-    pretty InferVar{}                = text "InferVar"-    pretty InferDef{}                = text "InferDef"-    pretty CheckArguments{}          = text "CheckArguments"-    pretty CheckTargetType{}         = text "CheckTargetType"-    pretty CheckDataDef{}            = text "CheckDataDef"-    pretty CheckRecDef{}             = text "CheckRecDef"-    pretty CheckConstructor{}        = text "CheckConstructor"-    pretty CheckFunDefCall{}         = text "CheckFunDefCall"-    pretty CheckPragma{}             = text "CheckPragma"-    pretty CheckPrimitive{}          = text "CheckPrimitive"-    pretty CheckWithFunctionType{}   = text "CheckWithFunctionType"-    pretty CheckNamedWhere{}         = text "CheckNamedWhere"-    pretty ScopeCheckExpr{}          = text "ScopeCheckExpr"-    pretty ScopeCheckDeclaration{}   = text "ScopeCheckDeclaration"-    pretty ScopeCheckLHS{}           = text "ScopeCheckLHS"-    pretty CheckDotPattern{}         = text "CheckDotPattern"-    pretty CheckPatternShadowing{}   = text "CheckPatternShadowing"-    pretty SetRange{}                = text "SetRange"-    pretty CheckSectionApplication{} = text "CheckSectionApplication"-    pretty CheckIsEmpty{}            = text "CheckIsEmpty"-    pretty NoHighlighting{}          = text "NoHighlighting"-    pretty ModuleContents{}          = text "ModuleContents"--instance HasRange Call where-    getRange (CheckClause _ c)               = getRange c-    getRange (CheckPattern p _ _)            = getRange p-    getRange (InferExpr e)                   = getRange e-    getRange (CheckExprCall e _)             = getRange e-    getRange (CheckLetBinding b)             = getRange b-    getRange (CheckProjection r _ _)         = r-    getRange (IsTypeCall e s)                = getRange e-    getRange (IsType_ e)                     = getRange e-    getRange (InferVar x)                    = getRange x-    getRange (InferDef f)                    = getRange f-    getRange (CheckArguments r _ _ _)        = r-    getRange (CheckTargetType r _ _)         = r-    getRange (CheckDataDef i _ _ _)          = getRange i-    getRange (CheckRecDef i _ _ _)           = getRange i-    getRange (CheckConstructor _ _ _ c)      = getRange c-    getRange (CheckFunDefCall i _ _)         = getRange i-    getRange (CheckPragma r _)               = r-    getRange (CheckPrimitive i _ _)          = getRange i-    getRange CheckWithFunctionType{}         = noRange-    getRange (CheckNamedWhere m)             = getRange m-    getRange (ScopeCheckExpr e)              = getRange e-    getRange (ScopeCheckDeclaration d)       = getRange d-    getRange (ScopeCheckLHS _ p)             = getRange p-    getRange (CheckDotPattern e _)           = getRange e-    getRange (CheckPatternShadowing c)       = getRange c-    getRange (SetRange r)                    = r-    getRange (CheckSectionApplication r _ _) = r-    getRange (CheckIsEmpty r _)              = r-    getRange NoHighlighting                  = noRange-    getRange ModuleContents                  = noRange-------------------------------------------------------------------------------- ** Instance table-------------------------------------------------------------------------------- | The instance table is a @Map@ associating to every name of---   record/data type/postulate its list of instances-type InstanceTable = Map QName (Set QName)---- | When typechecking something of the following form:------     instance---       x : _---       x = y------   it's not yet known where to add @x@, so we add it to a list of---   unresolved instances and we'll deal with it later.-type TempInstanceTable = (InstanceTable , Set QName)-------------------------------------------------------------------------------- ** Builtin things------------------------------------------------------------------------------data BuiltinDescriptor-  = BuiltinData (TCM Type) [String]-  | BuiltinDataCons (TCM Type)-  | BuiltinPrim String (Term -> TCM ())-  | BuiltinPostulate Relevance (TCM Type)-  | BuiltinUnknown (Maybe (TCM Type)) (Term -> Type -> TCM ())-    -- ^ Builtin of any kind.-    --   Type can be checked (@Just t@) or inferred (@Nothing@).-    --   The second argument is the hook for the verification function.--data BuiltinInfo =-   BuiltinInfo { builtinName :: String-               , builtinDesc :: BuiltinDescriptor }--type BuiltinThings pf = Map String (Builtin pf)--data Builtin pf-        = Builtin Term-        | Prim pf-    deriving (Show, Functor, Foldable, Traversable)-------------------------------------------------------------------------------- * Highlighting levels-------------------------------------------------------------------------------- | How much highlighting should be sent to the user interface?--data HighlightingLevel-  = None-  | NonInteractive-  | Interactive-    -- ^ This includes both non-interactive highlighting and-    -- interactive highlighting of the expression that is currently-    -- being type-checked.-    deriving (Eq, Ord, Show, Read, Data)---- | How should highlighting be sent to the user interface?--data HighlightingMethod-  = Direct-    -- ^ Via stdout.-  | Indirect-    -- ^ Both via files and via stdout.-    deriving (Eq, Show, Read, Data)---- | @ifTopLevelAndHighlightingLevelIs l b m@ runs @m@ when we're--- type-checking the top-level module and either the highlighting--- level is /at least/ @l@ or @b@ is 'True'.--ifTopLevelAndHighlightingLevelIsOr ::-  MonadTCM tcm => HighlightingLevel -> Bool -> tcm () -> tcm ()-ifTopLevelAndHighlightingLevelIsOr l b m = do-  e <- ask-  when (envModuleNestingLevel e == 0 &&-        (envHighlightingLevel e >= l || b))-       m---- | @ifTopLevelAndHighlightingLevelIs l m@ runs @m@ when we're--- type-checking the top-level module and the highlighting level is--- /at least/ @l@.--ifTopLevelAndHighlightingLevelIs ::-  MonadTCM tcm => HighlightingLevel -> tcm () -> tcm ()-ifTopLevelAndHighlightingLevelIs l =-  ifTopLevelAndHighlightingLevelIsOr l False-------------------------------------------------------------------------------- * Type checking environment------------------------------------------------------------------------------data TCEnv =-    TCEnv { envContext             :: Context-          , envLetBindings         :: LetBindings-          , envCurrentModule       :: ModuleName-          , envCurrentPath         :: Maybe AbsolutePath-            -- ^ The path to the file that is currently being-            -- type-checked.  'Nothing' if we do not have a file-            -- (like in interactive mode see @CommandLine@).-          , envAnonymousModules    :: [(ModuleName, Nat)] -- ^ anonymous modules and their number of free variables-          , envImportPath          :: [C.TopLevelModuleName] -- ^ to detect import cycles-          , envMutualBlock         :: Maybe MutualId -- ^ the current (if any) mutual block-          , envTerminationCheck    :: TerminationCheck ()  -- ^ are we inside the scope of a termination pragma-          , envSolvingConstraints  :: Bool-                -- ^ Are we currently in the process of solving active constraints?-          , envCheckingWhere       :: Bool-                -- ^ Have we stepped into the where-declarations of a clause?-                --   Everything under a @where@ will be checked with this flag on.-          , envWorkingOnTypes      :: Bool-                -- ^ Are we working on types? Turned on by 'workOnTypes'.-          , envAssignMetas         :: Bool-            -- ^ Are we allowed to assign metas?-          , envActiveProblems      :: Set ProblemId-          , envAbstractMode        :: AbstractMode-                -- ^ When checking the typesignature of a public definition-                --   or the body of a non-abstract definition this is true.-                --   To prevent information about abstract things leaking-                --   outside the module.-          , envRelevance           :: Relevance-                -- ^ Are we checking an irrelevant argument? (=@Irrelevant@)-                -- Then top-level irrelevant declarations are enabled.-                -- Other value: @Relevant@, then only relevant decls. are avail.-          , envDisplayFormsEnabled :: Bool-                -- ^ Sometimes we want to disable display forms.-          , envRange :: Range-          , envHighlightingRange :: Range-                -- ^ Interactive highlighting uses this range rather-                --   than 'envRange'.-          , envClause :: IPClause-                -- ^ What is the current clause we are type-checking?-                --   Will be recorded in interaction points in this clause.-          , envCall  :: Maybe (Closure Call)-                -- ^ what we're doing at the moment-          , envHighlightingLevel  :: HighlightingLevel-                -- ^ Set to 'None' when imported modules are-                --   type-checked.-          , envHighlightingMethod :: HighlightingMethod-          , envModuleNestingLevel :: !Int-                -- ^ This number indicates how far away from the-                --   top-level module Agda has come when chasing-                --   modules. The level of a given module is not-                --   necessarily the same as the length, in the module-                --   dependency graph, of the shortest path from the-                --   top-level module; it depends on in which order-                --   Agda chooses to chase dependencies.-          , envAllowDestructiveUpdate :: Bool-                -- ^ When True, allows destructively shared updating terms-                --   during evaluation or unification. This is disabled when-                --   doing speculative checking, like solve instance metas, or-                --   when updating might break abstraction, as is the case when-                --   checking abstract definitions.-          , envExpandLast :: ExpandHidden-                -- ^ When type-checking an alias f=e, we do not want-                -- to insert hidden arguments in the end, because-                -- these will become unsolved metas.-          , envAppDef :: Maybe QName-                -- ^ We are reducing an application of this function.-                -- (For debugging of incomplete matches only.)-          , envSimplification :: Simplification-                -- ^ Did we encounter a simplification (proper match)-                --   during the current reduction process?-          , envAllowedReductions :: AllowedReductions-          , envInjectivityDepth :: Int-                -- ^ Injectivity can cause non-termination for unsolvable contraints-                --   (#431, #3067). Keep a limit on the nesting depth of injectivity-                --   uses.-          , envCompareBlocked :: Bool-                -- ^ Can we compare blocked things during conversion?-                --   No by default.-                --   Yes for rewriting feature.-          , envPrintDomainFreePi :: Bool-                -- ^ When @True@, types will be omitted from printed pi types if they-                --   can be inferred.-          , envPrintMetasBare :: Bool-                -- ^ When @True@, throw away meta numbers and meta elims.-                --   This is used for reifying terms for feeding into the-                --   user's source code, e.g., for the interaction tactics @solveAll@.-          , envInsideDotPattern :: Bool-                -- ^ Used by the scope checker to make sure that certain forms-                --   of expressions are not used inside dot patterns: extended-                --   lambdas and let-expressions.-          , envUnquoteFlags :: UnquoteFlags-          , envInstanceDepth :: !Int-                -- ^ Until we get a termination checker for instance search (#1743) we-                --   limit the search depth to ensure termination.-          , envIsDebugPrinting :: Bool-          , envPrintingPatternLambdas :: [QName]-                -- ^ #3004: pattern lambdas with copatterns may refer to themselves. We-                --   don't have a good story for what to do in this case, but at least-                --   printing shouldn't loop. Here we keep track of which pattern lambdas-                --   we are currently in the process of printing.-          , envCallByNeed :: Bool-                -- ^ Use call-by-need evaluation for reductions.-          , envCurrentCheckpoint :: CheckpointId-                -- ^ Checkpoints track the evolution of the context as we go-                -- under binders or refine it by pattern matching.-          , envCheckpoints :: Map CheckpointId Substitution-                -- ^ Keeps the substitution from each previous checkpoint to-                --   the current context.-          }-    deriving Data--initEnv :: TCEnv-initEnv = TCEnv { envContext             = []-                , envLetBindings         = Map.empty-                , envCurrentModule       = noModuleName-                , envCurrentPath         = Nothing-                , envAnonymousModules    = []-                , envImportPath          = []-                , envMutualBlock         = Nothing-                , envTerminationCheck    = TerminationCheck-                , envSolvingConstraints  = False-                , envCheckingWhere       = False-                , envActiveProblems      = Set.empty-                , envWorkingOnTypes      = False-                , envAssignMetas         = True-                , envAbstractMode        = ConcreteMode-  -- Andreas, 2013-02-21:  This was 'AbstractMode' until now.-  -- However, top-level checks for mutual blocks, such as-  -- constructor-headedness, should not be able to look into-  -- abstract definitions unless abstract themselves.-  -- (See also discussion on issue 796.)-  -- The initial mode should be 'ConcreteMode', ensuring you-  -- can only look into abstract things in an abstract-  -- definition (which sets 'AbstractMode').-                , envRelevance           = Relevant-                , envDisplayFormsEnabled = True-                , envRange                  = noRange-                , envHighlightingRange      = noRange-                , envClause                 = IPNoClause-                , envCall                   = Nothing-                , envHighlightingLevel      = None-                , envHighlightingMethod     = Indirect-                , envModuleNestingLevel     = -1-                , envAllowDestructiveUpdate = True-                , envExpandLast             = ExpandLast-                , envAppDef                 = Nothing-                , envSimplification         = NoSimplification-                , envAllowedReductions      = allReductions-                , envInjectivityDepth       = 0-                , envCompareBlocked         = False-                , envPrintDomainFreePi      = False-                , envPrintMetasBare         = False-                , envInsideDotPattern       = False-                , envUnquoteFlags           = defaultUnquoteFlags-                , envInstanceDepth          = 0-                , envIsDebugPrinting        = False-                , envPrintingPatternLambdas = []-                , envCallByNeed             = True-                , envCurrentCheckpoint      = 0-                , envCheckpoints            = Map.singleton 0 IdS-                }--disableDestructiveUpdate :: TCM a -> TCM a-disableDestructiveUpdate = local $ \e -> e { envAllowDestructiveUpdate = False }--data UnquoteFlags = UnquoteFlags-  { _unquoteNormalise :: Bool }-  deriving Data--defaultUnquoteFlags :: UnquoteFlags-defaultUnquoteFlags = UnquoteFlags-  { _unquoteNormalise = False }--unquoteNormalise :: Lens' Bool UnquoteFlags-unquoteNormalise f e = f (_unquoteNormalise e) <&> \ x -> e { _unquoteNormalise = x }--eUnquoteNormalise :: Lens' Bool TCEnv-eUnquoteNormalise = eUnquoteFlags . unquoteNormalise---- * e-prefixed lenses---------------------------------------------------------------------------eContext :: Lens' Context TCEnv-eContext f e = f (envContext e) <&> \ x -> e { envContext = x }--eLetBindings :: Lens' LetBindings TCEnv-eLetBindings f e = f (envLetBindings e) <&> \ x -> e { envLetBindings = x }--eCurrentModule :: Lens' ModuleName TCEnv-eCurrentModule f e = f (envCurrentModule e) <&> \ x -> e { envCurrentModule = x }--eCurrentPath :: Lens' (Maybe AbsolutePath) TCEnv-eCurrentPath f e = f (envCurrentPath e) <&> \ x -> e { envCurrentPath = x }--eAnonymousModules :: Lens' [(ModuleName, Nat)] TCEnv-eAnonymousModules f e = f (envAnonymousModules e) <&> \ x -> e { envAnonymousModules = x }--eImportPath :: Lens' [C.TopLevelModuleName] TCEnv-eImportPath f e = f (envImportPath e) <&> \ x -> e { envImportPath = x }--eMutualBlock :: Lens' (Maybe MutualId) TCEnv-eMutualBlock f e = f (envMutualBlock e) <&> \ x -> e { envMutualBlock = x }--eTerminationCheck :: Lens' (TerminationCheck ()) TCEnv-eTerminationCheck f e = f (envTerminationCheck e) <&> \ x -> e { envTerminationCheck = x }--eSolvingConstraints :: Lens' Bool TCEnv-eSolvingConstraints f e = f (envSolvingConstraints e) <&> \ x -> e { envSolvingConstraints = x }--eCheckingWhere :: Lens' Bool TCEnv-eCheckingWhere f e = f (envCheckingWhere e) <&> \ x -> e { envCheckingWhere = x }--eWorkingOnTypes :: Lens' Bool TCEnv-eWorkingOnTypes f e = f (envWorkingOnTypes e) <&> \ x -> e { envWorkingOnTypes = x }--eAssignMetas :: Lens' Bool TCEnv-eAssignMetas f e = f (envAssignMetas e) <&> \ x -> e { envAssignMetas = x }--eActiveProblems :: Lens' (Set ProblemId) TCEnv-eActiveProblems f e = f (envActiveProblems e) <&> \ x -> e { envActiveProblems = x }--eAbstractMode :: Lens' AbstractMode TCEnv-eAbstractMode f e = f (envAbstractMode e) <&> \ x -> e { envAbstractMode = x }--eRelevance :: Lens' Relevance TCEnv-eRelevance f e = f (envRelevance e) <&> \ x -> e { envRelevance = x }--eDisplayFormsEnabled :: Lens' Bool TCEnv-eDisplayFormsEnabled f e = f (envDisplayFormsEnabled e) <&> \ x -> e { envDisplayFormsEnabled = x }--eRange :: Lens' Range TCEnv-eRange f e = f (envRange e) <&> \ x -> e { envRange = x }--eHighlightingRange :: Lens' Range TCEnv-eHighlightingRange f e = f (envHighlightingRange e) <&> \ x -> e { envHighlightingRange = x }--eCall :: Lens' (Maybe (Closure Call)) TCEnv-eCall f e = f (envCall e) <&> \ x -> e { envCall = x }--eHighlightingLevel :: Lens' HighlightingLevel TCEnv-eHighlightingLevel f e = f (envHighlightingLevel e) <&> \ x -> e { envHighlightingLevel = x }--eHighlightingMethod :: Lens' HighlightingMethod TCEnv-eHighlightingMethod f e = f (envHighlightingMethod e) <&> \ x -> e { envHighlightingMethod = x }--eModuleNestingLevel :: Lens' Int TCEnv-eModuleNestingLevel f e = f (envModuleNestingLevel e) <&> \ x -> e { envModuleNestingLevel = x }--eAllowDestructiveUpdate :: Lens' Bool TCEnv-eAllowDestructiveUpdate f e = f (envAllowDestructiveUpdate e) <&> \ x -> e { envAllowDestructiveUpdate = x }--eExpandLast :: Lens' ExpandHidden TCEnv-eExpandLast f e = f (envExpandLast e) <&> \ x -> e { envExpandLast = x }--eAppDef :: Lens' (Maybe QName) TCEnv-eAppDef f e = f (envAppDef e) <&> \ x -> e { envAppDef = x }--eSimplification :: Lens' Simplification TCEnv-eSimplification f e = f (envSimplification e) <&> \ x -> e { envSimplification = x }--eAllowedReductions :: Lens' AllowedReductions TCEnv-eAllowedReductions f e = f (envAllowedReductions e) <&> \ x -> e { envAllowedReductions = x }--eInjectivityDepth :: Lens' Int TCEnv-eInjectivityDepth f e = f (envInjectivityDepth e) <&> \ x -> e { envInjectivityDepth = x }--eCompareBlocked :: Lens' Bool TCEnv-eCompareBlocked f e = f (envCompareBlocked e) <&> \ x -> e { envCompareBlocked = x }--ePrintDomainFreePi :: Lens' Bool TCEnv-ePrintDomainFreePi f e = f (envPrintDomainFreePi e) <&> \ x -> e { envPrintDomainFreePi = x }--eInsideDotPattern :: Lens' Bool TCEnv-eInsideDotPattern f e = f (envInsideDotPattern e) <&> \ x -> e { envInsideDotPattern = x }--eUnquoteFlags :: Lens' UnquoteFlags TCEnv-eUnquoteFlags f e = f (envUnquoteFlags e) <&> \ x -> e { envUnquoteFlags = x }--eInstanceDepth :: Lens' Int TCEnv-eInstanceDepth f e = f (envInstanceDepth e) <&> \ x -> e { envInstanceDepth = x }--eIsDebugPrinting :: Lens' Bool TCEnv-eIsDebugPrinting f e = f (envIsDebugPrinting e) <&> \ x -> e { envIsDebugPrinting = x }--ePrintingPatternLambdas :: Lens' [QName] TCEnv-ePrintingPatternLambdas f e = f (envPrintingPatternLambdas e) <&> \ x -> e { envPrintingPatternLambdas = x }--eCallByNeed :: Lens' Bool TCEnv-eCallByNeed f e = f (envCallByNeed e) <&> \ x -> e { envCallByNeed = x }--eCurrentCheckpoint :: Lens' CheckpointId TCEnv-eCurrentCheckpoint f e = f (envCurrentCheckpoint e) <&> \ x -> e { envCurrentCheckpoint = x }--eCheckpoints :: Lens' (Map CheckpointId Substitution) TCEnv-eCheckpoints f e = f (envCheckpoints e) <&> \ x -> e { envCheckpoints = x }-------------------------------------------------------------------------------- ** Context-------------------------------------------------------------------------------- | The @Context@ is a stack of 'ContextEntry's.-type Context      = [ContextEntry]-type ContextEntry = Dom (Name, Type)-------------------------------------------------------------------------------- ** Let bindings------------------------------------------------------------------------------type LetBindings = Map Name (Open (Term, Dom Type))-------------------------------------------------------------------------------- ** Abstract mode------------------------------------------------------------------------------data AbstractMode-  = AbstractMode        -- ^ Abstract things in the current module can be accessed.-  | ConcreteMode        -- ^ No abstract things can be accessed.-  | IgnoreAbstractMode  -- ^ All abstract things can be accessed.-  deriving (Data, Show, Eq)--aDefToMode :: IsAbstract -> AbstractMode-aDefToMode AbstractDef = AbstractMode-aDefToMode ConcreteDef = ConcreteMode--aModeToDef :: AbstractMode -> IsAbstract-aModeToDef AbstractMode = AbstractDef-aModeToDef ConcreteMode = ConcreteDef-aModeToDef _ = __IMPOSSIBLE__-------------------------------------------------------------------------------- ** Insertion of implicit arguments------------------------------------------------------------------------------data ExpandHidden-  = ExpandLast      -- ^ Add implicit arguments in the end until type is no longer hidden 'Pi'.-  | DontExpandLast  -- ^ Do not append implicit arguments.-  deriving (Eq, Data)--data ExplicitToInstance-  = ExplicitToInstance    -- ^ Explicit arguments are considered as instance arguments-  | ExplicitStayExplicit-    deriving (Eq, Show, Data)---- | A candidate solution for an instance meta is a term with its type.---   It may be the case that the candidate is not fully applied yet or---   of the wrong type, hence the need for the type.-data Candidate  = Candidate { candidateTerm :: Term-                            , candidateType :: Type-                            , candidateEti  :: ExplicitToInstance-                            , candidateOverlappable :: Bool-                            }-  deriving (Show, Data)--instance Free Candidate where-  freeVars' (Candidate t u _ _) = freeVars' (t, u)-------------------------------------------------------------------------------- * Type checking warnings (aka non-fatal errors)-------------------------------------------------------------------------------- | A non-fatal error is an error which does not prevent us from--- checking the document further and interacting with the user.--data Warning-  = NicifierIssue            DeclarationWarning-  | TerminationIssue         [TerminationError]-  | UnreachableClauses       QName [[NamedArg DeBruijnPattern]]-  | CoverageIssue            QName [(Telescope, [NamedArg DeBruijnPattern])]-  -- ^ `CoverageIssue f pss` means that `pss` are not covered in `f`-  | CoverageNoExactSplit     QName [Clause]-  | NotStrictlyPositive      QName OccursWhere-  | UnsolvedMetaVariables    [Range]  -- ^ Do not use directly with 'warning'-  | UnsolvedInteractionMetas [Range]  -- ^ Do not use directly with 'warning'-  | UnsolvedConstraints      Constraints-    -- ^ Do not use directly with 'warning'-  | OldBuiltin               String String-    -- ^ In `OldBuiltin old new`, the BUILTIN old has been replaced by new-  | EmptyRewritePragma-    -- ^ If the user wrote just @{-# REWRITE #-}@.-  | UselessPublic-    -- ^ If the user opens a module public before the module header.-    --   (See issue #2377.)-  | UselessInline            QName-  -- Generic warnings for one-off things-  | InversionDepthReached    QName-  -- ^ The --inversion-max-depth was reached.-  | GenericWarning           Doc-    -- ^ Harmless generic warning (not an error)-  | GenericNonFatalError     Doc-    -- ^ Generic error which doesn't abort proceedings (not a warning)-  -- Safe flag errors-  | SafeFlagPostulate C.Name-  | SafeFlagPragma [String]-  | SafeFlagNonTerminating-  | SafeFlagTerminating-  | SafeFlagPrimTrustMe-  | SafeFlagNoPositivityCheck-  | SafeFlagPolarity-  | ParseWarning             ParseWarning-  | DeprecationWarning String String String-    -- ^ `DeprecationWarning old new version`:-    --   `old` is deprecated, use `new` instead. This will be an error in Agda `version`.-  | UserWarning String-    -- ^ User-defined warning (e.g. to mention that a name is deprecated)-  deriving (Show , Data)---warningName :: Warning -> WarningName-warningName w = case w of-  NicifierIssue dw           -> declarationWarningName dw-  ParseWarning pw            -> parseWarningName pw-  OldBuiltin{}               -> OldBuiltin_-  EmptyRewritePragma         -> EmptyRewritePragma_-  UselessPublic              -> UselessPublic_-  UnreachableClauses{}       -> UnreachableClauses_-  UselessInline{}            -> UselessInline_-  GenericWarning{}           -> GenericWarning_-  DeprecationWarning{}       -> DeprecationWarning_-  InversionDepthReached{}    -> InversionDepthReached_-  TerminationIssue{}         -> TerminationIssue_-  CoverageIssue{}            -> CoverageIssue_-  CoverageNoExactSplit{}     -> CoverageNoExactSplit_-  NotStrictlyPositive{}      -> NotStrictlyPositive_-  UnsolvedMetaVariables{}    -> UnsolvedMetaVariables_-  UnsolvedInteractionMetas{} -> UnsolvedInteractionMetas_-  UnsolvedConstraints{}      -> UnsolvedConstraints_-  GenericNonFatalError{}     -> GenericNonFatalError_-  SafeFlagPostulate{}        -> SafeFlagPostulate_-  SafeFlagPragma{}           -> SafeFlagPragma_-  SafeFlagNonTerminating     -> SafeFlagNonTerminating_-  SafeFlagTerminating        -> SafeFlagTerminating_-  SafeFlagPrimTrustMe        -> SafeFlagPrimTrustMe_-  SafeFlagNoPositivityCheck  -> SafeFlagNoPositivityCheck_-  SafeFlagPolarity           -> SafeFlagPolarity_-  UserWarning{}              -> UserWarning_--data TCWarning-  = TCWarning-    { tcWarningRange :: Range-        -- ^ Range where the warning was raised-    , tcWarning   :: Warning-        -- ^ The warning itself-    , tcWarningPrintedWarning :: Doc-        -- ^ The warning printed in the state and environment where it was raised-    , tcWarningCached :: Bool-        -- ^ Should the warning be affected by caching.-    }-  deriving Show---tcWarningOrigin :: TCWarning -> SrcFile-tcWarningOrigin = rangeFile . tcWarningRange--instance HasRange TCWarning where-  getRange = tcWarningRange---- used for merging lists of warnings-instance Eq TCWarning where-  x == y = equalHeadConstructors (tcWarning x) (tcWarning y)-            && getRange x == getRange y--equalHeadConstructors :: Warning -> Warning -> Bool-equalHeadConstructors = (==) `on` toConstr--getPartialDefs :: ReadTCState tcm => tcm [QName]-getPartialDefs = do-  tcst <- getTCState-  return $ catMaybes . fmap (extractQName . tcWarning)-         $ tcst ^. stTCWarnings where--    extractQName :: Warning -> Maybe QName-    extractQName (CoverageIssue f _) = Just f-    extractQName _                   = Nothing-------------------------------------------------------------------------------- * Type checking errors-------------------------------------------------------------------------------- | Information about a call.--data CallInfo = CallInfo-  { callInfoTarget :: QName-    -- ^ Target function name.-  , callInfoRange :: Range-    -- ^ Range of the target function.-  , callInfoCall :: Closure Term-    -- ^ To be formatted representation of the call.-  } deriving (Data, Show)---- no Eq, Ord instances: too expensive! (see issues 851, 852)---- | We only 'show' the name of the callee.-instance Pretty CallInfo where pretty = pretty . callInfoTarget-instance AllNames CallInfo where allNames = singleton . callInfoTarget---- UNUSED, but keep!--- -- | Call pathes are sequences of 'CallInfo's starting from a 'callSource'.--- data CallPath = CallPath---   { callSource :: QName---     -- ^ The originator of the first call.---   , callInfos :: [CallInfo]---     -- ^ The calls, in order from source to final target.---   }---   deriving (Show)---- -- | 'CallPath'es can be connected, but there is no empty callpath.--- --   Thus, they form a semigroup, but we choose to abuse 'Monoid'.--- instance Monoid CallPath where---   mempty = __IMPOSSIBLE__---   mappend (CallPath src cs) (CallPath _ cs') = CallPath src $ cs ++ cs'---- | Information about a mutual block which did not pass the--- termination checker.--data TerminationError = TerminationError-  { termErrFunctions :: [QName]-    -- ^ The functions which failed to check. (May not include-    -- automatically generated functions.)-  , termErrCalls :: [CallInfo]-    -- ^ The problematic call sites.-  } deriving (Data, Show)---- | Error when splitting a pattern variable into possible constructor patterns.-data SplitError-  = NotADatatype        (Closure Type)  -- ^ Neither data type nor record.-  | IrrelevantDatatype  (Closure Type)  -- ^ Data type, but in irrelevant position.-  | CoinductiveDatatype (Closure Type)  -- ^ Split on codata not allowed.-  -- UNUSED, but keep!-  -- -- | NoRecordConstructor Type  -- ^ record type, but no constructor-  | UnificationStuck-    { cantSplitConName  :: QName        -- ^ Constructor.-    , cantSplitTel      :: Telescope    -- ^ Context for indices.-    , cantSplitConIdx   :: Args         -- ^ Inferred indices (from type of constructor).-    , cantSplitGivenIdx :: Args         -- ^ Expected indices (from checking pattern).-    , cantSplitFailures :: [UnificationFailure] -- ^ Reason(s) why unification got stuck.-    }-  | GenericSplitError String-  deriving (Show)--data NegativeUnification-  = UnifyConflict Telescope Term Term-  | UnifyCycle Telescope Int Term-  deriving (Show)--data UnificationFailure-  = UnifyIndicesNotVars Telescope Type Term Term Args -- ^ Failed to apply injectivity to constructor of indexed datatype-  | UnifyRecursiveEq Telescope Type Int Term          -- ^ Can't solve equation because variable occurs in (type of) lhs-  | UnifyReflexiveEq Telescope Type Term              -- ^ Can't solve reflexive equation because --without-K is enabled-  deriving (Show)--data UnquoteError-  = BadVisibility String (Arg I.Term)-  | ConInsteadOfDef QName String String-  | DefInsteadOfCon QName String String-  | NonCanonical String I.Term-  | BlockedOnMeta TCState MetaId-  | UnquotePanic String-  deriving (Show)--data TypeError-        = InternalError String-        | NotImplemented String-        | NotSupported String-        | CompilationError String-        | TerminationCheckFailed [TerminationError]-        | PropMustBeSingleton-        | DataMustEndInSort Term-{- UNUSED-        | DataTooManyParameters-            -- ^ In @data D xs where@ the number of parameters @xs@ does not fit the-            --   the parameters given in the forward declaraion @data D Gamma : T@.--}-        | ShouldEndInApplicationOfTheDatatype Type-            -- ^ The target of a constructor isn't an application of its-            -- datatype. The 'Type' records what it does target.-        | ShouldBeAppliedToTheDatatypeParameters Term Term-            -- ^ The target of a constructor isn't its datatype applied to-            --   something that isn't the parameters. First term is the correct-            --   target and the second term is the actual target.-        | ShouldBeApplicationOf Type QName-            -- ^ Expected a type to be an application of a particular datatype.-        | ConstructorPatternInWrongDatatype QName QName -- ^ constructor, datatype-        | CantResolveOverloadedConstructorsTargetingSameDatatype QName [QName]-          -- ^ Datatype, constructors.-        | DoesNotConstructAnElementOf QName Type -- ^ constructor, type-        | DifferentArities-            -- ^ Varying number of arguments for a function.-        | WrongHidingInLHS-            -- ^ The left hand side of a function definition has a hidden argument-            --   where a non-hidden was expected.-        | WrongHidingInLambda Type-            -- ^ Expected a non-hidden function and found a hidden lambda.-        | WrongHidingInApplication Type-            -- ^ A function is applied to a hidden argument where a non-hidden was expected.-        | WrongNamedArgument (NamedArg A.Expr)-            -- ^ A function is applied to a hidden named argument it does not have.-        | WrongIrrelevanceInLambda-            -- ^ Wrong user-given relevance annotation in lambda.-        | WrongInstanceDeclaration-            -- ^ A term is declared as an instance but it’s not allowed-        | HidingMismatch Hiding Hiding-            -- ^ The given hiding does not correspond to the expected hiding.-        | RelevanceMismatch Relevance Relevance-            -- ^ The given relevance does not correspond to the expected relevane.-        | UninstantiatedDotPattern A.Expr-        | ForcedConstructorNotInstantiated A.Pattern-        | IlltypedPattern A.Pattern Type-        | IllformedProjectionPattern A.Pattern-        | CannotEliminateWithPattern (NamedArg A.Pattern) Type-        | WrongNumberOfConstructorArguments QName Nat Nat-        | ShouldBeEmpty Type [DeBruijnPattern]-        | ShouldBeASort Type-            -- ^ The given type should have been a sort.-        | ShouldBePi Type-            -- ^ The given type should have been a pi.-        | ShouldBeRecordType Type-        | ShouldBeRecordPattern DeBruijnPattern-        | NotAProjectionPattern (NamedArg A.Pattern)-        | NotAProperTerm-        | SetOmegaNotValidType-        | InvalidTypeSort Sort-            -- ^ This sort is not a type expression.-        | InvalidType Term-            -- ^ This term is not a type expression.-        | FunctionTypeInSizeUniv Term-            -- ^ This term, a function type constructor, lives in-            --   @SizeUniv@, which is not allowed.-        | SplitOnIrrelevant (Dom Type)-        | SplitOnNonVariable Term Type-        | DefinitionIsIrrelevant QName-        | VariableIsIrrelevant Name---        | UnequalLevel Comparison Term Term  -- UNUSED-        | UnequalTerms Comparison Term Term Type-        | UnequalTypes Comparison Type Type---      | UnequalTelescopes Comparison Telescope Telescope -- UNUSED-        | UnequalRelevance Comparison Term Term-            -- ^ The two function types have different relevance.-        | UnequalHiding Term Term-            -- ^ The two function types have different hiding.-        | UnequalSorts Sort Sort-        | UnequalBecauseOfUniverseConflict Comparison Term Term-        | NotLeqSort Sort Sort-        | MetaCannotDependOn MetaId [Nat] Nat-            -- ^ The arguments are the meta variable, the parameters it can-            --   depend on and the paratemeter that it wants to depend on.-        | MetaOccursInItself MetaId-        | MetaIrrelevantSolution MetaId Term-        | GenericError String-        | GenericDocError Doc-        | BuiltinMustBeConstructor String A.Expr-        | NoSuchBuiltinName String-        | DuplicateBuiltinBinding String Term Term-        | NoBindingForBuiltin String-        | NoSuchPrimitiveFunction String-        | ShadowedModule C.Name [A.ModuleName]-        | BuiltinInParameterisedModule String-        | IllegalLetInTelescope C.TypedBinding-        | NoRHSRequiresAbsurdPattern [NamedArg A.Pattern]-        | AbsurdPatternRequiresNoRHS [NamedArg A.Pattern]-        | TooFewFields QName [C.Name]-        | TooManyFields QName [C.Name]-        | DuplicateFields [C.Name]-        | DuplicateConstructors [C.Name]-        | WithOnFreeVariable A.Expr Term-        | UnexpectedWithPatterns [A.Pattern]-        | WithClausePatternMismatch A.Pattern (NamedArg DeBruijnPattern)-        | FieldOutsideRecord-        | ModuleArityMismatch A.ModuleName Telescope [NamedArg A.Expr]-    -- Coverage errors--- UNUSED:        | IncompletePatternMatching Term [Elim] -- can only happen if coverage checking is switched off-        | SplitError SplitError-        | ImpossibleConstructor QName NegativeUnification-    -- Positivity errors-        | TooManyPolarities QName Int-    -- Import errors-        | LocalVsImportedModuleClash ModuleName-        | SolvedButOpenHoles-          -- ^ Some interaction points (holes) have not been filled by user.-          --   There are not 'UnsolvedMetas' since unification solved them.-          --   This is an error, since interaction points are never filled-          --   without user interaction.-        | CyclicModuleDependency [C.TopLevelModuleName]-        | FileNotFound C.TopLevelModuleName [AbsolutePath]-        | OverlappingProjects AbsolutePath C.TopLevelModuleName C.TopLevelModuleName-        | AmbiguousTopLevelModuleName C.TopLevelModuleName [AbsolutePath]-        | ModuleNameUnexpected C.TopLevelModuleName C.TopLevelModuleName-          -- ^ Found module name, expected module name.-        | ModuleNameDoesntMatchFileName C.TopLevelModuleName [AbsolutePath]-        | ClashingFileNamesFor ModuleName [AbsolutePath]-        | ModuleDefinedInOtherFile C.TopLevelModuleName AbsolutePath AbsolutePath-          -- ^ Module name, file from which it was loaded, file which-          -- the include path says contains the module.-    -- Scope errors-        | BothWithAndRHS-        | AbstractConstructorNotInScope A.QName-        | NotInScope [C.QName]-        | NoSuchModule C.QName-        | AmbiguousName C.QName (NonemptyList A.QName)-        | AmbiguousModule C.QName (NonemptyList A.ModuleName)-        | UninstantiatedModule C.QName-        | ClashingDefinition C.QName A.QName-        | ClashingModule A.ModuleName A.ModuleName-        | ClashingImport C.Name A.QName-        | ClashingModuleImport C.Name A.ModuleName-        | PatternShadowsConstructor A.Name A.QName-        | ModuleDoesntExport C.QName [C.ImportedName]-        | DuplicateImports C.QName [C.ImportedName]-        | InvalidPattern C.Pattern-        | RepeatedVariablesInPattern [C.Name]-    -- Concrete to Abstract errors-        | NotAModuleExpr C.Expr-            -- ^ The expr was used in the right hand side of an implicit module-            --   definition, but it wasn't of the form @m Delta@.-        | NotAnExpression C.Expr-        | NotAValidLetBinding NiceDeclaration-        | NotValidBeforeField NiceDeclaration-        | NothingAppliedToHiddenArg C.Expr-        | NothingAppliedToInstanceArg C.Expr-    -- Pattern synonym errors-        | BadArgumentsToPatternSynonym A.AmbiguousQName-        | TooFewArgumentsToPatternSynonym A.AmbiguousQName-        | CannotResolveAmbiguousPatternSynonym (NonemptyList (A.QName, A.PatternSynDefn))-        | UnusedVariableInPatternSynonym-    -- Operator errors-        | NoParseForApplication [C.Expr]-        | AmbiguousParseForApplication [C.Expr] [C.Expr]-        | NoParseForLHS LHSOrPatSyn C.Pattern-        | AmbiguousParseForLHS LHSOrPatSyn C.Pattern [C.Pattern]-        | OperatorInformation [NotationSection] TypeError-{- UNUSED-        | NoParseForPatternSynonym C.Pattern-        | AmbiguousParseForPatternSynonym C.Pattern [C.Pattern]--}-    -- Usage errors-    -- Implicit From Scope errors-        | IFSNoCandidateInScope Type-    -- Reflection errors-        | UnquoteFailed UnquoteError-        | DeBruijnIndexOutOfScope Nat Telescope [Name]-    -- Language option errors-        | NeedOptionCopatterns-        | NeedOptionRewriting-    -- Failure associated to warnings-        | NonFatalErrors [TCWarning]-    -- Instance search errors-        | InstanceSearchDepthExhausted Term Type Int-          deriving Show---- | Distinguish error message when parsing lhs or pattern synonym, resp.-data LHSOrPatSyn = IsLHS | IsPatSyn deriving (Eq, Show)---- | Type-checking errors.--data TCErr-  = TypeError-    { tcErrState   :: TCState-        -- ^ The state in which the error was raised.-    , tcErrClosErr :: Closure TypeError-        -- ^ The environment in which the error as raised plus the error.-    }-  | Exception Range Doc-  | IOException TCState Range E.IOException-    -- ^ The first argument is the state in which the error was-    -- raised.-  | PatternErr-      -- ^ The exception which is usually caught.-      --   Raised for pattern violations during unification ('assignV')-      --   but also in other situations where we want to backtrack.--instance Error TCErr where-  strMsg = Exception noRange . text . strMsg--instance Show TCErr where-  show (TypeError _ e)     = show (envRange $ clEnv e) ++ ": " ++ show (clValue e)-  show (Exception r d)     = show r ++ ": " ++ render d-  show (IOException _ r e) = show r ++ ": " ++ show e-  show PatternErr{}        = "Pattern violation (you shouldn't see this)"--instance HasRange TCErr where-  getRange (TypeError _ cl)    = envRange $ clEnv cl-  getRange (Exception r _)     = r-  getRange (IOException s r _) = r-  getRange PatternErr{}        = noRange--instance E.Exception TCErr---------------------------------------------------------------------------------- * Accessing options--------------------------------------------------------------------------------class (Functor m, Applicative m, Monad m) => HasOptions m where-  -- | Returns the pragma options which are currently in effect.-  pragmaOptions      :: m PragmaOptions-  -- | Returns the command line options which are currently in effect.-  commandLineOptions :: m CommandLineOptions--instance MonadIO m => HasOptions (TCMT m) where-  pragmaOptions = use stPragmaOptions--  commandLineOptions = do-    p  <- use stPragmaOptions-    cl <- stPersistentOptions . stPersistentState <$> get-    return $ cl { optPragmaOptions = p }--instance HasOptions m => HasOptions (ExceptT e m) where-  pragmaOptions      = lift pragmaOptions-  commandLineOptions = lift commandLineOptions--instance HasOptions m => HasOptions (ListT m) where-  pragmaOptions      = lift pragmaOptions-  commandLineOptions = lift commandLineOptions--instance HasOptions m => HasOptions (MaybeT m) where-  pragmaOptions      = lift pragmaOptions-  commandLineOptions = lift commandLineOptions--instance HasOptions m => HasOptions (ReaderT r m) where-  pragmaOptions      = lift pragmaOptions-  commandLineOptions = lift commandLineOptions--instance HasOptions m => HasOptions (StateT s m) where-  pragmaOptions      = lift pragmaOptions-  commandLineOptions = lift commandLineOptions--instance (HasOptions m, Monoid w) => HasOptions (WriterT w m) where-  pragmaOptions      = lift pragmaOptions-  commandLineOptions = lift commandLineOptions---------------------------------------------------------------------------------- * The reduce monad---------------------------------------------------------------------------------- | Environment of the reduce monad.-data ReduceEnv = ReduceEnv-  { redEnv :: TCEnv    -- ^ Read only access to environment.-  , redSt  :: TCState  -- ^ Read only access to state (signature, metas...).-  }--mapRedEnv :: (TCEnv -> TCEnv) -> ReduceEnv -> ReduceEnv-mapRedEnv f s = s { redEnv = f (redEnv s) }--mapRedSt :: (TCState -> TCState) -> ReduceEnv -> ReduceEnv-mapRedSt f s = s { redSt = f (redSt s) }--mapRedEnvSt :: (TCEnv -> TCEnv) -> (TCState -> TCState) -> ReduceEnv-            -> ReduceEnv-mapRedEnvSt f g (ReduceEnv e s) = ReduceEnv (f e) (g s)---- Lenses-reduceEnv :: Lens' TCEnv ReduceEnv-reduceEnv f s = f (redEnv s) <&> \ e -> s { redEnv = e }--reduceSt :: Lens' TCState ReduceEnv-reduceSt f s = f (redSt s) <&> \ e -> s { redSt = e }--newtype ReduceM a = ReduceM { unReduceM :: ReduceEnv -> a }---  deriving (Functor, Applicative, Monad)--onReduceEnv :: (ReduceEnv -> ReduceEnv) -> ReduceM a -> ReduceM a-onReduceEnv f (ReduceM m) = ReduceM (m . f)--fmapReduce :: (a -> b) -> ReduceM a -> ReduceM b-fmapReduce f (ReduceM m) = ReduceM $ \ e -> f $! m e-{-# INLINE fmapReduce #-}--apReduce :: ReduceM (a -> b) -> ReduceM a -> ReduceM b-apReduce (ReduceM f) (ReduceM x) = ReduceM $ \ e -> f e $! x e-{-# INLINE apReduce #-}--bindReduce :: ReduceM a -> (a -> ReduceM b) -> ReduceM b-bindReduce (ReduceM m) f = ReduceM $ \ e -> unReduceM (f $! m e) e-{-# INLINE bindReduce #-}--instance Functor ReduceM where-  fmap = fmapReduce--instance Applicative ReduceM where-  pure x = ReduceM (const x)-  (<*>) = apReduce--instance Monad ReduceM where-  return = pure-  (>>=) = bindReduce-  (>>) = (*>)--instance ReadTCState ReduceM where-  getTCState = ReduceM redSt--runReduceM :: ReduceM a -> TCM a-runReduceM m = do-  e <- ask-  s <- get-  return $! unReduceM m (ReduceEnv e s)--runReduceF :: (a -> ReduceM b) -> TCM (a -> b)-runReduceF f = do-  e <- ask-  s <- get-  return $ \x -> unReduceM (f x) (ReduceEnv e s)--instance MonadReader TCEnv ReduceM where-  ask   = ReduceM redEnv-  local = onReduceEnv . mapRedEnv-------------------------------------------------------------------------------- * Type checking monad transformer------------------------------------------------------------------------------newtype TCMT m a = TCM { unTCM :: IORef TCState -> TCEnv -> m a }---- TODO: make dedicated MonadTCEnv and MonadTCState service classes--instance MonadIO m => MonadReader TCEnv (TCMT m) where-  ask = TCM $ \s e -> return e-  local f (TCM m) = TCM $ \s e -> m s (f e)--instance MonadIO m => MonadState TCState (TCMT m) where-  get   = TCM $ \s _ -> liftIO (readIORef s)-  put s = TCM $ \r _ -> liftIO (writeIORef r s)--type TCM = TCMT IO--class ( Applicative tcm, MonadIO tcm-      , MonadReader TCEnv tcm-      , MonadState TCState tcm-      , HasOptions tcm-      ) => MonadTCM tcm where-    liftTCM :: TCM a -> tcm a--instance MonadIO m => ReadTCState (TCMT m) where-  getTCState = get--instance MonadError TCErr (TCMT IO) where-  throwError = liftIO . E.throwIO-  catchError m h = TCM $ \r e -> do-    oldState <- liftIO (readIORef r)-    unTCM m r e `E.catch` \err -> do-      -- Reset the state, but do not forget changes to the persistent-      -- component. Not for pattern violations.-      case err of-        PatternErr -> return ()-        _          ->-          liftIO $ do-            newState <- readIORef r-            writeIORef r $ oldState { stPersistentState = stPersistentState newState }-      unTCM (h err) r e---- | Interaction monad.--type IM = TCMT (Haskeline.InputT IO)--runIM :: IM a -> TCM a-runIM = mapTCMT (Haskeline.runInputT Haskeline.defaultSettings)--instance MonadError TCErr IM where-  throwError = liftIO . E.throwIO-  catchError m h = mapTCMT liftIO $ runIM m `catchError` (runIM . h)---- | Preserve the state of the failing computation.-catchError_ :: TCM a -> (TCErr -> TCM a) -> TCM a-catchError_ m h = TCM $ \r e ->-  unTCM m r e-  `E.catch` \err -> unTCM (h err) r e---- | Execute a finalizer even when an exception is thrown.---   Does not catch any errors.---   In case both the regular computation and the finalizer---   throw an exception, the one of the finalizer is propagated.-finally_ :: TCM a -> TCM b -> TCM a-finally_ m f = do-    x <- m `catchError_` \ err -> f >> throwError err-    _ <- f-    return x--{-# SPECIALIZE INLINE mapTCMT :: (forall a. IO a -> IO a) -> TCM a -> TCM a #-}-mapTCMT :: (forall a. m a -> n a) -> TCMT m a -> TCMT n a-mapTCMT f (TCM m) = TCM $ \s e -> f (m s e)--pureTCM :: MonadIO m => (TCState -> TCEnv -> a) -> TCMT m a-pureTCM f = TCM $ \r e -> do-  s <- liftIO $ readIORef r-  return (f s e)--{-# RULES "liftTCM/id" liftTCM = id #-}-instance MonadIO m => MonadTCM (TCMT m) where-    liftTCM = mapTCMT liftIO--instance MonadTCM tcm => MonadTCM (MaybeT tcm) where-  liftTCM = lift . liftTCM--instance MonadTCM tcm => MonadTCM (ListT tcm) where-  liftTCM = lift . liftTCM--instance MonadTCM tcm => MonadTCM (ExceptT err tcm) where-  liftTCM = lift . liftTCM--instance (Monoid w, MonadTCM tcm) => MonadTCM (WriterT w tcm) where-  liftTCM = lift . liftTCM--{- The following is not possible since MonadTCM needs to be a--- MonadState TCState and a MonadReader TCEnv--instance (MonadTCM tcm) => MonadTCM (StateT s tcm) where-  liftTCM = lift . liftTCM--instance (MonadTCM tcm) => MonadTCM (ReaderT r tcm) where-  liftTCM = lift . liftTCM--}--instance MonadTrans TCMT where-    lift m = TCM $ \_ _ -> m---- We want a special monad implementation of fail.-instance MonadIO m => Monad (TCMT m) where-    return = pure-    (>>=)  = bindTCMT-    (>>)   = (*>)-    fail   = internalError---- One goal of the definitions and pragmas below is to inline the--- monad operations as much as possible. This doesn't seem to have a--- large effect on the performance of the normal executable, but (at--- least on one machine/configuration) it has a massive effect on the--- performance of the profiling executable [1], and reduces the time--- attributed to bind from over 90% to about 25%.------ [1] When compiled with -auto-all and run with -p: roughly 750%--- faster for one example.--returnTCMT :: MonadIO m => a -> TCMT m a-returnTCMT = \x -> TCM $ \_ _ -> return x-{-# INLINE returnTCMT #-}--bindTCMT :: MonadIO m => TCMT m a -> (a -> TCMT m b) -> TCMT m b-bindTCMT = \(TCM m) k -> TCM $ \r e -> m r e >>= \x -> unTCM (k x) r e-{-# INLINE bindTCMT #-}--thenTCMT :: MonadIO m => TCMT m a -> TCMT m b -> TCMT m b-thenTCMT = \(TCM m1) (TCM m2) -> TCM $ \r e -> m1 r e >> m2 r e-{-# INLINE thenTCMT #-}--instance MonadIO m => Functor (TCMT m) where-  fmap = fmapTCMT--fmapTCMT :: MonadIO m => (a -> b) -> TCMT m a -> TCMT m b-fmapTCMT = \f (TCM m) -> TCM $ \r e -> liftM f (m r e)-{-# INLINE fmapTCMT #-}--instance MonadIO m => Applicative (TCMT m) where-  pure  = returnTCMT-  (<*>) = apTCMT--apTCMT :: MonadIO m => TCMT m (a -> b) -> TCMT m a -> TCMT m b-apTCMT = \(TCM mf) (TCM m) -> TCM $ \r e -> ap (mf r e) (m r e)-{-# INLINE apTCMT #-}--instance MonadIO m => MonadIO (TCMT m) where-  liftIO m = TCM $ \s e -> do-               let r = envRange e-               liftIO $ wrap s r $ do-                 x <- m-                 x `seq` return x-    where-      wrap s r m = E.catch m $ \e -> do-        s <- readIORef s-        E.throwIO $ IOException s r e---- | We store benchmark statistics in an IORef.---   This enables benchmarking pure computation, see---   "Agda.Benchmarking".-instance MonadBench Phase TCM where-  getBenchmark = liftIO $ getBenchmark-  putBenchmark = liftIO . putBenchmark-  finally = finally_--instance Null (TCM Doc) where-  empty = return empty-  null = __IMPOSSIBLE__---- | Short-cutting disjunction forms a monoid.-instance Semigroup (TCM Any) where-  ma <> mb = Any <$> do (getAny <$> ma) `or2M` (getAny <$> mb)--instance Monoid (TCM Any) where-  mempty = return mempty-  mappend = (<>)--patternViolation :: TCM a-patternViolation = throwError PatternErr--internalError :: MonadTCM tcm => String -> tcm a-internalError s = typeError $ InternalError s--genericError :: MonadTCM tcm => String -> tcm a-genericError = typeError . GenericError--{-# SPECIALIZE genericDocError :: Doc -> TCM a #-}-genericDocError :: MonadTCM tcm => Doc -> tcm a-genericDocError = typeError . GenericDocError--{-# SPECIALIZE typeError :: TypeError -> TCM a #-}-typeError :: MonadTCM tcm => TypeError -> tcm a-typeError err = liftTCM $ throwError =<< typeError_ err--{-# SPECIALIZE typeError_ :: TypeError -> TCM TCErr #-}-typeError_ :: MonadTCM tcm => TypeError -> tcm TCErr-typeError_ err = liftTCM $ TypeError <$> get <*> buildClosure err---- | Running the type checking monad (most general form).-{-# SPECIALIZE runTCM :: TCEnv -> TCState -> TCM a -> IO (a, TCState) #-}-runTCM :: MonadIO m => TCEnv -> TCState -> TCMT m a -> m (a, TCState)-runTCM e s m = do-  r <- liftIO $ newIORef s-  a <- unTCM m r e-  s <- liftIO $ readIORef r-  return (a, s)---- | Running the type checking monad on toplevel (with initial state).-runTCMTop :: TCM a -> IO (Either TCErr a)-runTCMTop m = (Right <$> runTCMTop' m) `E.catch` (return . Left)--runTCMTop' :: MonadIO m => TCMT m a -> m a-runTCMTop' m = do-  r <- liftIO $ newIORef initState-  unTCM m r initEnv---- | 'runSafeTCM' runs a safe 'TCM' action (a 'TCM' action which cannot fail)---   in the initial environment.--runSafeTCM :: TCM a -> TCState -> IO (a, TCState)-runSafeTCM m st = runTCM initEnv st m `E.catch` (\ (e :: TCErr) -> __IMPOSSIBLE__)--- runSafeTCM m st = either__IMPOSSIBLE__ return <$> do---     -- Errors must be impossible.---     runTCM $ do---         put st---         a <- m---         st <- get---         return (a, st)---- | Runs the given computation in a separate thread, with /a copy/ of--- the current state and environment.------ Note that Agda sometimes uses actual, mutable state. If the--- computation given to @forkTCM@ tries to /modify/ this state, then--- bad things can happen, because accesses are not mutually exclusive.--- The @forkTCM@ function has been added mainly to allow the thread to--- /read/ (a snapshot of) the current state in a convenient way.------ Note also that exceptions which are raised in the thread are not--- propagated to the parent, so the thread should not do anything--- important.--forkTCM :: TCM a -> TCM ()-forkTCM m = do-  s <- get-  e <- ask-  liftIO $ void $ C.forkIO $ void $ runTCM e s m----- | Base name for extended lambda patterns-extendedLambdaName :: String-extendedLambdaName = ".extendedlambda"---- | Name of absurdLambda definitions.-absurdLambdaName :: String-absurdLambdaName = ".absurdlambda"---- | Check whether we have an definition from an absurd lambda.-isAbsurdLambdaName :: QName -> Bool-isAbsurdLambdaName = (absurdLambdaName ==) . prettyShow . qnameName-------------------------------------------------------------------------------- * KillRange instances------------------------------------------------------------------------------instance KillRange Signature where-  killRange (Sig secs defs rews) = killRange2 Sig secs defs rews--instance KillRange Sections where-  killRange = fmap killRange--instance KillRange Definitions where-  killRange = fmap killRange--instance KillRange RewriteRuleMap where-  killRange = fmap killRange--instance KillRange Section where-  killRange (Section tel) = killRange1 Section tel--instance KillRange Definition where-  killRange (Defn ai name t pols occs displ mut compiled inst copy ma inj def) =-    killRange12 Defn ai name t pols occs displ mut compiled inst copy ma inj def-    -- TODO clarify: Keep the range in the defName field?--instance KillRange NLPat where-  killRange (PVar x y) = killRange2 PVar x y-  killRange (PWild)    = PWild-  killRange (PDef x y) = killRange2 PDef x y-  killRange (PLam x y) = killRange2 PLam x y-  killRange (PPi x y)  = killRange2 PPi x y-  killRange (PBoundVar x y) = killRange2 PBoundVar x y-  killRange (PTerm x)  = killRange1 PTerm x--instance KillRange NLPType where-  killRange (NLPType s a) = killRange2 NLPType s a--instance KillRange RewriteRule where-  killRange (RewriteRule q gamma f es rhs t) =-    killRange6 RewriteRule q gamma f es rhs t--instance KillRange CompiledRepresentation where-  killRange = id---instance KillRange EtaEquality where-  killRange = id--instance KillRange ExtLamInfo where-  killRange (ExtLamInfo m) = killRange1 ExtLamInfo m--instance KillRange FunctionFlag where-  killRange = id--instance KillRange Defn where-  killRange def =-    case def of-      Axiom -> Axiom-      AbstractDefn{} -> __IMPOSSIBLE__ -- only returned by 'getConstInfo'!-      Function cls comp tt inv mut isAbs delayed proj flags term extlam with copat ->-        killRange13 Function cls comp tt inv mut isAbs delayed proj flags term extlam with copat-      Datatype a b c d e f g h       -> killRange8 Datatype a b c d e f g h-      Record a b c d e f g h i j     -> killRange10 Record a b c d e f g h i j-      Constructor a b c d e f g h    -> killRange8 Constructor a b c d e f g h-      Primitive a b c d e            -> killRange5 Primitive a b c d e--instance KillRange MutualId where-  killRange = id--instance KillRange c => KillRange (FunctionInverse' c) where-  killRange NotInjective = NotInjective-  killRange (Inverse m)  = Inverse $ killRangeMap m--instance KillRange TermHead where-  killRange SortHead     = SortHead-  killRange PiHead       = PiHead-  killRange (ConsHead q) = ConsHead $ killRange q-  killRange h@VarHead{}  = h-  killRange UnknownHead  = UnknownHead--instance KillRange Projection where-  killRange (Projection a b c d e) = killRange5 Projection a b c d e--instance KillRange ProjLams where-  killRange = id--instance KillRange a => KillRange (Open a) where-  killRange = fmap killRange--instance KillRange DisplayForm where-  killRange (Display n es dt) = killRange3 Display n es dt--instance KillRange Polarity where-  killRange = id--instance KillRange IsForced where-  killRange = id--instance KillRange DisplayTerm where-  killRange dt =-    case dt of-      DWithApp dt dts es -> killRange3 DWithApp dt dts es-      DCon q ci dts     -> killRange3 DCon q ci dts-      DDef q dts        -> killRange2 DDef q dts-      DDot v            -> killRange1 DDot v-      DTerm v           -> killRange1 DTerm v++#if __GLASGOW_HASKELL__ >= 800+import qualified Control.Monad.Fail as Fail+#endif++import Control.Monad.State+import Control.Monad.Reader+import Control.Monad.Writer hiding ((<>))+import Control.Monad.Trans.Maybe+import Control.Applicative hiding (empty)++import Data.Function+import Data.Int+import Data.IntMap (IntMap)+import qualified Data.IntMap as IntMap+import qualified Data.List as List+import Data.Maybe+import Data.Map (Map)+import qualified Data.Map as Map -- hiding (singleton, null, empty)+import Data.Monoid ( Monoid, mempty, mappend )+import Data.Sequence (Seq)+import Data.Set (Set)+import qualified Data.Set as Set -- hiding (singleton, null, empty)+import Data.Semigroup ( Semigroup, (<>), Any(..) )+import Data.Data (Data, toConstr)+import Data.Foldable (Foldable)+import Data.String+import Data.Text.Lazy (Text)+import qualified Data.Text.Lazy as T+import Data.Traversable+import Data.IORef++import qualified System.Console.Haskeline as Haskeline++import Agda.Benchmarking (Benchmark, Phase)++import Agda.Syntax.Concrete (TopLevelModuleName)+import Agda.Syntax.Common+import qualified Agda.Syntax.Concrete as C+import Agda.Syntax.Concrete.Definitions+  (NiceDeclaration, DeclarationWarning, declarationWarningName)+import qualified Agda.Syntax.Abstract as A+import Agda.Syntax.Abstract (AllNames)+import Agda.Syntax.Internal as I+import Agda.Syntax.Internal.Pattern ()+import Agda.Syntax.Internal.Generic (TermLike(..))+import Agda.Syntax.Literal+import Agda.Syntax.Parser (PM(..), ParseWarning, runPMIO)+import Agda.Syntax.Parser.Monad (parseWarningName)+import Agda.Syntax.Treeless (Compiled)+import Agda.Syntax.Fixity+import Agda.Syntax.Position+import Agda.Syntax.Scope.Base+import qualified Agda.Syntax.Info as Info++import Agda.TypeChecking.CompiledClause+import Agda.TypeChecking.Coverage.SplitTree+import Agda.TypeChecking.Positivity.Occurrence+import Agda.TypeChecking.Free.Lazy (Free(freeVars'), bind', bind)++import Agda.Termination.CutOff++import {-# SOURCE #-} Agda.Compiler.Backend++-- import {-# SOURCE #-} Agda.Interaction.FindFile+import Agda.Interaction.Options+import Agda.Interaction.Options.Warnings+import Agda.Interaction.Response+  (InteractionOutputCallback, defaultInteractionOutputCallback, Response(..))+import Agda.Interaction.Highlighting.Precise+  (CompressedFile, HighlightingInfo)+import Agda.Interaction.Library++import Agda.Utils.Except+  ( Error(strMsg)+  , ExceptT+  , MonadError(catchError, throwError)+  , runExceptT+  , mapExceptT+  )++import Agda.Utils.Benchmark (MonadBench(..))+import Agda.Utils.FileName+import Agda.Utils.HashMap (HashMap)+import qualified Agda.Utils.HashMap as HMap+import Agda.Utils.Hash+import Agda.Utils.Lens+import Agda.Utils.List+import Agda.Utils.ListT+import Agda.Utils.Monad+import Agda.Utils.NonemptyList+import Agda.Utils.Null+import Agda.Utils.Permutation+import Agda.Utils.Pretty hiding ((<>))+import qualified Agda.Utils.Pretty as P+import Agda.Utils.Singleton+import Agda.Utils.Functor+import Agda.Utils.Function+import Agda.Utils.WithDefault ( collapseDefault )++#include "undefined.h"+import Agda.Utils.Impossible++---------------------------------------------------------------------------+-- * Type checking state+---------------------------------------------------------------------------++data TCState = TCSt+  { stPreScopeState   :: !PreScopeState+    -- ^ The state which is frozen after scope checking.+  , stPostScopeState  :: !PostScopeState+    -- ^ The state which is modified after scope checking.+  , stPersistentState :: !PersistentTCState+    -- ^ State which is forever, like a diamond.+  }++class Monad m => ReadTCState m where+  getTCState :: m TCState+  withTCState :: (TCState -> TCState) -> m a -> m a++instance ReadTCState m => ReadTCState (MaybeT m) where+  getTCState = lift getTCState+  withTCState = mapMaybeT . withTCState++instance ReadTCState m => ReadTCState (ListT m) where+  getTCState = lift getTCState+  withTCState f = ListT . withTCState f . runListT++instance ReadTCState m => ReadTCState (ExceptT err m) where+  getTCState = lift getTCState+  withTCState = mapExceptT . withTCState++instance ReadTCState m => ReadTCState (ReaderT r m) where+  getTCState = lift getTCState+  withTCState = mapReaderT . withTCState++instance (Monoid w, ReadTCState m) => ReadTCState (WriterT w m) where+  getTCState = lift getTCState+  withTCState = mapWriterT . withTCState++instance ReadTCState m => ReadTCState (StateT s m) where+  getTCState = lift getTCState+  withTCState = mapStateT . withTCState++instance Show TCState where+  show _ = "TCSt{}"++data PreScopeState = PreScopeState+  { stPreTokens             :: !CompressedFile -- from lexer+    -- ^ Highlighting info for tokens (but not those tokens for+    -- which highlighting exists in 'stSyntaxInfo').+  , stPreImports            :: !Signature  -- XX populated by scopec hecker+    -- ^ Imported declared identifiers.+    --   Those most not be serialized!+  , stPreImportedModules    :: !(Set ModuleName)  -- imports logic+  , stPreModuleToSource     :: !ModuleToSource   -- imports+  , stPreVisitedModules     :: !VisitedModules   -- imports+  , stPreScope              :: !ScopeInfo+    -- generated by scope checker, current file: which modules you have, public definitions, current file, maps concrete names to abstract names.+  , stPrePatternSyns        :: !A.PatternSynDefns+    -- ^ Pattern synonyms of the current file.  Serialized.+  , stPrePatternSynImports  :: !A.PatternSynDefns+    -- ^ Imported pattern synonyms.  Must not be serialized!+  , stPreGeneralizedVars    :: !(Maybe (Set QName))+    -- ^ Collected generalizable variables; used during scope checking of terms+  , stPrePragmaOptions      :: !PragmaOptions+    -- ^ Options applying to the current file. @OPTIONS@+    -- pragmas only affect this field.+  , stPreImportedBuiltins   :: !(BuiltinThings PrimFun)+  , stPreImportedDisplayForms :: !DisplayForms+    -- ^ Display forms added by someone else to imported identifiers+  , stPreImportedInstanceDefs :: !InstanceTable+  , stPreForeignCode        :: !(Map BackendName [ForeignCode])+    -- ^ @{-\# FOREIGN \#-}@ code that should be included in the compiled output.+    -- Does not include code for imported modules.+  , stPreFreshInteractionId :: !InteractionId+  , stPreImportedUserWarnings :: !(Map A.QName String)+    -- ^ Imported @UserWarning@s, not to be stored in the @Interface@+  , stPreLocalUserWarnings    :: !(Map A.QName String)+    -- ^ Locally defined @UserWarning@s, to be stored in the @Interface@+  }++type DisambiguatedNames = IntMap A.QName++data PostScopeState = PostScopeState+  { stPostSyntaxInfo          :: !CompressedFile+    -- ^ Highlighting info.+  , stPostDisambiguatedNames  :: !DisambiguatedNames+    -- ^ Disambiguation carried out by the type checker.+    --   Maps position of first name character to disambiguated @'A.QName'@+    --   for each @'A.AmbiguousQName'@ already passed by the type checker.+  , stPostMetaStore           :: !MetaStore+  , stPostInteractionPoints   :: !InteractionPoints -- scope checker first+  , stPostAwakeConstraints    :: !Constraints+  , stPostSleepingConstraints :: !Constraints+  , stPostDirty               :: !Bool -- local+    -- ^ Dirty when a constraint is added, used to prevent pointer update.+    -- Currently unused.+  , stPostOccursCheckDefs     :: !(Set QName) -- local+    -- ^ Definitions to be considered during occurs check.+    --   Initialized to the current mutual block before the check.+    --   During occurs check, we remove definitions from this set+    --   as soon we have checked them.+  , stPostSignature           :: !Signature+    -- ^ Declared identifiers of the current file.+    --   These will be serialized after successful type checking.+  , stPostModuleCheckpoints   :: !(Map ModuleName CheckpointId)+    -- ^ For each module remember the checkpoint corresponding to the orignal+    --   context of the module parameters.+  , stPostImportsDisplayForms :: !DisplayForms+    -- ^ Display forms we add for imported identifiers+  , stPostCurrentModule       :: !(Maybe ModuleName)+    -- ^ The current module is available after it has been type+    -- checked.+  , stPostInstanceDefs        :: !TempInstanceTable+  , stPostConcreteNames       :: !(Map Name [C.Name])+    -- ^ Map keeping track of concrete names assigned to each abstract name+    --   (can be more than one name in case the first one is shadowed)+  , stPostShadowingNames      :: !(Map Name [Name])+    -- ^ Map keeping track of which names could maybe be shadowed by+    -- another name+  , stPostStatistics          :: !Statistics+    -- ^ Counters to collect various statistics about meta variables etc.+    --   Only for current file.+  , stPostTCWarnings          :: ![TCWarning]+  , stPostMutualBlocks        :: !(Map MutualId MutualBlock)+  , stPostLocalBuiltins       :: !(BuiltinThings PrimFun)+  , stPostFreshMetaId         :: !MetaId+  , stPostFreshMutualId       :: !MutualId+  , stPostFreshProblemId      :: !ProblemId+  , stPostFreshCheckpointId   :: !CheckpointId+  , stPostFreshInt            :: !Int+  , stPostFreshNameId         :: !NameId+  , stPostAreWeCaching        :: !Bool+  , stPostConsideringInstance :: !Bool+  }++-- | A mutual block of names in the signature.+data MutualBlock = MutualBlock+  { mutualInfo  :: Info.MutualInfo+    -- ^ The original info of the mutual block.+  , mutualNames :: Set QName+  } deriving (Show, Eq)++instance Null MutualBlock where+  empty = MutualBlock empty empty++-- | A part of the state which is not reverted when an error is thrown+-- or the state is reset.+data PersistentTCState = PersistentTCSt+  { stDecodedModules    :: DecodedModules+  , stPersistentOptions :: CommandLineOptions+  , stInteractionOutputCallback  :: InteractionOutputCallback+    -- ^ Callback function to call when there is a response+    --   to give to the interactive frontend.+    --   See the documentation of 'InteractionOutputCallback'.+  , stBenchmark         :: !Benchmark+    -- ^ Structure to track how much CPU time was spent on which Agda phase.+    --   Needs to be a strict field to avoid space leaks!+  , stAccumStatistics   :: !Statistics+    -- ^ Should be strict field.+  , stLoadedFileCache   :: !(Maybe LoadedFileCache)+    -- ^ Cached typechecking state from the last loaded file.+    --   Should be Nothing when checking imports.+  , stPersistBackends   :: [Backend]+    -- ^ Current backends with their options+  }++data LoadedFileCache = LoadedFileCache+  { lfcCached  :: !CachedTypeCheckLog+  , lfcCurrent :: !CurrentTypeCheckLog+  }++-- | A log of what the type checker does and states after the action is+-- completed.  The cached version is stored first executed action first.+type CachedTypeCheckLog = [(TypeCheckAction, PostScopeState)]++-- | Like 'CachedTypeCheckLog', but storing the log for an ongoing type+-- checking of a module.  Stored in reverse order (last performed action+-- first).+type CurrentTypeCheckLog = [(TypeCheckAction, PostScopeState)]++-- | A complete log for a module will look like this:+--+--   * 'Pragmas'+--+--   * 'EnterSection', entering the main module.+--+--   * 'Decl'/'EnterSection'/'LeaveSection', for declarations and nested+--     modules+--+--   * 'LeaveSection', leaving the main module.+data TypeCheckAction+  = EnterSection !Info.ModuleInfo !ModuleName !A.Telescope+  | LeaveSection !ModuleName+  | Decl !A.Declaration+    -- ^ Never a Section or ScopeDecl+  | Pragmas !PragmaOptions++-- | Empty persistent state.++initPersistentState :: PersistentTCState+initPersistentState = PersistentTCSt+  { stPersistentOptions         = defaultOptions+  , stDecodedModules            = Map.empty+  , stInteractionOutputCallback = defaultInteractionOutputCallback+  , stBenchmark                 = empty+  , stAccumStatistics           = Map.empty+  , stLoadedFileCache           = Nothing+  , stPersistBackends           = []+  }++-- | Empty state of type checker.++initPreScopeState :: PreScopeState+initPreScopeState = PreScopeState+  { stPreTokens               = mempty+  , stPreImports              = emptySignature+  , stPreImportedModules      = Set.empty+  , stPreModuleToSource       = Map.empty+  , stPreVisitedModules       = Map.empty+  , stPreScope                = emptyScopeInfo+  , stPrePatternSyns          = Map.empty+  , stPrePatternSynImports    = Map.empty+  , stPreGeneralizedVars      = mempty+  , stPrePragmaOptions        = defaultInteractionOptions+  , stPreImportedBuiltins     = Map.empty+  , stPreImportedDisplayForms = HMap.empty+  , stPreImportedInstanceDefs = Map.empty+  , stPreForeignCode          = Map.empty+  , stPreFreshInteractionId   = 0+  , stPreImportedUserWarnings = Map.empty+  , stPreLocalUserWarnings    = Map.empty+  }++initPostScopeState :: PostScopeState+initPostScopeState = PostScopeState+  { stPostSyntaxInfo           = mempty+  , stPostDisambiguatedNames   = IntMap.empty+  , stPostMetaStore            = IntMap.empty+  , stPostInteractionPoints    = Map.empty+  , stPostAwakeConstraints     = []+  , stPostSleepingConstraints  = []+  , stPostDirty                = False+  , stPostOccursCheckDefs      = Set.empty+  , stPostSignature            = emptySignature+  , stPostModuleCheckpoints    = Map.empty+  , stPostImportsDisplayForms  = HMap.empty+  , stPostCurrentModule        = Nothing+  , stPostInstanceDefs         = (Map.empty , Set.empty)+  , stPostConcreteNames        = Map.empty+  , stPostShadowingNames       = Map.empty+  , stPostStatistics           = Map.empty+  , stPostTCWarnings           = []+  , stPostMutualBlocks         = Map.empty+  , stPostLocalBuiltins        = Map.empty+  , stPostFreshMetaId          = 0+  , stPostFreshMutualId        = 0+  , stPostFreshProblemId       = 1+  , stPostFreshCheckpointId    = 1+  , stPostFreshInt             = 0+  , stPostFreshNameId           = NameId 0 0+  , stPostAreWeCaching         = False+  , stPostConsideringInstance  = False+  }++initState :: TCState+initState = TCSt+  { stPreScopeState   = initPreScopeState+  , stPostScopeState  = initPostScopeState+  , stPersistentState = initPersistentState+  }++-- * st-prefixed lenses+------------------------------------------------------------------------++stTokens :: Lens' CompressedFile TCState+stTokens f s =+  f (stPreTokens (stPreScopeState s)) <&>+  \x -> s {stPreScopeState = (stPreScopeState s) {stPreTokens = x}}++stImports :: Lens' Signature TCState+stImports f s =+  f (stPreImports (stPreScopeState s)) <&>+  \x -> s {stPreScopeState = (stPreScopeState s) {stPreImports = x}}++stImportedModules :: Lens' (Set ModuleName) TCState+stImportedModules f s =+  f (stPreImportedModules (stPreScopeState s)) <&>+  \x -> s {stPreScopeState = (stPreScopeState s) {stPreImportedModules = x}}++stModuleToSource :: Lens' ModuleToSource TCState+stModuleToSource f s =+  f (stPreModuleToSource (stPreScopeState s)) <&>+  \x -> s {stPreScopeState = (stPreScopeState s) {stPreModuleToSource = x}}++stVisitedModules :: Lens' VisitedModules TCState+stVisitedModules f s =+  f (stPreVisitedModules (stPreScopeState s)) <&>+  \x -> s {stPreScopeState = (stPreScopeState s) {stPreVisitedModules = x}}++stScope :: Lens' ScopeInfo TCState+stScope f s =+  f (stPreScope (stPreScopeState s)) <&>+  \x -> s {stPreScopeState = (stPreScopeState s) {stPreScope = x}}++stPatternSyns :: Lens' A.PatternSynDefns TCState+stPatternSyns f s =+  f (stPrePatternSyns (stPreScopeState s)) <&>+  \x -> s {stPreScopeState = (stPreScopeState s) {stPrePatternSyns = x}}++stPatternSynImports :: Lens' A.PatternSynDefns TCState+stPatternSynImports f s =+  f (stPrePatternSynImports (stPreScopeState s)) <&>+  \x -> s {stPreScopeState = (stPreScopeState s) {stPrePatternSynImports = x}}++stGeneralizedVars :: Lens' (Maybe (Set QName)) TCState+stGeneralizedVars f s =+  f (stPreGeneralizedVars (stPreScopeState s)) <&>+  \x -> s {stPreScopeState = (stPreScopeState s) {stPreGeneralizedVars = x}}++stPragmaOptions :: Lens' PragmaOptions TCState+stPragmaOptions f s =+  f (stPrePragmaOptions (stPreScopeState s)) <&>+  \x -> s {stPreScopeState = (stPreScopeState s) {stPrePragmaOptions = x}}++stImportedBuiltins :: Lens' (BuiltinThings PrimFun) TCState+stImportedBuiltins f s =+  f (stPreImportedBuiltins (stPreScopeState s)) <&>+  \x -> s {stPreScopeState = (stPreScopeState s) {stPreImportedBuiltins = x}}++stForeignCode :: Lens' (Map BackendName [ForeignCode]) TCState+stForeignCode f s =+  f (stPreForeignCode (stPreScopeState s)) <&>+  \x -> s {stPreScopeState = (stPreScopeState s) {stPreForeignCode = x}}++stFreshInteractionId :: Lens' InteractionId TCState+stFreshInteractionId f s =+  f (stPreFreshInteractionId (stPreScopeState s)) <&>+  \x -> s {stPreScopeState = (stPreScopeState s) {stPreFreshInteractionId = x}}++stImportedUserWarnings :: Lens' (Map A.QName String) TCState+stImportedUserWarnings f s =+  f (stPreImportedUserWarnings (stPreScopeState s)) <&>+  \ x -> s {stPreScopeState = (stPreScopeState s) {stPreImportedUserWarnings = x}}++stLocalUserWarnings :: Lens' (Map A.QName String) TCState+stLocalUserWarnings f s =+  f (stPreLocalUserWarnings (stPreScopeState s)) <&>+  \ x -> s {stPreScopeState = (stPreScopeState s) {stPreLocalUserWarnings = x}}++getUserWarnings :: MonadTCState m => m (Map A.QName String)+getUserWarnings = do+  iuw <- useTC stImportedUserWarnings+  luw <- useTC stLocalUserWarnings+  return $ iuw `Map.union` luw++stBackends :: Lens' [Backend] TCState+stBackends f s =+  f (stPersistBackends (stPersistentState s)) <&>+  \x -> s {stPersistentState = (stPersistentState s) {stPersistBackends = x}}++stFreshNameId :: Lens' NameId TCState+stFreshNameId f s =+  f (stPostFreshNameId (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostFreshNameId = x}}++stSyntaxInfo :: Lens' CompressedFile TCState+stSyntaxInfo f s =+  f (stPostSyntaxInfo (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostSyntaxInfo = x}}++stDisambiguatedNames :: Lens' DisambiguatedNames TCState+stDisambiguatedNames f s =+  f (stPostDisambiguatedNames (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostDisambiguatedNames = x}}++stMetaStore :: Lens' MetaStore TCState+stMetaStore f s =+  f (stPostMetaStore (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostMetaStore = x}}++stInteractionPoints :: Lens' InteractionPoints TCState+stInteractionPoints f s =+  f (stPostInteractionPoints (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostInteractionPoints = x}}++stAwakeConstraints :: Lens' Constraints TCState+stAwakeConstraints f s =+  f (stPostAwakeConstraints (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostAwakeConstraints = x}}++stSleepingConstraints :: Lens' Constraints TCState+stSleepingConstraints f s =+  f (stPostSleepingConstraints (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostSleepingConstraints = x}}++stDirty :: Lens' Bool TCState+stDirty f s =+  f (stPostDirty (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostDirty = x}}++stOccursCheckDefs :: Lens' (Set QName) TCState+stOccursCheckDefs f s =+  f (stPostOccursCheckDefs (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostOccursCheckDefs = x}}++stSignature :: Lens' Signature TCState+stSignature f s =+  f (stPostSignature (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostSignature = x}}++stModuleCheckpoints :: Lens' (Map ModuleName CheckpointId) TCState+stModuleCheckpoints f s =+  f (stPostModuleCheckpoints (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostModuleCheckpoints = x}}++stImportsDisplayForms :: Lens' DisplayForms TCState+stImportsDisplayForms f s =+  f (stPostImportsDisplayForms (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostImportsDisplayForms = x}}++stImportedDisplayForms :: Lens' DisplayForms TCState+stImportedDisplayForms f s =+  f (stPreImportedDisplayForms (stPreScopeState s)) <&>+  \x -> s {stPreScopeState = (stPreScopeState s) {stPreImportedDisplayForms = x}}++stCurrentModule :: Lens' (Maybe ModuleName) TCState+stCurrentModule f s =+  f (stPostCurrentModule (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostCurrentModule = x}}++stImportedInstanceDefs :: Lens' InstanceTable TCState+stImportedInstanceDefs f s =+  f (stPreImportedInstanceDefs (stPreScopeState s)) <&>+  \x -> s {stPreScopeState = (stPreScopeState s) {stPreImportedInstanceDefs = x}}++stInstanceDefs :: Lens' TempInstanceTable TCState+stInstanceDefs f s =+  f (stPostInstanceDefs (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostInstanceDefs = x}}++stConcreteNames :: Lens' (Map Name [C.Name]) TCState+stConcreteNames f s =+  f (stPostConcreteNames (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostConcreteNames = x}}++stShadowingNames :: Lens' (Map Name [Name]) TCState+stShadowingNames f s =+  f (stPostShadowingNames (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostShadowingNames = x}}++stStatistics :: Lens' Statistics TCState+stStatistics f s =+  f (stPostStatistics (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostStatistics = x}}++stTCWarnings :: Lens' [TCWarning] TCState+stTCWarnings f s =+  f (stPostTCWarnings (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostTCWarnings = x}}++stMutualBlocks :: Lens' (Map MutualId MutualBlock) TCState+stMutualBlocks f s =+  f (stPostMutualBlocks (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostMutualBlocks = x}}++stLocalBuiltins :: Lens' (BuiltinThings PrimFun) TCState+stLocalBuiltins f s =+  f (stPostLocalBuiltins (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostLocalBuiltins = x}}++stFreshMetaId :: Lens' MetaId TCState+stFreshMetaId f s =+  f (stPostFreshMetaId (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostFreshMetaId = x}}++stFreshMutualId :: Lens' MutualId TCState+stFreshMutualId f s =+  f (stPostFreshMutualId (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostFreshMutualId = x}}++stFreshProblemId :: Lens' ProblemId TCState+stFreshProblemId f s =+  f (stPostFreshProblemId (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostFreshProblemId = x}}++stFreshCheckpointId :: Lens' CheckpointId TCState+stFreshCheckpointId f s =+  f (stPostFreshCheckpointId (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostFreshCheckpointId = x}}++stFreshInt :: Lens' Int TCState+stFreshInt f s =+  f (stPostFreshInt (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostFreshInt = x}}++-- use @areWeCaching@ from the Caching module instead.+stAreWeCaching :: Lens' Bool TCState+stAreWeCaching f s =+  f (stPostAreWeCaching (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostAreWeCaching = x}}++stConsideringInstance :: Lens' Bool TCState+stConsideringInstance f s =+  f (stPostConsideringInstance (stPostScopeState s)) <&>+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostConsideringInstance = x}}++stBuiltinThings :: TCState -> BuiltinThings PrimFun+stBuiltinThings s = (s^.stLocalBuiltins) `Map.union` (s^.stImportedBuiltins)+++-- * Fresh things+------------------------------------------------------------------------++class Enum i => HasFresh i where+    freshLens :: Lens' i TCState+    nextFresh' :: i -> i+    nextFresh' = succ++nextFresh :: HasFresh i => TCState -> (i, TCState)+nextFresh s =+  let !c = s^.freshLens+  in (c, set freshLens (nextFresh' c) s)++fresh :: (HasFresh i, MonadTCState m) => m i+fresh =+    do  !s <- getTC+        let (!c , !s') = nextFresh s+        putTC s'+        return c++instance HasFresh MetaId where+  freshLens = stFreshMetaId++instance HasFresh MutualId where+  freshLens = stFreshMutualId++instance HasFresh InteractionId where+  freshLens = stFreshInteractionId++instance HasFresh NameId where+  freshLens = stFreshNameId+  -- nextFresh increments the current fresh name by 2 so @NameId@s used+  -- before caching starts do not overlap with the ones used after.+  nextFresh' = succ . succ++instance HasFresh Int where+  freshLens = stFreshInt++newtype ProblemId = ProblemId Nat+  deriving (Data, Eq, Ord, Enum, Real, Integral, Num)++-- TODO: 'Show' should output Haskell-parseable representations.+-- The following instance is deprecated, and Pretty[TCM] should be used+-- instead. Later, simply derive Show for this type.++-- ASR (28 December 2014). This instance is not used anymore (module+-- the test suite) when reporting errors. See Issue 1293.++-- This particular Show instance is ok because of the Num instance.+instance Show ProblemId where+  show (ProblemId n) = show n++instance Pretty ProblemId where+  pretty (ProblemId n) = pretty n++instance HasFresh ProblemId where+  freshLens = stFreshProblemId++newtype CheckpointId = CheckpointId Int+  deriving (Data, Eq, Ord, Enum, Real, Integral, Num)++instance Show CheckpointId where+  show (CheckpointId n) = show n++instance Pretty CheckpointId where+  pretty (CheckpointId n) = pretty n++instance HasFresh CheckpointId where+  freshLens = stFreshCheckpointId++freshName :: MonadTCState m => Range -> String -> m Name+freshName r s = do+  i <- fresh+  return $ mkName r i s++freshNoName :: MonadTCState m => Range -> m Name+freshNoName r =+    do  i <- fresh+        return $ Name i (C.NoName noRange i) r noFixity' False++freshNoName_ :: MonadTCState m => m Name+freshNoName_ = freshNoName noRange++freshRecordName :: MonadTCState m => m Name+freshRecordName = do+  i <- fresh+  return $ Name i (C.Name noRange C.NotInScope [C.Id "r"]) noRange noFixity' True++-- | Create a fresh name from @a@.+class FreshName a where+  freshName_ :: MonadTCState m => a -> m Name++instance FreshName (Range, String) where+  freshName_ = uncurry freshName++instance FreshName String where+  freshName_ = freshName noRange++instance FreshName Range where+  freshName_ = freshNoName++instance FreshName () where+  freshName_ () = freshNoName_++---------------------------------------------------------------------------+-- ** Managing file names+---------------------------------------------------------------------------++-- | Maps top-level module names to the corresponding source file+-- names.++type ModuleToSource = Map TopLevelModuleName AbsolutePath++-- | Maps source file names to the corresponding top-level module+-- names.++type SourceToModule = Map AbsolutePath TopLevelModuleName++-- | Creates a 'SourceToModule' map based on 'stModuleToSource'.+--+--   O(n log n).+--+--   For a single reverse lookup in 'stModuleToSource',+--   rather use 'lookupModuleFromSourse'.++sourceToModule :: TCM SourceToModule+sourceToModule =+  Map.fromList+     .  List.map (\(m, f) -> (f, m))+     .  Map.toList+    <$> useTC stModuleToSource++-- | Lookup an 'AbsolutePath' in 'sourceToModule'.+--+--   O(n).++lookupModuleFromSource :: AbsolutePath -> TCM (Maybe TopLevelModuleName)+lookupModuleFromSource f =+  fmap fst . List.find ((f ==) . snd) . Map.toList <$> useTC stModuleToSource++---------------------------------------------------------------------------+-- ** Interface+---------------------------------------------------------------------------++data ModuleInfo = ModuleInfo+  { miInterface  :: Interface+  , miWarnings   :: Bool+    -- ^ 'True' if warnings were encountered when the module was type+    -- checked.+  , miPrimitive  :: Bool+    -- ^ 'True' if the module is a primitive module, which should always+    -- be importable.+  }++-- Note that the use of 'C.TopLevelModuleName' here is a potential+-- performance problem, because these names do not contain unique+-- identifiers.++type VisitedModules = Map C.TopLevelModuleName ModuleInfo+type DecodedModules = Map C.TopLevelModuleName Interface++data ForeignCode = ForeignCode Range String+  deriving Show++data Interface = Interface+  { iSourceHash      :: Hash+    -- ^ Hash of the source code.+  , iSource          :: Text+    -- ^ The source code. The source code is stored so that the HTML+    -- and LaTeX backends can generate their output without having to+    -- re-read the (possibly out of date) source code.+  , iFileType        :: FileType+    -- ^ Source file type, determined from the file extension+  , iImportedModules :: [(ModuleName, Hash)]+    -- ^ Imported modules and their hashes.+  , iModuleName      :: ModuleName+    -- ^ Module name of this interface.+  , iScope           :: Map ModuleName Scope+    -- ^ Scope defined by this module.+    --+    --   Andreas, AIM XX: Too avoid duplicate serialization, this field is+    --   not serialized, so if you deserialize an interface, @iScope@+    --   will be empty.+    --   But 'constructIScope' constructs 'iScope' from 'iInsideScope'.+  , iInsideScope     :: ScopeInfo+    -- ^ Scope after we loaded this interface.+    --   Used in 'Agda.Interaction.BasicOps.AtTopLevel'+    --   and     'Agda.Interaction.CommandLine.interactionLoop'.+  , iSignature       :: Signature+  , iDisplayForms    :: DisplayForms+    -- ^ Display forms added for imported identifiers.+  , iUserWarnings    :: Map A.QName String+    -- ^ User warnings for imported identifiers+  , iBuiltin         :: BuiltinThings (String, QName)+  , iForeignCode     :: Map BackendName [ForeignCode]+  , iHighlighting    :: HighlightingInfo+  , iPragmaOptions   :: [OptionsPragma]+    -- ^ Pragma options set in the file.+  , iOptionsUsed     :: PragmaOptions+    -- ^ Options/features used when checking the file (can be different+    --   from options set directly in the file).+  , iPatternSyns     :: A.PatternSynDefns+  , iWarnings        :: [TCWarning]+  }+  deriving Show++instance Pretty Interface where+  pretty (Interface+            sourceH source fileT importedM moduleN scope insideS signature+            display userwarn builtin foreignCode highlighting pragmaO+            oUsed patternS warnings) =+    hang "Interface" 2 $ vcat+      [ "source hash:"         <+> (pretty . show) sourceH+      , "source:"              $$  nest 2 (text $ T.unpack source)+      , "file type:"           <+> (pretty . show) fileT+      , "imported modules:"    <+> (pretty . show) importedM+      , "module name:"         <+> pretty moduleN+      , "scope:"               <+> (pretty . show) scope+      , "inside scope:"        <+> (pretty . show) insideS+      , "signature:"           <+> (pretty . show) signature+      , "display:"             <+> (pretty . show) display+      , "user warnings:"       <+> (pretty . show) userwarn+      , "builtin:"             <+> (pretty . show) builtin+      , "Foreign code:"        <+> (pretty . show) foreignCode+      , "highlighting:"        <+> (pretty . show) highlighting+      , "pragma options:"      <+> (pretty . show) pragmaO+      , "options used:"        <+> (pretty . show) oUsed+      , "pattern syns:"        <+> (pretty . show) patternS+      , "warnings:"            <+> (pretty . show) warnings+      ]++-- | Combines the source hash and the (full) hashes of the imported modules.+iFullHash :: Interface -> Hash+iFullHash i = combineHashes $ iSourceHash i : List.map snd (iImportedModules i)++---------------------------------------------------------------------------+-- ** Closure+---------------------------------------------------------------------------++data Closure a = Closure+  { clSignature        :: Signature+  , clEnv              :: TCEnv+  , clScope            :: ScopeInfo+  , clModuleCheckpoints :: Map ModuleName CheckpointId+  , clValue            :: a+  }+    deriving (Data, Functor, Foldable)++instance Show a => Show (Closure a) where+  show cl = "Closure { clValue = " ++ show (clValue cl) ++ " }"++instance HasRange a => HasRange (Closure a) where+    getRange = getRange . clValue++buildClosure :: a -> TCM (Closure a)+buildClosure x = do+    env   <- askTC+    sig   <- useTC stSignature+    scope <- useTC stScope+    cps   <- useTC stModuleCheckpoints+    return $ Closure sig env scope cps x++---------------------------------------------------------------------------+-- ** Constraints+---------------------------------------------------------------------------++type Constraints = [ProblemConstraint]++data ProblemConstraint = PConstr+  { constraintProblems :: Set ProblemId+  , theConstraint      :: Closure Constraint+  }+  deriving (Data, Show)++instance HasRange ProblemConstraint where+  getRange = getRange . theConstraint++data Constraint+  = ValueCmp Comparison Type Term Term+  | ValueCmpOnFace Comparison Term Type Term Term+  | ElimCmp [Polarity] [IsForced] Type Term [Elim] [Elim]+  | TypeCmp Comparison Type Type+  | TelCmp Type Type Comparison Telescope Telescope -- ^ the two types are for the error message only+  | SortCmp Comparison Sort Sort+  | LevelCmp Comparison Level Level+--  | ShortCut MetaId Term Type+--    -- ^ A delayed instantiation.  Replaces @ValueCmp@ in 'postponeTypeCheckingProblem'.+  | HasBiggerSort Sort+  | HasPTSRule Sort (Abs Sort)+  | UnBlock MetaId+  | Guarded Constraint ProblemId+  | IsEmpty Range Type+    -- ^ The range is the one of the absurd pattern.+  | CheckSizeLtSat Term+    -- ^ Check that the 'Term' is either not a SIZELT or a non-empty SIZELT.+  | FindInstance MetaId (Maybe MetaId) (Maybe [Candidate])+    -- ^ the first argument is the instance argument, the second one is the meta+    --   on which the constraint may be blocked on and the third one is the list+    --   of candidates (or Nothing if we haven’t determined the list of+    --   candidates yet)+  | CheckFunDef Delayed Info.DefInfo QName [A.Clause]+  | UnquoteTactic (Maybe MetaId) Term Term Type   -- ^ First argument is computation and the others are hole and goal type+  deriving (Data, Show)++instance HasRange Constraint where+  getRange (IsEmpty r t) = r+  getRange _ = noRange+{- no Range instances for Term, Type, Elm, Tele, Sort, Level, MetaId+  getRange (ValueCmp cmp a u v) = getRange (a,u,v)+  getRange (ElimCmp pol a v es es') = getRange (a,v,es,es')+  getRange (TypeCmp cmp a b) = getRange (a,b)+  getRange (TelCmp a b cmp tel tel') = getRange (a,b,tel,tel')+  getRange (SortCmp cmp s s') = getRange (s,s')+  getRange (LevelCmp cmp l l') = getRange (l,l')+  getRange (UnBlock x) = getRange x+  getRange (Guarded c pid) = getRange c+  getRange (FindInstance x cands) = getRange x+-}++instance Free Constraint where+  freeVars' c =+    case c of+      ValueCmp _ t u v      -> freeVars' (t, (u, v))+      ValueCmpOnFace _ p t u v -> freeVars' (p, (t, (u, v)))+      ElimCmp _ _ t u es es'  -> freeVars' ((t, u), (es, es'))+      TypeCmp _ t t'        -> freeVars' (t, t')+      TelCmp _ _ _ tel tel' -> freeVars' (tel, tel')+      SortCmp _ s s'        -> freeVars' (s, s')+      LevelCmp _ l l'       -> freeVars' (l, l')+      UnBlock _             -> mempty+      Guarded c _           -> freeVars' c+      IsEmpty _ t           -> freeVars' t+      CheckSizeLtSat u      -> freeVars' u+      FindInstance _ _ cs   -> freeVars' cs+      CheckFunDef _ _ _ _   -> mempty+      HasBiggerSort s       -> freeVars' s+      HasPTSRule s1 s2      -> freeVars' (s1 , s2)+      UnquoteTactic _ t h g -> freeVars' (t, (h, g))++instance TermLike Constraint where+  foldTerm f = \case+      ValueCmp _ t u v       -> foldTerm f (t, u, v)+      ValueCmpOnFace _ p t u v -> foldTerm f (p, t, u, v)+      ElimCmp _ _ t u es es' -> foldTerm f (t, u, es, es')+      TypeCmp _ t t'         -> foldTerm f (t, t')+      LevelCmp _ l l'        -> foldTerm f (l, l')+      IsEmpty _ t            -> foldTerm f t+      CheckSizeLtSat u       -> foldTerm f u+      UnquoteTactic _ t h g  -> foldTerm f (t, h, g)+      Guarded c _            -> foldTerm f c+      TelCmp _ _ _ tel1 tel2 -> foldTerm f (tel1, tel2)+      SortCmp _ s1 s2        -> foldTerm f (s1, s2)+      UnBlock _              -> mempty+      FindInstance _ _ _     -> mempty+      CheckFunDef _ _ _ _    -> mempty+      HasBiggerSort s        -> foldTerm f s+      HasPTSRule s1 s2       -> foldTerm f (s1, s2)+  traverseTermM f c = __IMPOSSIBLE__ -- Not yet implemented+++data Comparison = CmpEq | CmpLeq+  deriving (Eq, Data, Show)++instance Pretty Comparison where+  pretty CmpEq  = "="+  pretty CmpLeq = "=<"++-- | An extension of 'Comparison' to @>=@.+data CompareDirection = DirEq | DirLeq | DirGeq+  deriving (Eq, Show)++instance Pretty CompareDirection where+  pretty = text . \case+    DirEq  -> "="+    DirLeq -> "=<"+    DirGeq -> ">="++-- | Embed 'Comparison' into 'CompareDirection'.+fromCmp :: Comparison -> CompareDirection+fromCmp CmpEq  = DirEq+fromCmp CmpLeq = DirLeq++-- | Flip the direction of comparison.+flipCmp :: CompareDirection -> CompareDirection+flipCmp DirEq  = DirEq+flipCmp DirLeq = DirGeq+flipCmp DirGeq = DirLeq++-- | Turn a 'Comparison' function into a 'CompareDirection' function.+--+--   Property: @dirToCmp f (fromCmp cmp) = f cmp@+dirToCmp :: (Comparison -> a -> a -> c) -> CompareDirection -> a -> a -> c+dirToCmp cont DirEq  = cont CmpEq+dirToCmp cont DirLeq = cont CmpLeq+dirToCmp cont DirGeq = flip $ cont CmpLeq++---------------------------------------------------------------------------+-- * Open things+---------------------------------------------------------------------------++-- | A thing tagged with the context it came from.+data Open a = OpenThing { openThingCheckpoint :: CheckpointId, openThing :: a }+    deriving (Data, Show, Functor, Foldable, Traversable)++instance Decoration Open where+  traverseF f (OpenThing cp x) = OpenThing cp <$> f x++---------------------------------------------------------------------------+-- * Judgements+--+-- Used exclusively for typing of meta variables.+---------------------------------------------------------------------------++-- | Parametrized since it is used without MetaId when creating a new meta.+data Judgement a+  = HasType { jMetaId :: a, jMetaType :: Type }+  | IsSort  { jMetaId :: a, jMetaType :: Type } -- Andreas, 2011-04-26: type needed for higher-order sort metas++instance Show a => Show (Judgement a) where+    show (HasType a t) = show a ++ " : " ++ show t+    show (IsSort  a t) = show a ++ " :sort " ++ show t++-----------------------------------------------------------------------------+-- ** Generalizable variables+-----------------------------------------------------------------------------++data DoGeneralize = YesGeneralize | NoGeneralize+  deriving (Eq, Ord, Show, Data)++-- | The value of a generalizable variable. This is created to be a+--   generalizable meta before checking the type to be generalized.+data GeneralizedValue = GeneralizedValue+  { genvalCheckpoint :: CheckpointId+  , genvalTerm       :: Term+  , genvalType       :: Type+  } deriving (Show, Data)++---------------------------------------------------------------------------+-- ** Meta variables+---------------------------------------------------------------------------++data MetaVariable =+        MetaVar { mvInfo          :: MetaInfo+                , mvPriority      :: MetaPriority -- ^ some metavariables are more eager to be instantiated+                , mvPermutation   :: Permutation+                  -- ^ a metavariable doesn't have to depend on all variables+                  --   in the context, this "permutation" will throw away the+                  --   ones it does not depend on+                , mvJudgement     :: Judgement MetaId+                , mvInstantiation :: MetaInstantiation+                , mvListeners     :: Set Listener -- ^ meta variables scheduled for eta-expansion but blocked by this one+                , mvFrozen        :: Frozen -- ^ are we past the point where we can instantiate this meta variable?+                }++data Listener = EtaExpand MetaId+              | CheckConstraint Nat ProblemConstraint++instance Eq Listener where+  EtaExpand       x   == EtaExpand       y   = x == y+  CheckConstraint x _ == CheckConstraint y _ = x == y+  _ == _ = False++instance Ord Listener where+  EtaExpand       x   `compare` EtaExpand       y   = x `compare` y+  CheckConstraint x _ `compare` CheckConstraint y _ = x `compare` y+  EtaExpand{} `compare` CheckConstraint{} = LT+  CheckConstraint{} `compare` EtaExpand{} = GT++-- | Frozen meta variable cannot be instantiated by unification.+--   This serves to prevent the completion of a definition by its use+--   outside of the current block.+--   (See issues 118, 288, 399).+data Frozen+  = Frozen        -- ^ Do not instantiate.+  | Instantiable+    deriving (Eq, Show)++data MetaInstantiation+        = InstV [Arg String] Term -- ^ solved by term (abstracted over some free variables)+        | Open               -- ^ unsolved+        | OpenInstance       -- ^ open, to be instantiated by instance search+        | BlockedConst Term  -- ^ solution blocked by unsolved constraints+        | PostponedTypeCheckingProblem (Closure TypeCheckingProblem) (TCM Bool)++-- | Solving a 'CheckArgs' constraint may or may not check the target type. If+--   it did, it returns a handle to any unsolved constraints.+data CheckedTarget = CheckedTarget (Maybe ProblemId)+                   | NotCheckedTarget++data TypeCheckingProblem+  = CheckExpr Comparison A.Expr Type+  | CheckArgs ExpandHidden Range [NamedArg A.Expr] Type Type ([Maybe Range] -> Elims -> Type -> CheckedTarget -> TCM Term)+  | CheckProjAppToKnownPrincipalArg Comparison A.Expr ProjOrigin (NonemptyList QName) A.Args Type Int Term Type+  | CheckLambda Comparison (Arg ([WithHiding Name], Maybe Type)) A.Expr Type+    -- ^ @(λ (xs : t₀) → e) : t@+    --   This is not an instance of 'CheckExpr' as the domain type+    --   has already been checked.+    --   For example, when checking+    --     @(λ (x y : Fin _) → e) : (x : Fin n) → ?@+    --   we want to postpone @(λ (y : Fin n) → e) : ?@ where @Fin n@+    --   is a 'Type' rather than an 'A.Expr'.+  | DoQuoteTerm Comparison Term Type -- ^ Quote the given term and check type against `Term`++instance Show MetaInstantiation where+  show (InstV tel t) = "InstV " ++ show tel ++ " (" ++ show t ++ ")"+  show Open      = "Open"+  show OpenInstance = "OpenInstance"+  show (BlockedConst t) = "BlockedConst (" ++ show t ++ ")"+  show (PostponedTypeCheckingProblem{}) = "PostponedTypeCheckingProblem (...)"++-- | Meta variable priority:+--   When we have an equation between meta-variables, which one+--   should be instantiated?+--+--   Higher value means higher priority to be instantiated.+newtype MetaPriority = MetaPriority Int+    deriving (Eq , Ord , Show)++data RunMetaOccursCheck+  = RunMetaOccursCheck+  | DontRunMetaOccursCheck+  deriving (Eq , Ord , Show)++-- | @MetaInfo@ is cloned from one meta to the next during pruning.+data MetaInfo = MetaInfo+  { miClosRange       :: Closure Range -- TODO: Not so nice. But we want both to have the environment of the meta (Closure) and its range.+--  , miRelevance       :: Relevance          -- ^ Created in irrelevant position?+  , miMetaOccursCheck :: RunMetaOccursCheck -- ^ Run the extended occurs check that goes in definitions?+  , miNameSuggestion  :: MetaNameSuggestion+    -- ^ Used for printing.+    --   @Just x@ if meta-variable comes from omitted argument with name @x@.+  , miGeneralizable   :: Arg DoGeneralize+    -- ^ Should this meta be generalized if unsolved? If so, at what ArgInfo?+  }++-- | Name suggestion for meta variable.  Empty string means no suggestion.+type MetaNameSuggestion = String++-- | For printing, we couple a meta with its name suggestion.+data NamedMeta = NamedMeta+  { nmSuggestion :: MetaNameSuggestion+  , nmid         :: MetaId+  }++instance Pretty NamedMeta where+  pretty (NamedMeta "" x) = pretty x+  pretty (NamedMeta "_" x) = pretty x+  pretty (NamedMeta s  x) = text $ "_" ++ s ++ prettyShow x++type MetaStore = IntMap MetaVariable++instance HasRange MetaInfo where+  getRange = clValue . miClosRange++instance HasRange MetaVariable where+    getRange m = getRange $ getMetaInfo m++instance SetRange MetaInfo where+  setRange r m = m { miClosRange = (miClosRange m) { clValue = r }}++instance SetRange MetaVariable where+  setRange r m = m { mvInfo = setRange r (mvInfo m) }++normalMetaPriority :: MetaPriority+normalMetaPriority = MetaPriority 0++lowMetaPriority :: MetaPriority+lowMetaPriority = MetaPriority (-10)++highMetaPriority :: MetaPriority+highMetaPriority = MetaPriority 10++getMetaInfo :: MetaVariable -> Closure Range+getMetaInfo = miClosRange . mvInfo++getMetaScope :: MetaVariable -> ScopeInfo+getMetaScope m = clScope $ getMetaInfo m++getMetaEnv :: MetaVariable -> TCEnv+getMetaEnv m = clEnv $ getMetaInfo m++getMetaSig :: MetaVariable -> Signature+getMetaSig m = clSignature $ getMetaInfo m++getMetaRelevance :: MetaVariable -> Relevance+getMetaRelevance = envRelevance . getMetaEnv++getMetaModality :: MetaVariable -> Modality+getMetaModality = envModality . getMetaEnv++-- Lenses++metaFrozen :: Lens' Frozen MetaVariable+metaFrozen f mv = f (mvFrozen mv) <&> \ x -> mv { mvFrozen = x }++---------------------------------------------------------------------------+-- ** Interaction meta variables+---------------------------------------------------------------------------++-- | Interaction points are created by the scope checker who sets the range.+--   The meta variable is created by the type checker and then hooked up to the+--   interaction point.+data InteractionPoint = InteractionPoint+  { ipRange :: Range        -- ^ The position of the interaction point.+  , ipMeta  :: Maybe MetaId -- ^ The meta variable, if any, holding the type etc.+  , ipSolved:: Bool         -- ^ Has this interaction point already been solved?+  , ipClause:: IPClause+      -- ^ The clause of the interaction point (if any).+      --   Used for case splitting.+  }++instance Eq InteractionPoint where (==) = (==) `on` ipMeta++-- | Data structure managing the interaction points.+--+--   We never remove interaction points from this map, only set their+--   'ipSolved' to @True@.  (Issue #2368)+type InteractionPoints = Map InteractionId InteractionPoint++-- | Which clause is an interaction point located in?+data IPClause = IPClause+  { ipcQName    :: QName  -- ^ The name of the function.+  , ipcClauseNo :: Int    -- ^ The number of the clause of this function.+  , ipcClause   :: A.RHS  -- ^ The original AST clause rhs.+  }+  | IPNoClause -- ^ The interaction point is not in the rhs of a clause.+  deriving Data++instance Eq IPClause where+  IPNoClause     == IPNoClause       = True+  IPClause x i _ == IPClause x' i' _ = x == x' && i == i'+  _              == _                = False++---------------------------------------------------------------------------+-- ** Signature+---------------------------------------------------------------------------++data Signature = Sig+      { _sigSections    :: Sections+      , _sigDefinitions :: Definitions+      , _sigRewriteRules:: RewriteRuleMap  -- ^ The rewrite rules defined in this file.+      }+  deriving (Data, Show)++sigSections :: Lens' Sections Signature+sigSections f s =+  f (_sigSections s) <&>+  \x -> s {_sigSections = x}++sigDefinitions :: Lens' Definitions Signature+sigDefinitions f s =+  f (_sigDefinitions s) <&>+  \x -> s {_sigDefinitions = x}++sigRewriteRules :: Lens' RewriteRuleMap Signature+sigRewriteRules f s =+  f (_sigRewriteRules s) <&>+  \x -> s {_sigRewriteRules = x}++type Sections    = Map ModuleName Section+type Definitions = HashMap QName Definition+type RewriteRuleMap = HashMap QName RewriteRules+type DisplayForms = HashMap QName [LocalDisplayForm]++newtype Section = Section { _secTelescope :: Telescope }+  deriving (Data, Show)++instance Pretty Section where+  pretty = pretty . _secTelescope++secTelescope :: Lens' Telescope Section+secTelescope f s =+  f (_secTelescope s) <&>+  \x -> s {_secTelescope = x}++emptySignature :: Signature+emptySignature = Sig Map.empty HMap.empty HMap.empty++-- | A @DisplayForm@ is in essence a rewrite rule+--   @+--      q ts --> dt+--   @+--   for a defined symbol (could be a constructor as well) @q@.+--   The right hand side is a 'DisplayTerm' which is used to+--   'reify' to a more readable 'Abstract.Syntax'.+--+--   The patterns @ts@ are just terms, but @var 0@ is interpreted+--   as a hole.  Each occurrence of @var 0@ is a new hole (pattern var).+--   For each *occurrence* of @var0@ the rhs @dt@ has a free variable.+--   These are instantiated when matching a display form against a+--   term @q vs@ succeeds.+data DisplayForm = Display+  { dfFreeVars :: Nat+    -- ^ Number @n@ of free variables in 'dfRHS'.+  , dfPats     :: Elims+    -- ^ Left hand side patterns, where @var 0@ stands for a pattern+    --   variable.  There should be @n@ occurrences of @var0@ in+    --   'dfPats'.+    --   The 'ArgInfo' is ignored in these patterns.+  , dfRHS      :: DisplayTerm+    -- ^ Right hand side, with @n@ free variables.+  }+  deriving (Data, Show)++type LocalDisplayForm = Open DisplayForm++-- | A structured presentation of a 'Term' for reification into+--   'Abstract.Syntax'.+data DisplayTerm+  = DWithApp DisplayTerm [DisplayTerm] Elims+    -- ^ @(f vs | ws) es@.+    --   The first 'DisplayTerm' is the parent function @f@ with its args @vs@.+    --   The list of 'DisplayTerm's are the with expressions @ws@.+    --   The 'Elims' are additional arguments @es@+    --   (possible in case the with-application is of function type)+    --   or projections (if it is of record type).+  | DCon ConHead ConInfo [Arg DisplayTerm]+    -- ^ @c vs@.+  | DDef QName [Elim' DisplayTerm]+    -- ^ @d vs@.+  | DDot Term+    -- ^ @.v@.+  | DTerm Term+    -- ^ @v@.+  deriving (Data, Show)++instance Free DisplayForm where+  freeVars' (Display n ps t) = bind (freeVars' ps) `mappend` bind' n (freeVars' t)++instance Free DisplayTerm where+  freeVars' (DWithApp t ws es) = freeVars' (t, (ws, es))+  freeVars' (DCon _ _ vs)      = freeVars' vs+  freeVars' (DDef _ es)        = freeVars' es+  freeVars' (DDot v)           = freeVars' v+  freeVars' (DTerm v)          = freeVars' v++instance Pretty DisplayTerm where+  prettyPrec p v =+    case v of+      DTerm v          -> prettyPrec p v+      DDot v           -> "." P.<> prettyPrec 10 v+      DDef f es        -> pretty f `pApp` es+      DCon c _ vs      -> pretty (conName c) `pApp` map Apply vs+      DWithApp h ws es ->+        mparens (p > 0)+          (sep [ pretty h+              , nest 2 $ fsep [ "|" <+> pretty w | w <- ws ] ])+        `pApp` es+    where+      pApp d els = mparens (not (null els) && p > 9) $+                   sep [d, nest 2 $ fsep (map (prettyPrec 10) els)]++-- | By default, we have no display form.+defaultDisplayForm :: QName -> [LocalDisplayForm]+defaultDisplayForm c = []++defRelevance :: Definition -> Relevance+defRelevance = getRelevance . defArgInfo++-- | Non-linear (non-constructor) first-order pattern.+data NLPat+  = PVar !Int [Arg Int]+    -- ^ Matches anything (modulo non-linearity) that only contains bound+    --   variables that occur in the given arguments.+  | PWild+    -- ^ Matches anything (e.g. irrelevant terms).+  | PDef QName PElims+    -- ^ Matches @f es@+  | PLam ArgInfo (Abs NLPat)+    -- ^ Matches @λ x → t@+  | PPi (Dom NLPType) (Abs NLPType)+    -- ^ Matches @(x : A) → B@+  | PBoundVar {-# UNPACK #-} !Int PElims+    -- ^ Matches @x es@ where x is a lambda-bound variable+  | PTerm Term+    -- ^ Matches the term modulo β (ideally βη).+  deriving (Data, Show)+type PElims = [Elim' NLPat]++data NLPType = NLPType+  { nlpTypeLevel :: NLPat  -- always PWild or PVar (with all bound variables in scope)+  , nlpTypeUnEl  :: NLPat+  } deriving (Data, Show)++type RewriteRules = [RewriteRule]++-- | Rewrite rules can be added independently from function clauses.+data RewriteRule = RewriteRule+  { rewName    :: QName      -- ^ Name of rewrite rule @q : Γ → f ps ≡ rhs@+                             --   where @≡@ is the rewrite relation.+  , rewContext :: Telescope  -- ^ @Γ@.+  , rewHead    :: QName      -- ^ @f@.+  , rewPats    :: PElims     -- ^ @Γ ⊢ f ps : t@.+  , rewRHS     :: Term       -- ^ @Γ ⊢ rhs : t@.+  , rewType    :: Type       -- ^ @Γ ⊢ t@.+  }+    deriving (Data, Show)++data Definition = Defn+  { defArgInfo        :: ArgInfo -- ^ Hiding should not be used.+  , defName           :: QName+  , defType           :: Type    -- ^ Type of the lifted definition.+  , defPolarity       :: [Polarity]+    -- ^ Variance information on arguments of the definition.+    --   Does not include info for dropped parameters to+    --   projection(-like) functions and constructors.+  , defArgOccurrences :: [Occurrence]+    -- ^ Positivity information on arguments of the definition.+    --   Does not include info for dropped parameters to+    --   projection(-like) functions and constructors.++    --   Sometimes Agda looks up 'Occurrence's in these lists based on+    --   their position, so one might consider replacing the list+    --   with, say, an 'IntMap'. However, presumably these lists tend+    --   to be short, in which case 'IntMap's could be slower than+    --   lists. For instance, at one point the longest list+    --   encountered for the standard library (in serialised+    --   interfaces) had length 27. Distribution:+    --+    --   Length, number of lists+    --   -----------------------+    --+    --    0, 2444+    --    1,  721+    --    2,  433+    --    3,  668+    --    4,  602+    --    5,  624+    --    6,  626+    --    7,  484+    --    8,  375+    --    9,  264+    --   10,  305+    --   11,  188+    --   12,  171+    --   13,  108+    --   14,   84+    --   15,   80+    --   16,   38+    --   17,   23+    --   18,   16+    --   19,    8+    --   20,    7+    --   21,    5+    --   22,    2+    --   23,    3+    --   27,    1++  , defArgGeneralizable :: NumGeneralizableArgs+    -- ^ How many arguments should be generalised.+  , defGeneralizedParams :: [Maybe Name]+    -- ^ Gives the name of the (bound variable) parameter for named generalized+    --   parameters. This is needed to bring it into scope when type checking+    --   the data/record definition corresponding to a type with generalized+    --   parameters.+  , defDisplay        :: [LocalDisplayForm]+  , defMutual         :: MutualId+  , defCompiledRep    :: CompiledRepresentation+  , defInstance       :: Maybe QName+    -- ^ @Just q@ when this definition is an instance of class q+  , defCopy           :: Bool+    -- ^ Has this function been created by a module+                         -- instantiation?+  , defMatchable      :: Bool+    -- ^ Is the def matched against in a rewrite rule?+  , defNoCompilation  :: Bool+    -- ^ should compilers skip this? Used for e.g. cubical's comp+  , defInjective      :: Bool+    -- ^ Should the def be treated as injective by the pattern matching unifier?+  , theDef            :: Defn+  }+    deriving (Data, Show)++data NumGeneralizableArgs+  = NoGeneralizableArgs+  | SomeGeneralizableArgs Int+    -- ^ When lambda-lifting new args are generalizable if+    --   'SomeGeneralizableArgs', also when the number is zero.+  deriving (Data, Show)++theDefLens :: Lens' Defn Definition+theDefLens f d = f (theDef d) <&> \ df -> d { theDef = df }++-- | Create a definition with sensible defaults.+defaultDefn :: ArgInfo -> QName -> Type -> Defn -> Definition+defaultDefn info x t def = Defn+  { defArgInfo        = info+  , defName           = x+  , defType           = t+  , defPolarity       = []+  , defArgOccurrences = []+  , defArgGeneralizable = NoGeneralizableArgs+  , defGeneralizedParams = []+  , defDisplay        = defaultDisplayForm x+  , defMutual         = 0+  , defCompiledRep    = noCompiledRep+  , defInstance       = Nothing+  , defCopy           = False+  , defMatchable      = False+  , defNoCompilation  = False+  , defInjective      = False+  , theDef            = def+  }++-- | Polarity for equality and subtype checking.+data Polarity+  = Covariant      -- ^ monotone+  | Contravariant  -- ^ antitone+  | Invariant      -- ^ no information (mixed variance)+  | Nonvariant     -- ^ constant+  deriving (Data, Show, Eq)++instance Pretty Polarity where+  pretty = text . \case+    Covariant     -> "+"+    Contravariant -> "-"+    Invariant     -> "*"+    Nonvariant    -> "_"++-- | Information about whether an argument is forced by the type of a function.+data IsForced+  = Forced+  | NotForced+  deriving (Data, Show, Eq)++-- | The backends are responsible for parsing their own pragmas.+data CompilerPragma = CompilerPragma Range String+  deriving (Data, Show, Eq)++instance HasRange CompilerPragma where+  getRange (CompilerPragma r _) = r++type BackendName    = String++jsBackendName, ghcBackendName :: BackendName+jsBackendName  = "JS"+ghcBackendName = "GHC"++type CompiledRepresentation = Map BackendName [CompilerPragma]++noCompiledRep :: CompiledRepresentation+noCompiledRep = Map.empty++-- A face represented as a list of equality constraints.+-- (r,False) ↦ (r = i0)+-- (r,True ) ↦ (r = i1)+type Face = [(Term,Bool)]++-- | An alternative representation of partial elements in a telescope:+--   Γ ⊢ λ Δ. [φ₁ u₁, ... , φₙ uₙ] : Δ → PartialP (∨_ᵢ φᵢ) T+--   see cubicaltt paper (however we do not store the type T).+data System = System+  { systemTel :: Telescope+    -- ^ the telescope Δ, binding vars for the clauses, Γ ⊢ Δ+  , systemClauses :: [(Face,Term)]+    -- ^ a system [φ₁ u₁, ... , φₙ uₙ] where Γ, Δ ⊢ φᵢ and Γ, Δ, φᵢ ⊢ uᵢ+  } deriving (Data, Show)++-- | Additional information for extended lambdas.+data ExtLamInfo = ExtLamInfo+  { extLamModule    :: ModuleName+    -- ^ For complicated reasons the scope checker decides the QName of a+    --   pattern lambda, and thus its module. We really need to decide the+    --   module during type checking though, since if the lambda appears in a+    --   refined context the module picked by the scope checker has very much+    --   the wrong parameters.+  , extLamSys :: !(Maybe System)+  } deriving (Data, Show)++modifySystem :: (System -> System) -> ExtLamInfo -> ExtLamInfo+modifySystem f e = let !e' = e { extLamSys = f <$> extLamSys e } in e'++-- | Additional information for projection 'Function's.+data Projection = Projection+  { projProper    :: Maybe QName+    -- ^ @Nothing@ if only projection-like, @Just r@ if record projection.+    --   The @r@ is the name of the record type projected from.+    --   This field is updated by module application.+  , projOrig      :: QName+    -- ^ The original projection name+    --   (current name could be from module application).+  , projFromType  :: Arg QName+    -- ^ Type projected from. Original record type if @projProper = Just{}@.+    --   Also stores @ArgInfo@ of the principal argument.+    --   This field is unchanged by module application.+  , projIndex     :: Int+    -- ^ Index of the record argument.+    --   Start counting with 1, because 0 means that+    --   it is already applied to the record value.+    --   This can happen in module instantiation, but+    --   then either the record value is @var 0@, or @funProjection == Nothing@.+  , projLams :: ProjLams+    -- ^ Term @t@ to be be applied to record parameters and record value.+    --   The parameters will be dropped.+    --   In case of a proper projection, a postfix projection application+    --   will be created: @t = \ pars r -> r .p@+    --   (Invariant: the number of abstractions equals 'projIndex'.)+    --   In case of a projection-like function, just the function symbol+    --   is returned as 'Def':  @t = \ pars -> f@.+  } deriving (Data, Show)++-- | Abstractions to build projection function (dropping parameters).+newtype ProjLams = ProjLams { getProjLams :: [Arg ArgName] }+  deriving (Data, Show, Null)++-- | Building the projection function (which drops the parameters).+projDropPars :: Projection -> ProjOrigin -> Term+-- Proper projections:+projDropPars (Projection Just{} d _ _ lams) o =+  case initLast $ getProjLams lams of+    Nothing -> Def d []+    Just (pars, Arg i y) ->+      let core = Lam i $ Abs y $ Var 0 [Proj o d] in+      List.foldr (\ (Arg ai x) -> Lam ai . NoAbs x) core pars+-- Projection-like functions:+projDropPars (Projection Nothing _ _ _ lams) o | null lams = __IMPOSSIBLE__+projDropPars (Projection Nothing d _ _ lams) o =+  List.foldr (\ (Arg ai x) -> Lam ai . NoAbs x) (Def d []) $ init $ getProjLams lams++-- | The info of the principal (record) argument.+projArgInfo :: Projection -> ArgInfo+projArgInfo (Projection _ _ _ _ lams) =+  maybe __IMPOSSIBLE__ getArgInfo $ lastMaybe $ getProjLams lams++-- | Should a record type admit eta-equality?+data EtaEquality+  = Specified { theEtaEquality :: !HasEta }  -- ^ User specifed 'eta-equality' or 'no-eta-equality'.+  | Inferred  { theEtaEquality :: !HasEta }  -- ^ Positivity checker inferred whether eta is safe.+  deriving (Data, Show, Eq)++-- | Make sure we do not overwrite a user specification.+setEtaEquality :: EtaEquality -> HasEta -> EtaEquality+setEtaEquality e@Specified{} _ = e+setEtaEquality _ b = Inferred b++data FunctionFlag+  = FunStatic  -- ^ Should calls to this function be normalised at compile-time?+  | FunInline  -- ^ Should calls to this function be inlined by the compiler?+  | FunMacro   -- ^ Is this function a macro?+  deriving (Data, Eq, Ord, Enum, Show)++data CompKit = CompKit+  { nameOfHComp :: Maybe QName+  , nameOfTransp :: Maybe QName+  }+  deriving (Data, Eq, Ord, Show)++emptyCompKit :: CompKit+emptyCompKit = CompKit Nothing Nothing++data Defn = Axiom -- ^ Postulate+          | DataOrRecSig+            { datarecPars :: Int }+            -- ^ Data or record type signature that doesn't yet have a definition+          | GeneralizableVar -- ^ Generalizable variable (introduced in `generalize` block)+          | AbstractDefn Defn+            -- ^ Returned by 'getConstInfo' if definition is abstract.+          | Function+            { funClauses        :: [Clause]+            , funCompiled       :: Maybe CompiledClauses+              -- ^ 'Nothing' while function is still type-checked.+              --   @Just cc@ after type and coverage checking and+              --   translation to case trees.+            , funSplitTree      :: Maybe SplitTree+              -- ^ The split tree constructed by the coverage+              --   checker. Needed to re-compile the clauses after+              --   forcing translation.+            , funTreeless       :: Maybe Compiled+              -- ^ Intermediate representation for compiler backends.+            , funCovering :: [Closure Clause]+              -- ^ Covering clauses computed by coverage checking.+              --   Erased by (IApply) confluence checking(?)+            , funInv            :: FunctionInverse+            , funMutual         :: Maybe [QName]+              -- ^ Mutually recursive functions, @data@s and @record@s.+              --   Does include this function.+              --   Empty list if not recursive.+              --   @Nothing@ if not yet computed (by positivity checker).+            , funAbstr          :: IsAbstract+            , funDelayed        :: Delayed+              -- ^ Are the clauses of this definition delayed?+            , funProjection     :: Maybe Projection+              -- ^ Is it a record projection?+              --   If yes, then return the name of the record type and index of+              --   the record argument.  Start counting with 1, because 0 means that+              --   it is already applied to the record. (Can happen in module+              --   instantiation.) This information is used in the termination+              --   checker.+            , funFlags          :: Set FunctionFlag+            , funTerminates     :: Maybe Bool+              -- ^ Has this function been termination checked?  Did it pass?+            , funExtLam         :: Maybe ExtLamInfo+              -- ^ Is this function generated from an extended lambda?+              --   If yes, then return the number of hidden and non-hidden lambda-lifted arguments+            , funWith           :: Maybe QName+              -- ^ Is this a generated with-function? If yes, then what's the+              --   name of the parent function.+            , funCopatternLHS   :: Bool+              -- ^ Is this a function defined by copatterns?+            }+          | Datatype+            { dataPars           :: Nat            -- ^ Number of parameters.+            , dataIxs            :: Nat            -- ^ Number of indices.+            , dataInduction      :: Induction      -- ^ @data@ or @codata@ (legacy).+            , dataClause         :: (Maybe Clause) -- ^ This might be in an instantiated module.+            , dataCons           :: [QName]+              -- ^ Constructor names , ordered according to the order of their definition.+            , dataSort           :: Sort+            , dataMutual         :: Maybe [QName]+              -- ^ Mutually recursive functions, @data@s and @record@s.+              --   Does include this data type.+              --   Empty if not recursive.+              --   @Nothing@ if not yet computed (by positivity checker).+            , dataAbstr          :: IsAbstract+            , dataPathCons       :: [QName]        -- ^ Path constructor names (subset of dataCons)+            }+          | Record+            { recPars           :: Nat+              -- ^ Number of parameters.+            , recClause         :: Maybe Clause+              -- ^ Was this record type created by a module application?+              --   If yes, the clause is its definition (linking back to the original record type).+            , recConHead        :: ConHead+              -- ^ Constructor name and fields.+            , recNamedCon       :: Bool+              -- ^ Does this record have a @constructor@?+            , recFields         :: [Arg QName]+              -- ^ The record field names.+            , recTel            :: Telescope+              -- ^ The record field telescope. (Includes record parameters.)+              --   Note: @TelV recTel _ == telView' recConType@.+              --   Thus, @recTel@ is redundant.+            , recMutual         :: Maybe [QName]+              -- ^ Mutually recursive functions, @data@s and @record@s.+              --   Does include this record.+              --   Empty if not recursive.+              --   @Nothing@ if not yet computed (by positivity checker).+            , recEtaEquality'    :: EtaEquality+              -- ^ Eta-expand at this record type?+              --   @False@ for unguarded recursive records and coinductive records+              --   unless the user specifies otherwise.+            , recInduction      :: Maybe Induction+              -- ^ 'Inductive' or 'CoInductive'?  Matters only for recursive records.+              --   'Nothing' means that the user did not specify it, which is an error+              --   for recursive records.+            , recAbstr          :: IsAbstract+            , recComp           :: CompKit+            }+          | Constructor+            { conPars   :: Int         -- ^ Number of parameters.+            , conArity  :: Int         -- ^ Number of arguments (excluding parameters).+            , conSrcCon :: ConHead     -- ^ Name of (original) constructor and fields. (This might be in a module instance.)+            , conData   :: QName       -- ^ Name of datatype or record type.+            , conAbstr  :: IsAbstract+            , conInd    :: Induction   -- ^ Inductive or coinductive?+            , conComp   :: (CompKit, Maybe [QName]) -- ^ (cubical composition, projections)+            , conForced :: [IsForced]  -- ^ Which arguments are forced (i.e. determined by the type of the constructor)?+            , conErased :: [Bool]      -- ^ Which arguments are erased at runtime (computed during compilation to treeless)+            }+          | Primitive+            { primAbstr :: IsAbstract+            , primName  :: String+            , primClauses :: [Clause]+              -- ^ 'null' for primitive functions, @not null@ for builtin functions.+            , primInv      :: FunctionInverse+              -- ^ Builtin functions can have inverses. For instance, natural number addition.+            , primCompiled :: Maybe CompiledClauses+              -- ^ 'Nothing' for primitive functions,+              --   @'Just' something@ for builtin functions.+            }+            -- ^ Primitive or builtin functions.+    deriving (Data, Show)++instance Pretty Definition where+  pretty Defn{..} =+    "Defn {" <?> vcat+      [ "defArgInfo        =" <?> pshow defArgInfo+      , "defName           =" <?> pretty defName+      , "defType           =" <?> pretty defType+      , "defPolarity       =" <?> pshow defPolarity+      , "defArgOccurrences =" <?> pshow defArgOccurrences+      , "defGeneralizedParams =" <?> pshow defGeneralizedParams+      , "defDisplay        =" <?> pshow defDisplay -- TODO: pretty DisplayForm+      , "defMutual         =" <?> pshow defMutual+      , "defCompiledRep    =" <?> pshow defCompiledRep+      , "defInstance       =" <?> pshow defInstance+      , "defCopy           =" <?> pshow defCopy+      , "defMatchable      =" <?> pshow defMatchable+      , "defInjective      =" <?> pshow defInjective+      , "theDef            =" <?> pretty theDef ] <+> "}"++instance Pretty Defn where+  pretty Axiom = "Axiom"+  pretty (DataOrRecSig n)   = "DataOrRecSig" <+> pretty n+  pretty GeneralizableVar{} = "GeneralizableVar"+  pretty (AbstractDefn def) = "AbstractDefn" <?> parens (pretty def)+  pretty Function{..} =+    "Function {" <?> vcat+      [ "funClauses      =" <?> vcat (map pretty funClauses)+      , "funCompiled     =" <?> pshow funCompiled+      , "funSplitTree    =" <?> pshow funSplitTree+      , "funTreeless     =" <?> pshow funTreeless+      , "funInv          =" <?> pshow funInv+      , "funMutual       =" <?> pshow funMutual+      , "funAbstr        =" <?> pshow funAbstr+      , "funDelayed      =" <?> pshow funDelayed+      , "funProjection   =" <?> pshow funProjection+      , "funFlags        =" <?> pshow funFlags+      , "funTerminates   =" <?> pshow funTerminates+      , "funWith         =" <?> pshow funWith+      , "funCopatternLHS =" <?> pshow funCopatternLHS ] <?> "}"+  pretty Datatype{..} =+    "Datatype {" <?> vcat+      [ "dataPars       =" <?> pshow dataPars+      , "dataIxs        =" <?> pshow dataIxs+      , "dataInduction  =" <?> pshow dataInduction+      , "dataClause     =" <?> pretty dataClause+      , "dataCons       =" <?> pshow dataCons+      , "dataSort       =" <?> pretty dataSort+      , "dataMutual     =" <?> pshow dataMutual+      , "dataAbstr      =" <?> pshow dataAbstr ] <?> "}"+  pretty Record{..} =+    "Record {" <?> vcat+      [ "recPars         =" <?> pshow recPars+      , "recClause       =" <?> pretty recClause+      , "recConHead      =" <?> pshow recConHead+      , "recNamedCon     =" <?> pshow recNamedCon+      , "recFields       =" <?> pshow recFields+      , "recTel          =" <?> pretty recTel+      , "recMutual       =" <?> pshow recMutual+      , "recEtaEquality' =" <?> pshow recEtaEquality'+      , "recInduction    =" <?> pshow recInduction+      , "recAbstr        =" <?> pshow recAbstr ] <?> "}"+  pretty Constructor{..} =+    "Constructor {" <?> vcat+      [ "conPars   =" <?> pshow conPars+      , "conArity  =" <?> pshow conArity+      , "conSrcCon =" <?> pshow conSrcCon+      , "conData   =" <?> pshow conData+      , "conAbstr  =" <?> pshow conAbstr+      , "conInd    =" <?> pshow conInd+      , "conErased =" <?> pshow conErased ] <?> "}"+  pretty Primitive{..} =+    "Primitive {" <?> vcat+      [ "primAbstr    =" <?> pshow primAbstr+      , "primName     =" <?> pshow primName+      , "primClauses  =" <?> pshow primClauses+      , "primCompiled =" <?> pshow primCompiled ] <?> "}"+++-- | Is the record type recursive?+recRecursive :: Defn -> Bool+recRecursive (Record { recMutual = Just qs }) = not $ null qs+recRecursive _ = __IMPOSSIBLE__++recEtaEquality :: Defn -> HasEta+recEtaEquality = theEtaEquality . recEtaEquality'++-- | A template for creating 'Function' definitions, with sensible defaults.+emptyFunction :: Defn+emptyFunction = Function+  { funClauses     = []+  , funCompiled    = Nothing+  , funSplitTree   = Nothing+  , funTreeless    = Nothing+  , funInv         = NotInjective+  , funMutual      = Nothing+  , funAbstr       = ConcreteDef+  , funDelayed     = NotDelayed+  , funProjection  = Nothing+  , funFlags       = Set.empty+  , funTerminates  = Nothing+  , funExtLam      = Nothing+  , funWith        = Nothing+  , funCopatternLHS = False+  , funCovering    = []+  }++funFlag :: FunctionFlag -> Lens' Bool Defn+funFlag flag f def@Function{ funFlags = flags } =+  f (Set.member flag flags) <&>+  \ b -> def{ funFlags = (if b then Set.insert else Set.delete) flag flags }+funFlag _ f def = f False <&> const def++funStatic, funInline, funMacro :: Lens' Bool Defn+funStatic       = funFlag FunStatic+funInline       = funFlag FunInline+funMacro        = funFlag FunMacro++isMacro :: Defn -> Bool+isMacro = (^. funMacro)++-- | Checking whether we are dealing with a function yet to be defined.+isEmptyFunction :: Defn -> Bool+isEmptyFunction def =+  case def of+    Function { funClauses = [] } -> True+    _ -> False++isCopatternLHS :: [Clause] -> Bool+isCopatternLHS = List.any (List.any (isJust . A.isProjP) . namedClausePats)++recCon :: Defn -> QName+recCon Record{ recConHead } = conName recConHead+recCon _ = __IMPOSSIBLE__++defIsRecord :: Defn -> Bool+defIsRecord Record{} = True+defIsRecord _        = False++defIsDataOrRecord :: Defn -> Bool+defIsDataOrRecord Record{}   = True+defIsDataOrRecord Datatype{} = True+defIsDataOrRecord _          = False++defConstructors :: Defn -> [QName]+defConstructors Datatype{dataCons = cs} = cs+defConstructors Record{recConHead = c} = [conName c]+defConstructors _ = __IMPOSSIBLE__++newtype Fields = Fields [(C.Name, Type)]+  deriving Null++-- | Did we encounter a simplifying reduction?+--   In terms of CIC, that would be a iota-reduction.+--   In terms of Agda, this is a constructor or literal+--   pattern that matched.+--   Just beta-reduction (substitution) or delta-reduction+--   (unfolding of definitions) does not count as simplifying?++data Simplification = YesSimplification | NoSimplification+  deriving (Data, Eq, Show)++instance Null Simplification where+  empty = NoSimplification+  null  = (== NoSimplification)++instance Semigroup Simplification where+  YesSimplification <> _ = YesSimplification+  NoSimplification  <> s = s++instance Monoid Simplification where+  mempty = NoSimplification+  mappend = (<>)++data Reduced no yes = NoReduction no | YesReduction Simplification yes+    deriving Functor++-- | Three cases: 1. not reduced, 2. reduced, but blocked, 3. reduced, not blocked.+data IsReduced+  = NotReduced+  | Reduced    (Blocked ())++data MaybeReduced a = MaybeRed+  { isReduced     :: IsReduced+  , ignoreReduced :: a+  }+  deriving (Functor)++instance IsProjElim e => IsProjElim (MaybeReduced e) where+  isProjElim = isProjElim . ignoreReduced++type MaybeReducedArgs = [MaybeReduced (Arg Term)]+type MaybeReducedElims = [MaybeReduced Elim]++notReduced :: a -> MaybeReduced a+notReduced x = MaybeRed NotReduced x++reduced :: Blocked (Arg Term) -> MaybeReduced (Arg Term)+reduced b = case b of+  NotBlocked _ (Arg _ (MetaV x _)) -> MaybeRed (Reduced $ Blocked x ()) v+  _                                -> MaybeRed (Reduced $ () <$ b)      v+  where+    v = ignoreBlocking b++-- | Controlling 'reduce'.+data AllowedReduction+  = ProjectionReductions     -- ^ (Projection and) projection-like functions may be reduced.+  | InlineReductions         -- ^ Functions marked INLINE may be reduced.+  | CopatternReductions      -- ^ Copattern definitions may be reduced.+  | FunctionReductions       -- ^ Non-recursive functions and primitives may be reduced.+  | RecursiveReductions      -- ^ Even recursive functions may be reduced.+  | LevelReductions          -- ^ Reduce @'Level'@ terms.+  | UnconfirmedReductions    -- ^ Functions whose termination has not (yet) been confirmed.+  | NonTerminatingReductions -- ^ Functions that have failed termination checking.+  deriving (Show, Eq, Ord, Enum, Bounded, Data)++type AllowedReductions = [AllowedReduction]++-- | Not quite all reductions (skip non-terminating reductions)+allReductions :: AllowedReductions+allReductions = [minBound..pred maxBound]++data PrimFun = PrimFun+        { primFunName           :: QName+        , primFunArity          :: Arity+        , primFunImplementation :: [Arg Term] -> Int -> ReduceM (Reduced MaybeReducedArgs Term)+        }++primFun :: QName -> Arity -> ([Arg Term] -> ReduceM (Reduced MaybeReducedArgs Term)) -> PrimFun+primFun q ar imp = PrimFun q ar (\ args _ -> imp args)++defClauses :: Definition -> [Clause]+defClauses Defn{theDef = Function{funClauses = cs}}        = cs+defClauses Defn{theDef = Primitive{primClauses = cs}}      = cs+defClauses Defn{theDef = Datatype{dataClause = Just c}}    = [c]+defClauses Defn{theDef = Record{recClause = Just c}}       = [c]+defClauses _                                               = []++defCompiled :: Definition -> Maybe CompiledClauses+defCompiled Defn{theDef = Function {funCompiled  = mcc}} = mcc+defCompiled Defn{theDef = Primitive{primCompiled = mcc}} = mcc+defCompiled _ = Nothing++defParameters :: Definition -> Maybe Nat+defParameters Defn{theDef = Datatype{dataPars = n}} = Just n+defParameters Defn{theDef = Record  {recPars  = n}} = Just n+defParameters _                                     = Nothing++defInverse :: Definition -> FunctionInverse+defInverse Defn{theDef = Function { funInv  = inv }} = inv+defInverse Defn{theDef = Primitive{ primInv = inv }} = inv+defInverse _                                         = NotInjective++defCompilerPragmas :: BackendName -> Definition -> [CompilerPragma]+defCompilerPragmas b = reverse . fromMaybe [] . Map.lookup b . defCompiledRep+  -- reversed because we add new pragmas to the front of the list++-- | Are the clauses of this definition delayed?+defDelayed :: Definition -> Delayed+defDelayed Defn{theDef = Function{funDelayed = d}} = d+defDelayed _                                       = NotDelayed++-- | Has the definition failed the termination checker?+defNonterminating :: Definition -> Bool+defNonterminating Defn{theDef = Function{funTerminates = Just False}} = True+defNonterminating _                                                   = False++-- | Has the definition not termination checked or did the check fail?+defTerminationUnconfirmed :: Definition -> Bool+defTerminationUnconfirmed Defn{theDef = Function{funTerminates = Just True}} = False+defTerminationUnconfirmed Defn{theDef = Function{funTerminates = _        }} = True+defTerminationUnconfirmed _ = False++defAbstract :: Definition -> IsAbstract+defAbstract d = case theDef d of+    Axiom{}                   -> ConcreteDef+    DataOrRecSig{}            -> ConcreteDef+    GeneralizableVar{}        -> ConcreteDef+    AbstractDefn{}            -> AbstractDef+    Function{funAbstr = a}    -> a+    Datatype{dataAbstr = a}   -> a+    Record{recAbstr = a}      -> a+    Constructor{conAbstr = a} -> a+    Primitive{primAbstr = a}  -> a++defForced :: Definition -> [IsForced]+defForced d = case theDef d of+    Constructor{conForced = fs} -> fs+    Axiom{}                     -> []+    DataOrRecSig{}              -> []+    GeneralizableVar{}          -> []+    AbstractDefn{}              -> []+    Function{}                  -> []+    Datatype{}                  -> []+    Record{}                    -> []+    Primitive{}                 -> []++---------------------------------------------------------------------------+-- ** Injectivity+---------------------------------------------------------------------------++type FunctionInverse = FunctionInverse' Clause+type InversionMap c = Map TermHead [c]++data FunctionInverse' c+  = NotInjective+  | Inverse (InversionMap c)+  deriving (Data, Show, Functor)++data TermHead = SortHead+              | PiHead+              | ConsHead QName+              | VarHead Nat+              | UnknownHead+  deriving (Data, Eq, Ord, Show)++instance Pretty TermHead where+  pretty = \ case+    SortHead    -> "SortHead"+    PiHead      -> "PiHead"+    ConsHead q  -> "ConsHead" <+> pretty q+    VarHead i   -> text ("VarHead " ++ show i)+    UnknownHead -> "UnknownHead"++---------------------------------------------------------------------------+-- ** Mutual blocks+---------------------------------------------------------------------------++newtype MutualId = MutId Int32+  deriving (Data, Eq, Ord, Show, Num, Enum)++---------------------------------------------------------------------------+-- ** Statistics+---------------------------------------------------------------------------++type Statistics = Map String Integer++---------------------------------------------------------------------------+-- ** Trace+---------------------------------------------------------------------------++data Call = CheckClause Type A.SpineClause+          | CheckPattern A.Pattern Telescope Type+          | CheckLetBinding A.LetBinding+          | InferExpr A.Expr+          | CheckExprCall Comparison A.Expr Type+          | CheckDotPattern A.Expr Term+          | CheckPatternShadowing A.SpineClause+          | CheckProjection Range QName Type+          | IsTypeCall A.Expr Sort+          | IsType_ A.Expr+          | InferVar Name+          | InferDef QName+          | CheckArguments Range [NamedArg A.Expr] Type (Maybe Type)+          | CheckTargetType Range Type Type+          | CheckDataDef Range QName [A.LamBinding] [A.Constructor]+          | CheckRecDef Range QName [A.LamBinding] [A.Constructor]+          | CheckConstructor QName Telescope Sort A.Constructor+          | CheckConstructorFitsIn QName Type Sort+          | CheckFunDefCall Range QName [A.Clause]+          | CheckPragma Range A.Pragma+          | CheckPrimitive Range QName A.Expr+          | CheckIsEmpty Range Type+          | CheckWithFunctionType Type+          | CheckSectionApplication Range ModuleName A.ModuleApplication+          | CheckNamedWhere ModuleName+          | ScopeCheckExpr C.Expr+          | ScopeCheckDeclaration NiceDeclaration+          | ScopeCheckLHS C.QName C.Pattern+          | NoHighlighting+          | ModuleContents  -- ^ Interaction command: show module contents.+          | SetRange Range  -- ^ used by 'setCurrentRange'+    deriving Data++instance Pretty Call where+    pretty CheckClause{}             = "CheckClause"+    pretty CheckPattern{}            = "CheckPattern"+    pretty InferExpr{}               = "InferExpr"+    pretty CheckExprCall{}           = "CheckExprCall"+    pretty CheckLetBinding{}         = "CheckLetBinding"+    pretty CheckProjection{}         = "CheckProjection"+    pretty IsTypeCall{}              = "IsTypeCall"+    pretty IsType_{}                 = "IsType_"+    pretty InferVar{}                = "InferVar"+    pretty InferDef{}                = "InferDef"+    pretty CheckArguments{}          = "CheckArguments"+    pretty CheckTargetType{}         = "CheckTargetType"+    pretty CheckDataDef{}            = "CheckDataDef"+    pretty CheckRecDef{}             = "CheckRecDef"+    pretty CheckConstructor{}        = "CheckConstructor"+    pretty CheckConstructorFitsIn{}  = "CheckConstructorFitsIn"+    pretty CheckFunDefCall{}         = "CheckFunDefCall"+    pretty CheckPragma{}             = "CheckPragma"+    pretty CheckPrimitive{}          = "CheckPrimitive"+    pretty CheckWithFunctionType{}   = "CheckWithFunctionType"+    pretty CheckNamedWhere{}         = "CheckNamedWhere"+    pretty ScopeCheckExpr{}          = "ScopeCheckExpr"+    pretty ScopeCheckDeclaration{}   = "ScopeCheckDeclaration"+    pretty ScopeCheckLHS{}           = "ScopeCheckLHS"+    pretty CheckDotPattern{}         = "CheckDotPattern"+    pretty CheckPatternShadowing{}   = "CheckPatternShadowing"+    pretty SetRange{}                = "SetRange"+    pretty CheckSectionApplication{} = "CheckSectionApplication"+    pretty CheckIsEmpty{}            = "CheckIsEmpty"+    pretty NoHighlighting{}          = "NoHighlighting"+    pretty ModuleContents{}          = "ModuleContents"++instance HasRange Call where+    getRange (CheckClause _ c)               = getRange c+    getRange (CheckPattern p _ _)            = getRange p+    getRange (InferExpr e)                   = getRange e+    getRange (CheckExprCall _ e _)           = getRange e+    getRange (CheckLetBinding b)             = getRange b+    getRange (CheckProjection r _ _)         = r+    getRange (IsTypeCall e s)                = getRange e+    getRange (IsType_ e)                     = getRange e+    getRange (InferVar x)                    = getRange x+    getRange (InferDef f)                    = getRange f+    getRange (CheckArguments r _ _ _)        = r+    getRange (CheckTargetType r _ _)         = r+    getRange (CheckDataDef i _ _ _)          = getRange i+    getRange (CheckRecDef i _ _ _)           = getRange i+    getRange (CheckConstructor _ _ _ c)      = getRange c+    getRange (CheckConstructorFitsIn c _ _)  = getRange c+    getRange (CheckFunDefCall i _ _)         = getRange i+    getRange (CheckPragma r _)               = r+    getRange (CheckPrimitive i _ _)          = getRange i+    getRange CheckWithFunctionType{}         = noRange+    getRange (CheckNamedWhere m)             = getRange m+    getRange (ScopeCheckExpr e)              = getRange e+    getRange (ScopeCheckDeclaration d)       = getRange d+    getRange (ScopeCheckLHS _ p)             = getRange p+    getRange (CheckDotPattern e _)           = getRange e+    getRange (CheckPatternShadowing c)       = getRange c+    getRange (SetRange r)                    = r+    getRange (CheckSectionApplication r _ _) = r+    getRange (CheckIsEmpty r _)              = r+    getRange NoHighlighting                  = noRange+    getRange ModuleContents                  = noRange++---------------------------------------------------------------------------+-- ** Instance table+---------------------------------------------------------------------------++-- | The instance table is a @Map@ associating to every name of+--   record/data type/postulate its list of instances+type InstanceTable = Map QName (Set QName)++-- | When typechecking something of the following form:+--+--     instance+--       x : _+--       x = y+--+--   it's not yet known where to add @x@, so we add it to a list of+--   unresolved instances and we'll deal with it later.+type TempInstanceTable = (InstanceTable , Set QName)++---------------------------------------------------------------------------+-- ** Builtin things+---------------------------------------------------------------------------++data BuiltinDescriptor+  = BuiltinData (TCM Type) [String]+  | BuiltinDataCons (TCM Type)+  | BuiltinPrim String (Term -> TCM ())+  | BuiltinPostulate Relevance (TCM Type)+  | BuiltinUnknown (Maybe (TCM Type)) (Term -> Type -> TCM ())+    -- ^ Builtin of any kind.+    --   Type can be checked (@Just t@) or inferred (@Nothing@).+    --   The second argument is the hook for the verification function.++data BuiltinInfo =+   BuiltinInfo { builtinName :: String+               , builtinDesc :: BuiltinDescriptor }++type BuiltinThings pf = Map String (Builtin pf)++data Builtin pf+        = Builtin Term+        | Prim pf+    deriving (Show, Functor, Foldable, Traversable)++---------------------------------------------------------------------------+-- * Highlighting levels+---------------------------------------------------------------------------++-- | How much highlighting should be sent to the user interface?++data HighlightingLevel+  = None+  | NonInteractive+  | Interactive+    -- ^ This includes both non-interactive highlighting and+    -- interactive highlighting of the expression that is currently+    -- being type-checked.+    deriving (Eq, Ord, Show, Read, Data)++-- | How should highlighting be sent to the user interface?++data HighlightingMethod+  = Direct+    -- ^ Via stdout.+  | Indirect+    -- ^ Both via files and via stdout.+    deriving (Eq, Show, Read, Data)++-- | @ifTopLevelAndHighlightingLevelIs l b m@ runs @m@ when we're+-- type-checking the top-level module and either the highlighting+-- level is /at least/ @l@ or @b@ is 'True'.++ifTopLevelAndHighlightingLevelIsOr ::+  MonadTCM tcm => HighlightingLevel -> Bool -> tcm () -> tcm ()+ifTopLevelAndHighlightingLevelIsOr l b m = do+  e <- askTC+  when (envModuleNestingLevel e == 0 &&+        (envHighlightingLevel e >= l || b))+       m++-- | @ifTopLevelAndHighlightingLevelIs l m@ runs @m@ when we're+-- type-checking the top-level module and the highlighting level is+-- /at least/ @l@.++ifTopLevelAndHighlightingLevelIs ::+  MonadTCM tcm => HighlightingLevel -> tcm () -> tcm ()+ifTopLevelAndHighlightingLevelIs l =+  ifTopLevelAndHighlightingLevelIsOr l False++---------------------------------------------------------------------------+-- * Type checking environment+---------------------------------------------------------------------------++data TCEnv =+    TCEnv { envContext             :: Context+          , envLetBindings         :: LetBindings+          , envCurrentModule       :: ModuleName+          , envCurrentPath         :: Maybe AbsolutePath+            -- ^ The path to the file that is currently being+            -- type-checked.  'Nothing' if we do not have a file+            -- (like in interactive mode see @CommandLine@).+          , envAnonymousModules    :: [(ModuleName, Nat)] -- ^ anonymous modules and their number of free variables+          , envImportPath          :: [C.TopLevelModuleName] -- ^ to detect import cycles+          , envMutualBlock         :: Maybe MutualId -- ^ the current (if any) mutual block+          , envTerminationCheck    :: TerminationCheck ()  -- ^ are we inside the scope of a termination pragma+          , envSolvingConstraints  :: Bool+                -- ^ Are we currently in the process of solving active constraints?+          , envCheckingWhere       :: Bool+                -- ^ Have we stepped into the where-declarations of a clause?+                --   Everything under a @where@ will be checked with this flag on.+          , envWorkingOnTypes      :: Bool+                -- ^ Are we working on types? Turned on by 'workOnTypes'.+          , envAssignMetas         :: Bool+            -- ^ Are we allowed to assign metas?+          , envActiveProblems      :: Set ProblemId+          , envAbstractMode        :: AbstractMode+                -- ^ When checking the typesignature of a public definition+                --   or the body of a non-abstract definition this is true.+                --   To prevent information about abstract things leaking+                --   outside the module.+          , envModality            :: Modality+                -- ^ 'Relevance' component:+                -- Are we checking an irrelevant argument? (=@Irrelevant@)+                -- Then top-level irrelevant declarations are enabled.+                -- Other value: @Relevant@, then only relevant decls. are available.+                --+                -- 'Quantity' component:+                -- Are we checking a runtime-irrelevant thing? (='Quantity0')+                -- Then runtime-irrelevant things are usable.+                -- Other value: @Quantity1@, runtime relevant.+                -- @Quantityω@ is not allowed here, see Bob Atkey, LiCS 2018.+          , envDisplayFormsEnabled :: Bool+                -- ^ Sometimes we want to disable display forms.+          , envRange :: Range+          , envHighlightingRange :: Range+                -- ^ Interactive highlighting uses this range rather+                --   than 'envRange'.+          , envClause :: IPClause+                -- ^ What is the current clause we are type-checking?+                --   Will be recorded in interaction points in this clause.+          , envCall  :: Maybe (Closure Call)+                -- ^ what we're doing at the moment+          , envHighlightingLevel  :: HighlightingLevel+                -- ^ Set to 'None' when imported modules are+                --   type-checked.+          , envHighlightingMethod :: HighlightingMethod+          , envModuleNestingLevel :: !Int+                -- ^ This number indicates how far away from the+                --   top-level module Agda has come when chasing+                --   modules. The level of a given module is not+                --   necessarily the same as the length, in the module+                --   dependency graph, of the shortest path from the+                --   top-level module; it depends on in which order+                --   Agda chooses to chase dependencies.+          , envExpandLast :: ExpandHidden+                -- ^ When type-checking an alias f=e, we do not want+                -- to insert hidden arguments in the end, because+                -- these will become unsolved metas.+          , envAppDef :: Maybe QName+                -- ^ We are reducing an application of this function.+                -- (For debugging of incomplete matches only.)+          , envSimplification :: Simplification+                -- ^ Did we encounter a simplification (proper match)+                --   during the current reduction process?+          , envAllowedReductions :: AllowedReductions+          , envInjectivityDepth :: Int+                -- ^ Injectivity can cause non-termination for unsolvable contraints+                --   (#431, #3067). Keep a limit on the nesting depth of injectivity+                --   uses.+          , envCompareBlocked :: Bool+                -- ^ Can we compare blocked things during conversion?+                --   No by default.+                --   Yes for rewriting feature.+          , envPrintDomainFreePi :: Bool+                -- ^ When @True@, types will be omitted from printed pi types if they+                --   can be inferred.+          , envPrintMetasBare :: Bool+                -- ^ When @True@, throw away meta numbers and meta elims.+                --   This is used for reifying terms for feeding into the+                --   user's source code, e.g., for the interaction tactics @solveAll@.+          , envInsideDotPattern :: Bool+                -- ^ Used by the scope checker to make sure that certain forms+                --   of expressions are not used inside dot patterns: extended+                --   lambdas and let-expressions.+          , envUnquoteFlags :: UnquoteFlags+          , envInstanceDepth :: !Int+                -- ^ Until we get a termination checker for instance search (#1743) we+                --   limit the search depth to ensure termination.+          , envIsDebugPrinting :: Bool+          , envPrintingPatternLambdas :: [QName]+                -- ^ #3004: pattern lambdas with copatterns may refer to themselves. We+                --   don't have a good story for what to do in this case, but at least+                --   printing shouldn't loop. Here we keep track of which pattern lambdas+                --   we are currently in the process of printing.+          , envCallByNeed :: Bool+                -- ^ Use call-by-need evaluation for reductions.+          , envCurrentCheckpoint :: CheckpointId+                -- ^ Checkpoints track the evolution of the context as we go+                -- under binders or refine it by pattern matching.+          , envCheckpoints :: Map CheckpointId Substitution+                -- ^ Keeps the substitution from each previous checkpoint to+                --   the current context.+          , envGeneralizeMetas :: DoGeneralize+                -- ^ Should new metas generalized over.+          , envGeneralizedVars :: Map QName GeneralizedValue+                -- ^ Values for used generalizable variables.+          , envCheckOptionConsistency :: Bool+                -- ^ Do we check that options in imported files are+                --   consistent with each other?+          }+    deriving Data++initEnv :: TCEnv+initEnv = TCEnv { envContext             = []+                , envLetBindings         = Map.empty+                , envCurrentModule       = noModuleName+                , envCurrentPath         = Nothing+                , envAnonymousModules    = []+                , envImportPath          = []+                , envMutualBlock         = Nothing+                , envTerminationCheck    = TerminationCheck+                , envSolvingConstraints  = False+                , envCheckingWhere       = False+                , envActiveProblems      = Set.empty+                , envWorkingOnTypes      = False+                , envAssignMetas         = True+                , envAbstractMode        = ConcreteMode+  -- Andreas, 2013-02-21:  This was 'AbstractMode' until now.+  -- However, top-level checks for mutual blocks, such as+  -- constructor-headedness, should not be able to look into+  -- abstract definitions unless abstract themselves.+  -- (See also discussion on issue 796.)+  -- The initial mode should be 'ConcreteMode', ensuring you+  -- can only look into abstract things in an abstract+  -- definition (which sets 'AbstractMode').+                , envModality               = Modality Relevant Quantity1+                , envDisplayFormsEnabled    = True+                , envRange                  = noRange+                , envHighlightingRange      = noRange+                , envClause                 = IPNoClause+                , envCall                   = Nothing+                , envHighlightingLevel      = None+                , envHighlightingMethod     = Indirect+                , envModuleNestingLevel     = -1+                , envExpandLast             = ExpandLast+                , envAppDef                 = Nothing+                , envSimplification         = NoSimplification+                , envAllowedReductions      = allReductions+                , envInjectivityDepth       = 0+                , envCompareBlocked         = False+                , envPrintDomainFreePi      = False+                , envPrintMetasBare         = False+                , envInsideDotPattern       = False+                , envUnquoteFlags           = defaultUnquoteFlags+                , envInstanceDepth          = 0+                , envIsDebugPrinting        = False+                , envPrintingPatternLambdas = []+                , envCallByNeed             = True+                , envCurrentCheckpoint      = 0+                , envCheckpoints            = Map.singleton 0 IdS+                , envGeneralizeMetas        = NoGeneralize+                , envGeneralizedVars        = Map.empty+                , envCheckOptionConsistency = True+                }++-- | Project 'Relevance' component of 'TCEnv'.+envRelevance :: TCEnv -> Relevance+envRelevance = modRelevance . envModality++data UnquoteFlags = UnquoteFlags+  { _unquoteNormalise :: Bool }+  deriving Data++defaultUnquoteFlags :: UnquoteFlags+defaultUnquoteFlags = UnquoteFlags+  { _unquoteNormalise = False }++unquoteNormalise :: Lens' Bool UnquoteFlags+unquoteNormalise f e = f (_unquoteNormalise e) <&> \ x -> e { _unquoteNormalise = x }++eUnquoteNormalise :: Lens' Bool TCEnv+eUnquoteNormalise = eUnquoteFlags . unquoteNormalise++-- * e-prefixed lenses+------------------------------------------------------------------------++eContext :: Lens' Context TCEnv+eContext f e = f (envContext e) <&> \ x -> e { envContext = x }++eLetBindings :: Lens' LetBindings TCEnv+eLetBindings f e = f (envLetBindings e) <&> \ x -> e { envLetBindings = x }++eCurrentModule :: Lens' ModuleName TCEnv+eCurrentModule f e = f (envCurrentModule e) <&> \ x -> e { envCurrentModule = x }++eCurrentPath :: Lens' (Maybe AbsolutePath) TCEnv+eCurrentPath f e = f (envCurrentPath e) <&> \ x -> e { envCurrentPath = x }++eAnonymousModules :: Lens' [(ModuleName, Nat)] TCEnv+eAnonymousModules f e = f (envAnonymousModules e) <&> \ x -> e { envAnonymousModules = x }++eImportPath :: Lens' [C.TopLevelModuleName] TCEnv+eImportPath f e = f (envImportPath e) <&> \ x -> e { envImportPath = x }++eMutualBlock :: Lens' (Maybe MutualId) TCEnv+eMutualBlock f e = f (envMutualBlock e) <&> \ x -> e { envMutualBlock = x }++eTerminationCheck :: Lens' (TerminationCheck ()) TCEnv+eTerminationCheck f e = f (envTerminationCheck e) <&> \ x -> e { envTerminationCheck = x }++eSolvingConstraints :: Lens' Bool TCEnv+eSolvingConstraints f e = f (envSolvingConstraints e) <&> \ x -> e { envSolvingConstraints = x }++eCheckingWhere :: Lens' Bool TCEnv+eCheckingWhere f e = f (envCheckingWhere e) <&> \ x -> e { envCheckingWhere = x }++eWorkingOnTypes :: Lens' Bool TCEnv+eWorkingOnTypes f e = f (envWorkingOnTypes e) <&> \ x -> e { envWorkingOnTypes = x }++eAssignMetas :: Lens' Bool TCEnv+eAssignMetas f e = f (envAssignMetas e) <&> \ x -> e { envAssignMetas = x }++eActiveProblems :: Lens' (Set ProblemId) TCEnv+eActiveProblems f e = f (envActiveProblems e) <&> \ x -> e { envActiveProblems = x }++eAbstractMode :: Lens' AbstractMode TCEnv+eAbstractMode f e = f (envAbstractMode e) <&> \ x -> e { envAbstractMode = x }++eModality :: Lens' Modality TCEnv+eModality f e = f (envModality e) <&> \ x -> e { envModality = x }++eRelevance :: Lens' Relevance TCEnv+eRelevance = eModality . lModRelevance++eQuantity :: Lens' Quantity TCEnv+eQuantity = eModality . lModQuantity++eDisplayFormsEnabled :: Lens' Bool TCEnv+eDisplayFormsEnabled f e = f (envDisplayFormsEnabled e) <&> \ x -> e { envDisplayFormsEnabled = x }++eRange :: Lens' Range TCEnv+eRange f e = f (envRange e) <&> \ x -> e { envRange = x }++eHighlightingRange :: Lens' Range TCEnv+eHighlightingRange f e = f (envHighlightingRange e) <&> \ x -> e { envHighlightingRange = x }++eCall :: Lens' (Maybe (Closure Call)) TCEnv+eCall f e = f (envCall e) <&> \ x -> e { envCall = x }++eHighlightingLevel :: Lens' HighlightingLevel TCEnv+eHighlightingLevel f e = f (envHighlightingLevel e) <&> \ x -> e { envHighlightingLevel = x }++eHighlightingMethod :: Lens' HighlightingMethod TCEnv+eHighlightingMethod f e = f (envHighlightingMethod e) <&> \ x -> e { envHighlightingMethod = x }++eModuleNestingLevel :: Lens' Int TCEnv+eModuleNestingLevel f e = f (envModuleNestingLevel e) <&> \ x -> e { envModuleNestingLevel = x }++eExpandLast :: Lens' ExpandHidden TCEnv+eExpandLast f e = f (envExpandLast e) <&> \ x -> e { envExpandLast = x }++eAppDef :: Lens' (Maybe QName) TCEnv+eAppDef f e = f (envAppDef e) <&> \ x -> e { envAppDef = x }++eSimplification :: Lens' Simplification TCEnv+eSimplification f e = f (envSimplification e) <&> \ x -> e { envSimplification = x }++eAllowedReductions :: Lens' AllowedReductions TCEnv+eAllowedReductions f e = f (envAllowedReductions e) <&> \ x -> e { envAllowedReductions = x }++eInjectivityDepth :: Lens' Int TCEnv+eInjectivityDepth f e = f (envInjectivityDepth e) <&> \ x -> e { envInjectivityDepth = x }++eCompareBlocked :: Lens' Bool TCEnv+eCompareBlocked f e = f (envCompareBlocked e) <&> \ x -> e { envCompareBlocked = x }++ePrintDomainFreePi :: Lens' Bool TCEnv+ePrintDomainFreePi f e = f (envPrintDomainFreePi e) <&> \ x -> e { envPrintDomainFreePi = x }++eInsideDotPattern :: Lens' Bool TCEnv+eInsideDotPattern f e = f (envInsideDotPattern e) <&> \ x -> e { envInsideDotPattern = x }++eUnquoteFlags :: Lens' UnquoteFlags TCEnv+eUnquoteFlags f e = f (envUnquoteFlags e) <&> \ x -> e { envUnquoteFlags = x }++eInstanceDepth :: Lens' Int TCEnv+eInstanceDepth f e = f (envInstanceDepth e) <&> \ x -> e { envInstanceDepth = x }++eIsDebugPrinting :: Lens' Bool TCEnv+eIsDebugPrinting f e = f (envIsDebugPrinting e) <&> \ x -> e { envIsDebugPrinting = x }++ePrintingPatternLambdas :: Lens' [QName] TCEnv+ePrintingPatternLambdas f e = f (envPrintingPatternLambdas e) <&> \ x -> e { envPrintingPatternLambdas = x }++eCallByNeed :: Lens' Bool TCEnv+eCallByNeed f e = f (envCallByNeed e) <&> \ x -> e { envCallByNeed = x }++eCurrentCheckpoint :: Lens' CheckpointId TCEnv+eCurrentCheckpoint f e = f (envCurrentCheckpoint e) <&> \ x -> e { envCurrentCheckpoint = x }++eCheckpoints :: Lens' (Map CheckpointId Substitution) TCEnv+eCheckpoints f e = f (envCheckpoints e) <&> \ x -> e { envCheckpoints = x }++eGeneralizeMetas :: Lens' DoGeneralize TCEnv+eGeneralizeMetas f e = f (envGeneralizeMetas e) <&> \ x -> e { envGeneralizeMetas = x }++eGeneralizedVars :: Lens' (Map QName GeneralizedValue) TCEnv+eGeneralizedVars f e = f (envGeneralizedVars e) <&> \ x -> e { envGeneralizedVars = x }++---------------------------------------------------------------------------+-- ** Context+---------------------------------------------------------------------------++-- | The @Context@ is a stack of 'ContextEntry's.+type Context      = [ContextEntry]+type ContextEntry = Dom (Name, Type)++---------------------------------------------------------------------------+-- ** Let bindings+---------------------------------------------------------------------------++type LetBindings = Map Name (Open (Term, Dom Type))++---------------------------------------------------------------------------+-- ** Abstract mode+---------------------------------------------------------------------------++data AbstractMode+  = AbstractMode        -- ^ Abstract things in the current module can be accessed.+  | ConcreteMode        -- ^ No abstract things can be accessed.+  | IgnoreAbstractMode  -- ^ All abstract things can be accessed.+  deriving (Data, Show, Eq)++aDefToMode :: IsAbstract -> AbstractMode+aDefToMode AbstractDef = AbstractMode+aDefToMode ConcreteDef = ConcreteMode++aModeToDef :: AbstractMode -> IsAbstract+aModeToDef AbstractMode = AbstractDef+aModeToDef ConcreteMode = ConcreteDef+aModeToDef _ = __IMPOSSIBLE__++---------------------------------------------------------------------------+-- ** Insertion of implicit arguments+---------------------------------------------------------------------------++data ExpandHidden+  = ExpandLast      -- ^ Add implicit arguments in the end until type is no longer hidden 'Pi'.+  | DontExpandLast  -- ^ Do not append implicit arguments.+  deriving (Eq, Data)++-- | A candidate solution for an instance meta is a term with its type.+--   It may be the case that the candidate is not fully applied yet or+--   of the wrong type, hence the need for the type.+data Candidate  = Candidate { candidateTerm :: Term+                            , candidateType :: Type+                            , candidateOverlappable :: Bool+                            }+  deriving (Show, Data)++instance Free Candidate where+  freeVars' (Candidate t u _) = freeVars' (t, u)++---------------------------------------------------------------------------+-- * Type checking warnings (aka non-fatal errors)+---------------------------------------------------------------------------++-- | A non-fatal error is an error which does not prevent us from+-- checking the document further and interacting with the user.++data Warning+  = NicifierIssue            DeclarationWarning+  | TerminationIssue         [TerminationError]+  | UnreachableClauses       QName [[NamedArg DeBruijnPattern]]+  | CoverageIssue            QName [(Telescope, [NamedArg DeBruijnPattern])]+  -- ^ `CoverageIssue f pss` means that `pss` are not covered in `f`+  | CoverageNoExactSplit     QName [Clause]+  | NotStrictlyPositive      QName (Seq OccursWhere)+  | UnsolvedMetaVariables    [Range]  -- ^ Do not use directly with 'warning'+  | UnsolvedInteractionMetas [Range]  -- ^ Do not use directly with 'warning'+  | UnsolvedConstraints      Constraints+    -- ^ Do not use directly with 'warning'+  | CantGeneralizeOverSorts [MetaId]+  | AbsurdPatternRequiresNoRHS [NamedArg DeBruijnPattern]+  | OldBuiltin               String String+    -- ^ In `OldBuiltin old new`, the BUILTIN old has been replaced by new+  | EmptyRewritePragma+    -- ^ If the user wrote just @{-\# REWRITE \#-}@.+  | IllformedAsClause String+    -- ^ If the user wrote something other than an unqualified name+    --   in the @as@ clause of an @import@ statement.+    --   The 'String' gives optionally extra explanation.+  | UselessPublic+    -- ^ If the user opens a module public before the module header.+    --   (See issue #2377.)+  | UselessInline            QName+  | WrongInstanceDeclaration+  | InstanceWithExplicitArg  QName+  -- ^ An instance was declared with an implicit argument, which means it+  --   will never actually be considered by instance search.+  | InstanceNoOutputTypeName Doc+  -- ^ The type of an instance argument doesn't end in a named or+  -- variable type, so it will never be considered by instance search.+  | InstanceArgWithExplicitArg Doc+  -- ^ As InstanceWithExplicitArg, but for local bindings rather than+  --   top-level instances.+  | InversionDepthReached    QName+  -- ^ The --inversion-max-depth was reached.+  -- Generic warnings for one-off things+  | GenericWarning           Doc+    -- ^ Harmless generic warning (not an error)+  | GenericNonFatalError     Doc+    -- ^ Generic error which doesn't abort proceedings (not a warning)+  -- Safe flag errors+  | SafeFlagPostulate C.Name+  | SafeFlagPragma [String]+  | SafeFlagNonTerminating+  | SafeFlagTerminating+  | SafeFlagWithoutKFlagPrimEraseEquality+  | WithoutKFlagPrimEraseEquality+  | SafeFlagNoPositivityCheck+  | SafeFlagPolarity+  | SafeFlagNoUniverseCheck+  | ParseWarning             ParseWarning+  | LibraryWarning           LibWarning+  | DeprecationWarning String String String+    -- ^ `DeprecationWarning old new version`:+    --   `old` is deprecated, use `new` instead. This will be an error in Agda `version`.+  | UserWarning String+    -- ^ User-defined warning (e.g. to mention that a name is deprecated)+  | ModuleDoesntExport C.QName [C.ImportedName]+    -- ^ Some imported names are not actually exported by the source module+  | InfectiveImport String ModuleName+    -- ^ Importing a file using an infective option into one which doesn't+  | CoInfectiveImport String ModuleName+    -- ^ Importing a file not using a coinfective option from one which does+  deriving (Show , Data)+++warningName :: Warning -> WarningName+warningName w = case w of+  -- special cases+  NicifierIssue dw             -> declarationWarningName dw+  ParseWarning pw              -> parseWarningName pw+  LibraryWarning lw            -> libraryWarningName lw+  -- typechecking errors+  CantGeneralizeOverSorts{}    -> CantGeneralizeOverSorts_+  AbsurdPatternRequiresNoRHS{} -> AbsurdPatternRequiresNoRHS_+  CoverageIssue{}              -> CoverageIssue_+  CoverageNoExactSplit{}       -> CoverageNoExactSplit_+  DeprecationWarning{}         -> DeprecationWarning_+  EmptyRewritePragma           -> EmptyRewritePragma_+  IllformedAsClause{}          -> IllformedAsClause_+  WrongInstanceDeclaration{}   -> WrongInstanceDeclaration_+  InstanceWithExplicitArg{}    -> InstanceWithExplicitArg_+  InstanceNoOutputTypeName{}   -> InstanceNoOutputTypeName_+  InstanceArgWithExplicitArg{} -> InstanceArgWithExplicitArg_+  GenericNonFatalError{}       -> GenericNonFatalError_+  GenericWarning{}             -> GenericWarning_+  InversionDepthReached{}      -> InversionDepthReached_+  ModuleDoesntExport{}         -> ModuleDoesntExport_+  NotStrictlyPositive{}        -> NotStrictlyPositive_+  OldBuiltin{}                 -> OldBuiltin_+  SafeFlagNoPositivityCheck    -> SafeFlagNoPositivityCheck_+  SafeFlagNonTerminating       -> SafeFlagNonTerminating_+  SafeFlagNoUniverseCheck      -> SafeFlagNoUniverseCheck_+  SafeFlagPolarity             -> SafeFlagPolarity_+  SafeFlagPostulate{}          -> SafeFlagPostulate_+  SafeFlagPragma{}             -> SafeFlagPragma_+  SafeFlagWithoutKFlagPrimEraseEquality -> SafeFlagWithoutKFlagPrimEraseEquality_+  WithoutKFlagPrimEraseEquality -> WithoutKFlagPrimEraseEquality_+  SafeFlagTerminating          -> SafeFlagTerminating_+  TerminationIssue{}           -> TerminationIssue_+  UnreachableClauses{}         -> UnreachableClauses_+  UnsolvedInteractionMetas{}   -> UnsolvedInteractionMetas_+  UnsolvedConstraints{}        -> UnsolvedConstraints_+  UnsolvedMetaVariables{}      -> UnsolvedMetaVariables_+  UselessInline{}              -> UselessInline_+  UselessPublic                -> UselessPublic_+  UserWarning{}                -> UserWarning_+  InfectiveImport{}            -> InfectiveImport_+  CoInfectiveImport{}          -> CoInfectiveImport_+++data TCWarning+  = TCWarning+    { tcWarningRange :: Range+        -- ^ Range where the warning was raised+    , tcWarning   :: Warning+        -- ^ The warning itself+    , tcWarningPrintedWarning :: Doc+        -- ^ The warning printed in the state and environment where it was raised+    , tcWarningCached :: Bool+        -- ^ Should the warning be affected by caching.+    }+  deriving Show+++tcWarningOrigin :: TCWarning -> SrcFile+tcWarningOrigin = rangeFile . tcWarningRange++instance HasRange TCWarning where+  getRange = tcWarningRange++-- used for merging lists of warnings+instance Eq TCWarning where+  x == y = equalHeadConstructors (tcWarning x) (tcWarning y)+            && getRange x == getRange y++equalHeadConstructors :: Warning -> Warning -> Bool+equalHeadConstructors = (==) `on` toConstr++getPartialDefs :: ReadTCState tcm => tcm [QName]+getPartialDefs = do+  tcst <- getTCState+  return $ mapMaybe (extractQName . tcWarning)+         $ tcst ^. stTCWarnings where++    extractQName :: Warning -> Maybe QName+    extractQName (CoverageIssue f _) = Just f+    extractQName _                   = Nothing++---------------------------------------------------------------------------+-- * Type checking errors+---------------------------------------------------------------------------++-- | Information about a call.++data CallInfo = CallInfo+  { callInfoTarget :: QName+    -- ^ Target function name.+  , callInfoRange :: Range+    -- ^ Range of the target function.+  , callInfoCall :: Closure Term+    -- ^ To be formatted representation of the call.+  } deriving (Data, Show)++-- no Eq, Ord instances: too expensive! (see issues 851, 852)++-- | We only 'show' the name of the callee.+instance Pretty CallInfo where pretty = pretty . callInfoTarget+instance AllNames CallInfo where allNames = singleton . callInfoTarget++-- UNUSED, but keep!+-- -- | Call pathes are sequences of 'CallInfo's starting from a 'callSource'.+-- data CallPath = CallPath+--   { callSource :: QName+--     -- ^ The originator of the first call.+--   , callInfos :: [CallInfo]+--     -- ^ The calls, in order from source to final target.+--   }+--   deriving (Show)++-- -- | 'CallPath'es can be connected, but there is no empty callpath.+-- --   Thus, they form a semigroup, but we choose to abuse 'Monoid'.+-- instance Monoid CallPath where+--   mempty = __IMPOSSIBLE__+--   mappend (CallPath src cs) (CallPath _ cs') = CallPath src $ cs ++ cs'++-- | Information about a mutual block which did not pass the+-- termination checker.++data TerminationError = TerminationError+  { termErrFunctions :: [QName]+    -- ^ The functions which failed to check. (May not include+    -- automatically generated functions.)+  , termErrCalls :: [CallInfo]+    -- ^ The problematic call sites.+  } deriving (Data, Show)++-- | Error when splitting a pattern variable into possible constructor patterns.+data SplitError+  = NotADatatype        (Closure Type)  -- ^ Neither data type nor record.+  | IrrelevantDatatype  (Closure Type)  -- ^ Data type, but in irrelevant position.+  | ErasedDatatype      (Closure Type)  -- ^ Data type, but in erased position.+  | CoinductiveDatatype (Closure Type)  -- ^ Split on codata not allowed.+  -- UNUSED, but keep!+  -- -- | NoRecordConstructor Type  -- ^ record type, but no constructor+  | UnificationStuck+    { cantSplitConName  :: QName        -- ^ Constructor.+    , cantSplitTel      :: Telescope    -- ^ Context for indices.+    , cantSplitConIdx   :: Args         -- ^ Inferred indices (from type of constructor).+    , cantSplitGivenIdx :: Args         -- ^ Expected indices (from checking pattern).+    , cantSplitFailures :: [UnificationFailure] -- ^ Reason(s) why unification got stuck.+    }+  | CosplitCatchall+      -- ^ Copattern split with a catchall+  | CosplitNoTarget+      -- ^ We do not know the target type of the clause.+  | CosplitNoRecordType (Closure Type)+      -- ^ Target type is not a record type.+  | CannotCreateMissingClause QName (Telescope,[NamedArg DeBruijnPattern]) Doc (Closure (Abs Type))++  | GenericSplitError String+  deriving (Show)++data NegativeUnification+  = UnifyConflict Telescope Term Term+  | UnifyCycle Telescope Int Term+  deriving (Show)++data UnificationFailure+  = UnifyIndicesNotVars Telescope Type Term Term Args -- ^ Failed to apply injectivity to constructor of indexed datatype+  | UnifyRecursiveEq Telescope Type Int Term          -- ^ Can't solve equation because variable occurs in (type of) lhs+  | UnifyReflexiveEq Telescope Type Term              -- ^ Can't solve reflexive equation because --without-K is enabled+  deriving (Show)++data UnquoteError+  = BadVisibility String (Arg I.Term)+  | ConInsteadOfDef QName String String+  | DefInsteadOfCon QName String String+  | NonCanonical String I.Term+  | BlockedOnMeta TCState MetaId+  | UnquotePanic String+  deriving (Show)++data TypeError+        = InternalError String+        | NotImplemented String+        | NotSupported String+        | CompilationError String+        | PropMustBeSingleton+        | DataMustEndInSort Term+{- UNUSED+        | DataTooManyParameters+            -- ^ In @data D xs where@ the number of parameters @xs@ does not fit the+            --   the parameters given in the forward declaraion @data D Gamma : T@.+-}+        | ShouldEndInApplicationOfTheDatatype Type+            -- ^ The target of a constructor isn't an application of its+            -- datatype. The 'Type' records what it does target.+        | ShouldBeAppliedToTheDatatypeParameters Term Term+            -- ^ The target of a constructor isn't its datatype applied to+            --   something that isn't the parameters. First term is the correct+            --   target and the second term is the actual target.+        | ShouldBeApplicationOf Type QName+            -- ^ Expected a type to be an application of a particular datatype.+        | ConstructorPatternInWrongDatatype QName QName -- ^ constructor, datatype+        | CantResolveOverloadedConstructorsTargetingSameDatatype QName [QName]+          -- ^ Datatype, constructors.+        | DoesNotConstructAnElementOf QName Type -- ^ constructor, type+        | WrongHidingInLHS+            -- ^ The left hand side of a function definition has a hidden argument+            --   where a non-hidden was expected.+        | WrongHidingInLambda Type+            -- ^ Expected a non-hidden function and found a hidden lambda.+        | WrongHidingInApplication Type+            -- ^ A function is applied to a hidden argument where a non-hidden was expected.+        | WrongNamedArgument (NamedArg A.Expr)+            -- ^ A function is applied to a hidden named argument it does not have.+        | WrongIrrelevanceInLambda+            -- ^ Wrong user-given relevance annotation in lambda.+        | WrongQuantityInLambda+            -- ^ Wrong user-given quantity annotation in lambda.+        | HidingMismatch Hiding Hiding+            -- ^ The given hiding does not correspond to the expected hiding.+        | RelevanceMismatch Relevance Relevance+            -- ^ The given relevance does not correspond to the expected relevane.+        | UninstantiatedDotPattern A.Expr+        | ForcedConstructorNotInstantiated A.Pattern+        | IlltypedPattern A.Pattern Type+        | IllformedProjectionPattern A.Pattern+        | CannotEliminateWithPattern (NamedArg A.Pattern) Type+        | WrongNumberOfConstructorArguments QName Nat Nat+        | ShouldBeEmpty Type [DeBruijnPattern]+        | ShouldBeASort Type+            -- ^ The given type should have been a sort.+        | ShouldBePi Type+            -- ^ The given type should have been a pi.+        | ShouldBePath Type+        | ShouldBeRecordType Type+        | ShouldBeRecordPattern DeBruijnPattern+        | NotAProjectionPattern (NamedArg A.Pattern)+        | NotAProperTerm+        | InvalidTypeSort Sort+            -- ^ This sort is not a type expression.+        | InvalidType Term+            -- ^ This term is not a type expression.+        | FunctionTypeInSizeUniv Term+            -- ^ This term, a function type constructor, lives in+            --   @SizeUniv@, which is not allowed.+        | SplitOnIrrelevant (Dom Type)+        -- UNUSED: -- | SplitOnErased (Dom Type)+        | SplitOnNonVariable Term Type+        | DefinitionIsIrrelevant QName+        | VariableIsIrrelevant Name+        | VariableIsErased Name+--        | UnequalLevel Comparison Term Term  -- UNUSED+        | UnequalTerms Comparison Term Term Type+        | UnequalTypes Comparison Type Type+--      | UnequalTelescopes Comparison Telescope Telescope -- UNUSED+        | UnequalRelevance Comparison Term Term+            -- ^ The two function types have different relevance.+        | UnequalHiding Term Term+            -- ^ The two function types have different hiding.+        | UnequalSorts Sort Sort+        | UnequalBecauseOfUniverseConflict Comparison Term Term+        | NotLeqSort Sort Sort+        | MetaCannotDependOn MetaId [Nat] Nat+            -- ^ The arguments are the meta variable, the parameters it can+            --   depend on and the paratemeter that it wants to depend on.+        | MetaOccursInItself MetaId+        | MetaIrrelevantSolution MetaId Term+        | GenericError String+        | GenericDocError Doc+        | BuiltinMustBeConstructor String A.Expr+        | NoSuchBuiltinName String+        | DuplicateBuiltinBinding String Term Term+        | NoBindingForBuiltin String+        | NoSuchPrimitiveFunction String+        | DuplicatePrimitiveBinding String QName QName+        | ShadowedModule C.Name [A.ModuleName]+        | BuiltinInParameterisedModule String+        | IllegalLetInTelescope C.TypedBinding+        | NoRHSRequiresAbsurdPattern [NamedArg A.Pattern]+        | TooFewFields QName [C.Name]+        | TooManyFields QName [C.Name]+        | DuplicateFields [C.Name]+        | DuplicateConstructors [C.Name]+        | WithOnFreeVariable A.Expr Term+        | UnexpectedWithPatterns [A.Pattern]+        | WithClausePatternMismatch A.Pattern (NamedArg DeBruijnPattern)+        | FieldOutsideRecord+        | ModuleArityMismatch A.ModuleName Telescope [NamedArg A.Expr]+        | GeneralizeCyclicDependency+        | GeneralizeUnsolvedMeta+    -- Coverage errors+-- UNUSED:        | IncompletePatternMatching Term [Elim] -- can only happen if coverage checking is switched off+        | SplitError SplitError+        | ImpossibleConstructor QName NegativeUnification+    -- Positivity errors+        | TooManyPolarities QName Int+    -- Import errors+        | LocalVsImportedModuleClash ModuleName+        | SolvedButOpenHoles+          -- ^ Some interaction points (holes) have not been filled by user.+          --   There are not 'UnsolvedMetas' since unification solved them.+          --   This is an error, since interaction points are never filled+          --   without user interaction.+        | CyclicModuleDependency [C.TopLevelModuleName]+        | FileNotFound C.TopLevelModuleName [AbsolutePath]+        | OverlappingProjects AbsolutePath C.TopLevelModuleName C.TopLevelModuleName+        | AmbiguousTopLevelModuleName C.TopLevelModuleName [AbsolutePath]+        | ModuleNameUnexpected C.TopLevelModuleName C.TopLevelModuleName+          -- ^ Found module name, expected module name.+        | ModuleNameDoesntMatchFileName C.TopLevelModuleName [AbsolutePath]+        | ClashingFileNamesFor ModuleName [AbsolutePath]+        | ModuleDefinedInOtherFile C.TopLevelModuleName AbsolutePath AbsolutePath+          -- ^ Module name, file from which it was loaded, file which+          -- the include path says contains the module.+    -- Scope errors+        | BothWithAndRHS+        | AbstractConstructorNotInScope A.QName+        | NotInScope [C.QName]+        | NoSuchModule C.QName+        | AmbiguousName C.QName (NonemptyList A.QName)+        | AmbiguousModule C.QName (NonemptyList A.ModuleName)+        | ClashingDefinition C.QName A.QName+        | ClashingModule A.ModuleName A.ModuleName+        | ClashingImport C.Name A.QName+        | ClashingModuleImport C.Name A.ModuleName+        | PatternShadowsConstructor C.Name A.QName+        | DuplicateImports C.QName [C.ImportedName]+        | InvalidPattern C.Pattern+        | RepeatedVariablesInPattern [C.Name]+        | GeneralizeNotSupportedHere A.QName+        | MultipleFixityDecls [(C.Name, [Fixity'])]+        | MultiplePolarityPragmas [C.Name]+    -- Concrete to Abstract errors+        | NotAModuleExpr C.Expr+            -- ^ The expr was used in the right hand side of an implicit module+            --   definition, but it wasn't of the form @m Delta@.+        | NotAnExpression C.Expr+        | NotAValidLetBinding NiceDeclaration+        | NotValidBeforeField NiceDeclaration+        | NothingAppliedToHiddenArg C.Expr+        | NothingAppliedToInstanceArg C.Expr+    -- Pattern synonym errors+        | BadArgumentsToPatternSynonym A.AmbiguousQName+        | TooFewArgumentsToPatternSynonym A.AmbiguousQName+        | CannotResolveAmbiguousPatternSynonym (NonemptyList (A.QName, A.PatternSynDefn))+        | UnusedVariableInPatternSynonym+    -- Operator errors+        | NoParseForApplication [C.Expr]+        | AmbiguousParseForApplication [C.Expr] [C.Expr]+        | NoParseForLHS LHSOrPatSyn C.Pattern+        | AmbiguousParseForLHS LHSOrPatSyn C.Pattern [C.Pattern]+        | OperatorInformation [NotationSection] TypeError+{- UNUSED+        | NoParseForPatternSynonym C.Pattern+        | AmbiguousParseForPatternSynonym C.Pattern [C.Pattern]+-}+    -- Usage errors+    -- Instance search errors+        | InstanceNoCandidate Type [(Term, TCErr)]+    -- Reflection errors+        | UnquoteFailed UnquoteError+        | DeBruijnIndexOutOfScope Nat Telescope [Name]+    -- Language option errors+        | NeedOptionCopatterns+        | NeedOptionRewriting+        | NeedOptionProp+    -- Failure associated to warnings+        | NonFatalErrors [TCWarning]+    -- Instance search errors+        | InstanceSearchDepthExhausted Term Type Int+        | TriedToCopyConstrainedPrim QName+          deriving Show++-- | Distinguish error message when parsing lhs or pattern synonym, resp.+data LHSOrPatSyn = IsLHS | IsPatSyn deriving (Eq, Show)++-- | Type-checking errors.++data TCErr+  = TypeError+    { tcErrState   :: TCState+        -- ^ The state in which the error was raised.+    , tcErrClosErr :: Closure TypeError+        -- ^ The environment in which the error as raised plus the error.+    }+  | Exception Range Doc+  | IOException TCState Range E.IOException+    -- ^ The first argument is the state in which the error was+    -- raised.+  | PatternErr+      -- ^ The exception which is usually caught.+      --   Raised for pattern violations during unification ('assignV')+      --   but also in other situations where we want to backtrack.++instance Error TCErr where+  strMsg = Exception noRange . text . strMsg++instance Show TCErr where+  show (TypeError _ e)     = show (envRange $ clEnv e) ++ ": " ++ show (clValue e)+  show (Exception r d)     = show r ++ ": " ++ render d+  show (IOException _ r e) = show r ++ ": " ++ show e+  show PatternErr{}        = "Pattern violation (you shouldn't see this)"++instance HasRange TCErr where+  getRange (TypeError _ cl)    = envRange $ clEnv cl+  getRange (Exception r _)     = r+  getRange (IOException s r _) = r+  getRange PatternErr{}        = noRange++instance E.Exception TCErr++-----------------------------------------------------------------------------+-- * Accessing options+-----------------------------------------------------------------------------++class (Functor m, Applicative m, Monad m) => HasOptions m where+  -- | Returns the pragma options which are currently in effect.+  pragmaOptions      :: m PragmaOptions+  -- | Returns the command line options which are currently in effect.+  commandLineOptions :: m CommandLineOptions++instance MonadIO m => HasOptions (TCMT m) where+  pragmaOptions = useTC stPragmaOptions++  commandLineOptions = do+    p  <- useTC stPragmaOptions+    cl <- stPersistentOptions . stPersistentState <$> getTC+    return $ cl { optPragmaOptions = p }++instance HasOptions m => HasOptions (ExceptT e m) where+  pragmaOptions      = lift pragmaOptions+  commandLineOptions = lift commandLineOptions++instance HasOptions m => HasOptions (ListT m) where+  pragmaOptions      = lift pragmaOptions+  commandLineOptions = lift commandLineOptions++instance HasOptions m => HasOptions (MaybeT m) where+  pragmaOptions      = lift pragmaOptions+  commandLineOptions = lift commandLineOptions++instance HasOptions m => HasOptions (ReaderT r m) where+  pragmaOptions      = lift pragmaOptions+  commandLineOptions = lift commandLineOptions++instance HasOptions m => HasOptions (StateT s m) where+  pragmaOptions      = lift pragmaOptions+  commandLineOptions = lift commandLineOptions++instance (HasOptions m, Monoid w) => HasOptions (WriterT w m) where+  pragmaOptions      = lift pragmaOptions+  commandLineOptions = lift commandLineOptions++-- Ternary options are annoying to deal with so we provide auxiliary+-- definitions using @collapseDefault@.++sizedTypesOption :: HasOptions m => m Bool+sizedTypesOption = collapseDefault . optSizedTypes <$> pragmaOptions++guardednessOption :: HasOptions m => m Bool+guardednessOption = collapseDefault . optGuardedness <$> pragmaOptions++withoutKOption :: HasOptions m => m Bool+withoutKOption = collapseDefault . optWithoutK <$> pragmaOptions++-----------------------------------------------------------------------------+-- * The reduce monad+-----------------------------------------------------------------------------++-- | Environment of the reduce monad.+data ReduceEnv = ReduceEnv+  { redEnv :: TCEnv    -- ^ Read only access to environment.+  , redSt  :: TCState  -- ^ Read only access to state (signature, metas...).+  }++mapRedEnv :: (TCEnv -> TCEnv) -> ReduceEnv -> ReduceEnv+mapRedEnv f s = s { redEnv = f (redEnv s) }++mapRedSt :: (TCState -> TCState) -> ReduceEnv -> ReduceEnv+mapRedSt f s = s { redSt = f (redSt s) }++mapRedEnvSt :: (TCEnv -> TCEnv) -> (TCState -> TCState) -> ReduceEnv+            -> ReduceEnv+mapRedEnvSt f g (ReduceEnv e s) = ReduceEnv (f e) (g s)++-- Lenses+reduceEnv :: Lens' TCEnv ReduceEnv+reduceEnv f s = f (redEnv s) <&> \ e -> s { redEnv = e }++reduceSt :: Lens' TCState ReduceEnv+reduceSt f s = f (redSt s) <&> \ e -> s { redSt = e }++newtype ReduceM a = ReduceM { unReduceM :: ReduceEnv -> a }+--  deriving (Functor, Applicative, Monad)++onReduceEnv :: (ReduceEnv -> ReduceEnv) -> ReduceM a -> ReduceM a+onReduceEnv f (ReduceM m) = ReduceM (m . f)++fmapReduce :: (a -> b) -> ReduceM a -> ReduceM b+fmapReduce f (ReduceM m) = ReduceM $ \ e -> f $! m e+{-# INLINE fmapReduce #-}++apReduce :: ReduceM (a -> b) -> ReduceM a -> ReduceM b+apReduce (ReduceM f) (ReduceM x) = ReduceM $ \ e -> f e $! x e+{-# INLINE apReduce #-}++bindReduce :: ReduceM a -> (a -> ReduceM b) -> ReduceM b+bindReduce (ReduceM m) f = ReduceM $ \ e -> unReduceM (f $! m e) e+{-# INLINE bindReduce #-}++instance Functor ReduceM where+  fmap = fmapReduce++instance Applicative ReduceM where+  pure x = ReduceM (const x)+  (<*>) = apReduce++instance Monad ReduceM where+  return = pure+  (>>=) = bindReduce+  (>>) = (*>)+#if __GLASGOW_HASKELL__ >= 800+  fail = Fail.fail++instance Fail.MonadFail ReduceM where+  fail = error+#endif++instance ReadTCState ReduceM where+  getTCState = ReduceM redSt+  withTCState f = onReduceEnv $ mapRedSt f++runReduceM :: ReduceM a -> TCM a+runReduceM m = do+  e <- askTC+  s <- getTC+  return $! unReduceM m (ReduceEnv e s)++runReduceF :: (a -> ReduceM b) -> TCM (a -> b)+runReduceF f = do+  e <- askTC+  s <- getTC+  return $ \x -> unReduceM (f x) (ReduceEnv e s)++instance MonadTCEnv ReduceM where+  askTC   = ReduceM redEnv+  localTC = onReduceEnv . mapRedEnv++useR :: (ReadTCState m) => Lens' a TCState -> m a+useR l = (^.l) <$> getTCState++askR :: ReduceM ReduceEnv+askR = ReduceM ask++localR :: (ReduceEnv -> ReduceEnv) -> ReduceM a -> ReduceM a+localR f = ReduceM . local f . unReduceM++instance HasOptions ReduceM where+  pragmaOptions      = useR stPragmaOptions+  commandLineOptions = do+    p  <- useR stPragmaOptions+    cl <- stPersistentOptions . stPersistentState <$> getTCState+    return $ cl{ optPragmaOptions = p }++class ( Applicative m+      , MonadTCEnv m+      , ReadTCState m+      , HasOptions m+      ) => MonadReduce m where+  liftReduce :: ReduceM a -> m a++instance MonadReduce m => MonadReduce (MaybeT m) where+  liftReduce = lift . liftReduce++instance MonadReduce m => MonadReduce (ListT m) where+  liftReduce = lift . liftReduce++instance MonadReduce m => MonadReduce (ExceptT err m) where+  liftReduce = lift . liftReduce++instance MonadReduce m => MonadReduce (ReaderT r m) where+  liftReduce = lift . liftReduce++instance (Monoid w, MonadReduce m) => MonadReduce (WriterT w m) where+  liftReduce = lift . liftReduce++instance MonadReduce m => MonadReduce (StateT w m) where+  liftReduce = lift . liftReduce++instance MonadReduce ReduceM where+  liftReduce = id++---------------------------------------------------------------------------+-- * Monad with read-only 'TCEnv'+---------------------------------------------------------------------------++-- | @MonadTCEnv@ made into its own dedicated service class.+--   This allows us to use 'MonadReader' for 'ReaderT' extensions of @TCM@.+class Monad m => MonadTCEnv m where+  askTC   :: m TCEnv+  localTC :: (TCEnv -> TCEnv) -> m a -> m a++instance MonadTCEnv m => MonadTCEnv (MaybeT m) where+  askTC   = lift askTC+  localTC = mapMaybeT . localTC++instance MonadTCEnv m => MonadTCEnv (ListT m) where+  askTC   = lift askTC+  localTC = mapListT . localTC++instance MonadTCEnv m => MonadTCEnv (ExceptT err m) where+  askTC   = lift askTC+  localTC = mapExceptT . localTC++instance MonadTCEnv m => MonadTCEnv (ReaderT r m) where+  askTC   = lift askTC+  localTC = mapReaderT . localTC++instance (Monoid w, MonadTCEnv m) => MonadTCEnv (WriterT w m) where+  askTC   = lift askTC+  localTC = mapWriterT . localTC++instance MonadTCEnv m => MonadTCEnv (StateT s m) where+  askTC   = lift askTC+  localTC = mapStateT . localTC++asksTC :: MonadTCEnv m => (TCEnv -> a) -> m a+asksTC f = f <$> askTC++viewTC :: MonadTCEnv m => Lens' a TCEnv -> m a+viewTC l = asksTC (^. l)++-- | Modify the lens-indicated part of the @TCEnv@ in a subcomputation.+locallyTC :: MonadTCEnv m => Lens' a TCEnv -> (a -> a) -> m b -> m b+locallyTC l = localTC . over l++---------------------------------------------------------------------------+-- * Monad with mutable 'TCState'+---------------------------------------------------------------------------++-- | @MonadTCState@ made into its own dedicated service class.+--   This allows us to use 'MonadState' for 'StateT' extensions of @TCM@.+class Monad m => MonadTCState m where+  getTC :: m TCState+  putTC :: TCState -> m ()+  modifyTC :: (TCState -> TCState) -> m ()++  {-# MINIMAL getTC, (putTC | modifyTC) #-}+  putTC      = modifyTC . const+  modifyTC f = putTC . f =<< getTC++instance MonadTCState m => MonadTCState (MaybeT m) where+  getTC    = lift getTC+  putTC    = lift . putTC+  modifyTC = lift . modifyTC++instance MonadTCState m => MonadTCState (ListT m) where+  getTC    = lift getTC+  putTC    = lift . putTC+  modifyTC = lift . modifyTC++instance MonadTCState m => MonadTCState (ExceptT err m) where+  getTC    = lift getTC+  putTC    = lift . putTC+  modifyTC = lift . modifyTC++instance MonadTCState m => MonadTCState (ReaderT r m) where+  getTC    = lift getTC+  putTC    = lift . putTC+  modifyTC = lift . modifyTC++instance (Monoid w, MonadTCState m) => MonadTCState (WriterT w m) where+  getTC    = lift getTC+  putTC    = lift . putTC+  modifyTC = lift . modifyTC++instance MonadTCState m => MonadTCState (StateT s m) where+  getTC    = lift getTC+  putTC    = lift . putTC+  modifyTC = lift . modifyTC++-- ** @TCState@ accessors (no lenses)++getsTC :: MonadTCState m => (TCState -> a) -> m a+getsTC f = f <$> getTC++-- | A variant of 'modifyTC' in which the computation is strict in the+-- new state.+modifyTC' :: MonadTCState m => (TCState -> TCState) -> m ()+modifyTC' f = do+  s' <- getTC+  putTC $! f s'++-- SEE TC.Monad.State+-- -- | Restore the 'TCState' after computation.+-- localTCState :: MonadTCState m => m a -> m a+-- localTCState = bracket_ getTC putTC++-- ** @TCState@ accessors via lenses++useTC :: MonadTCState m => Lens' a TCState -> m a+useTC l = do+  !x <- getsTC (^. l)+  return x++infix 4 `setTCLens`++-- | Overwrite the part of the 'TCState' focused on by the lens.+setTCLens :: MonadTCState m => Lens' a TCState -> a -> m ()+setTCLens l = modifyTC . set l++-- | Modify the part of the 'TCState' focused on by the lens.+modifyTCLens :: MonadTCState m => Lens' a TCState -> (a -> a) -> m ()+modifyTCLens l = modifyTC . over l++-- | Modify a part of the state monadically.+modifyTCLensM :: MonadTCState m => Lens' a TCState -> (a -> m a) -> m ()+modifyTCLensM l f = putTC =<< l f =<< getTC++-- | Modify the lens-indicated part of the 'TCState' locally.+locallyTCState :: MonadTCState m => Lens' a TCState -> (a -> a) -> m b -> m b+locallyTCState l f k = do+  old <- useTC l+  modifyTCLens l f+  x <- k+  setTCLens l old+  return x+++---------------------------------------------------------------------------+-- * Type checking monad transformer+---------------------------------------------------------------------------++-- | The type checking monad transformer.+-- Adds readonly 'TCEnv' and mutable 'TCState'.+newtype TCMT m a = TCM { unTCM :: IORef TCState -> TCEnv -> m a }++instance MonadIO m => MonadTCEnv (TCMT m) where+  askTC             = TCM $ \ _ e -> return e+  localTC f (TCM m) = TCM $ \ s e -> m s (f e)++instance MonadIO m => MonadTCState (TCMT m) where+  getTC   = TCM $ \ r _e -> liftIO (readIORef r)+  putTC s = TCM $ \ r _e -> liftIO (writeIORef r s)++type TCM = TCMT IO++class ( Applicative tcm, MonadIO tcm+      , MonadTCEnv tcm+      , MonadTCState tcm+      , HasOptions tcm+      ) => MonadTCM tcm where+    liftTCM :: TCM a -> tcm a++instance MonadIO m => ReadTCState (TCMT m) where+  getTCState = getTC+  withTCState f m = __IMPOSSIBLE__ -- should probably not be used++instance MonadError TCErr (TCMT IO) where+  throwError = liftIO . E.throwIO+  catchError m h = TCM $ \r e -> do+    oldState <- liftIO (readIORef r)+    unTCM m r e `E.catch` \err -> do+      -- Reset the state, but do not forget changes to the persistent+      -- component. Not for pattern violations.+      case err of+        PatternErr -> return ()+        _          ->+          liftIO $ do+            newState <- readIORef r+            writeIORef r $ oldState { stPersistentState = stPersistentState newState }+      unTCM (h err) r e++instance MonadIO m => MonadReduce (TCMT m) where+  liftReduce = liftTCM . runReduceM++instance (IsString a, MonadIO m) => IsString (TCMT m a) where+  fromString s = return (fromString s)++-- | Interaction monad.++type IM = TCMT (Haskeline.InputT IO)++runIM :: IM a -> TCM a+runIM = mapTCMT (Haskeline.runInputT Haskeline.defaultSettings)++instance MonadError TCErr IM where+  throwError = liftIO . E.throwIO+  catchError m h = mapTCMT liftIO $ runIM m `catchError` (runIM . h)++-- | Preserve the state of the failing computation.+catchError_ :: TCM a -> (TCErr -> TCM a) -> TCM a+catchError_ m h = TCM $ \r e ->+  unTCM m r e+  `E.catch` \err -> unTCM (h err) r e++-- | Execute a finalizer even when an exception is thrown.+--   Does not catch any errors.+--   In case both the regular computation and the finalizer+--   throw an exception, the one of the finalizer is propagated.+finally_ :: TCM a -> TCM b -> TCM a+finally_ m f = do+    x <- m `catchError_` \ err -> f >> throwError err+    _ <- f+    return x++{-# SPECIALIZE INLINE mapTCMT :: (forall a. IO a -> IO a) -> TCM a -> TCM a #-}+mapTCMT :: (forall a. m a -> n a) -> TCMT m a -> TCMT n a+mapTCMT f (TCM m) = TCM $ \s e -> f (m s e)++pureTCM :: MonadIO m => (TCState -> TCEnv -> a) -> TCMT m a+pureTCM f = TCM $ \r e -> do+  s <- liftIO $ readIORef r+  return (f s e)++{-# RULES "liftTCM/id" liftTCM = id #-}+instance MonadIO m => MonadTCM (TCMT m) where+    liftTCM = mapTCMT liftIO++instance MonadTCM tcm => MonadTCM (MaybeT tcm) where+  liftTCM = lift . liftTCM++instance MonadTCM tcm => MonadTCM (ListT tcm) where+  liftTCM = lift . liftTCM++instance MonadTCM tcm => MonadTCM (ExceptT err tcm) where+  liftTCM = lift . liftTCM++instance (Monoid w, MonadTCM tcm) => MonadTCM (WriterT w tcm) where+  liftTCM = lift . liftTCM++instance (MonadTCM tcm) => MonadTCM (StateT s tcm) where+  liftTCM = lift . liftTCM++instance (MonadTCM tcm) => MonadTCM (ReaderT r tcm) where+  liftTCM = lift . liftTCM++instance MonadTrans TCMT where+    lift m = TCM $ \_ _ -> m++-- We want a special monad implementation of fail.+instance MonadIO m => Monad (TCMT m) where+    return = pure+    (>>=)  = bindTCMT+    (>>)   = (*>)+#if __GLASGOW_HASKELL__ == 710+    fail   = internalError+#else+    fail   = Fail.fail++instance MonadIO m => Fail.MonadFail (TCMT m) where+  fail = internalError+#endif++-- One goal of the definitions and pragmas below is to inline the+-- monad operations as much as possible. This doesn't seem to have a+-- large effect on the performance of the normal executable, but (at+-- least on one machine/configuration) it has a massive effect on the+-- performance of the profiling executable [1], and reduces the time+-- attributed to bind from over 90% to about 25%.+--+-- [1] When compiled with -auto-all and run with -p: roughly 750%+-- faster for one example.++returnTCMT :: MonadIO m => a -> TCMT m a+returnTCMT = \x -> TCM $ \_ _ -> return x+{-# INLINE returnTCMT #-}++bindTCMT :: MonadIO m => TCMT m a -> (a -> TCMT m b) -> TCMT m b+bindTCMT = \(TCM m) k -> TCM $ \r e -> m r e >>= \x -> unTCM (k x) r e+{-# INLINE bindTCMT #-}++thenTCMT :: MonadIO m => TCMT m a -> TCMT m b -> TCMT m b+thenTCMT = \(TCM m1) (TCM m2) -> TCM $ \r e -> m1 r e >> m2 r e+{-# INLINE thenTCMT #-}++instance MonadIO m => Functor (TCMT m) where+  fmap = fmapTCMT++fmapTCMT :: MonadIO m => (a -> b) -> TCMT m a -> TCMT m b+fmapTCMT = \f (TCM m) -> TCM $ \r e -> liftM f (m r e)+{-# INLINE fmapTCMT #-}++instance MonadIO m => Applicative (TCMT m) where+  pure  = returnTCMT+  (<*>) = apTCMT++apTCMT :: MonadIO m => TCMT m (a -> b) -> TCMT m a -> TCMT m b+apTCMT = \(TCM mf) (TCM m) -> TCM $ \r e -> ap (mf r e) (m r e)+{-# INLINE apTCMT #-}++instance MonadIO m => MonadIO (TCMT m) where+  liftIO m = TCM $ \s e -> do+               let r = envRange e+               liftIO $ wrap s r $ do+                 x <- m+                 x `seq` return x+    where+      wrap s r m = E.catch m $ \e -> do+        s <- readIORef s+        E.throwIO $ IOException s r e++-- | We store benchmark statistics in an IORef.+--   This enables benchmarking pure computation, see+--   "Agda.Benchmarking".+instance MonadBench Phase TCM where+  getBenchmark = liftIO $ getBenchmark+  putBenchmark = liftIO . putBenchmark+  finally = finally_++instance Null (TCM Doc) where+  empty = return empty+  null = __IMPOSSIBLE__++-- | Short-cutting disjunction forms a monoid.+instance Semigroup (TCM Any) where+  ma <> mb = Any <$> do (getAny <$> ma) `or2M` (getAny <$> mb)++instance Monoid (TCM Any) where+  mempty = return mempty+  mappend = (<>)++patternViolation :: TCM a+patternViolation = throwError PatternErr++internalError :: MonadTCM tcm => String -> tcm a+internalError s = typeError $ InternalError s++genericError :: MonadTCM tcm => String -> tcm a+genericError = typeError . GenericError++{-# SPECIALIZE genericDocError :: Doc -> TCM a #-}+genericDocError :: MonadTCM tcm => Doc -> tcm a+genericDocError = typeError . GenericDocError++{-# SPECIALIZE typeError :: TypeError -> TCM a #-}+typeError :: MonadTCM tcm => TypeError -> tcm a+typeError err = liftTCM $ throwError =<< typeError_ err++{-# SPECIALIZE typeError_ :: TypeError -> TCM TCErr #-}+typeError_ :: MonadTCM tcm => TypeError -> tcm TCErr+typeError_ err = liftTCM $ TypeError <$> getTC <*> buildClosure err++-- | Running the type checking monad (most general form).+{-# SPECIALIZE runTCM :: TCEnv -> TCState -> TCM a -> IO (a, TCState) #-}+runTCM :: MonadIO m => TCEnv -> TCState -> TCMT m a -> m (a, TCState)+runTCM e s m = do+  r <- liftIO $ newIORef s+  a <- unTCM m r e+  s <- liftIO $ readIORef r+  return (a, s)++-- | Running the type checking monad on toplevel (with initial state).+runTCMTop :: TCM a -> IO (Either TCErr a)+runTCMTop m = (Right <$> runTCMTop' m) `E.catch` (return . Left)++runTCMTop' :: MonadIO m => TCMT m a -> m a+runTCMTop' m = do+  r <- liftIO $ newIORef initState+  unTCM m r initEnv++-- | 'runSafeTCM' runs a safe 'TCM' action (a 'TCM' action which cannot fail)+--   in the initial environment.++runSafeTCM :: TCM a -> TCState -> IO (a, TCState)+runSafeTCM m st = runTCM initEnv st m `E.catch` (\ (e :: TCErr) -> __IMPOSSIBLE__)+-- runSafeTCM m st = either__IMPOSSIBLE__ return <$> do+--     -- Errors must be impossible.+--     runTCM $ do+--         putTC st+--         a <- m+--         st <- getTC+--         return (a, st)++-- | Runs the given computation in a separate thread, with /a copy/ of+-- the current state and environment.+--+-- Note that Agda sometimes uses actual, mutable state. If the+-- computation given to @forkTCM@ tries to /modify/ this state, then+-- bad things can happen, because accesses are not mutually exclusive.+-- The @forkTCM@ function has been added mainly to allow the thread to+-- /read/ (a snapshot of) the current state in a convenient way.+--+-- Note also that exceptions which are raised in the thread are not+-- propagated to the parent, so the thread should not do anything+-- important.++forkTCM :: TCM a -> TCM ()+forkTCM m = do+  s <- getTC+  e <- askTC+  liftIO $ void $ C.forkIO $ void $ runTCM e s m+++-- | Base name for extended lambda patterns+extendedLambdaName :: String+extendedLambdaName = ".extendedlambda"++-- | Check whether we have an definition from an extended lambda.+isExtendedLambdaName :: A.QName -> Bool+isExtendedLambdaName = (extendedLambdaName `List.isPrefixOf`) . prettyShow . nameConcrete . qnameName++-- | Name of absurdLambda definitions.+absurdLambdaName :: String+absurdLambdaName = ".absurdlambda"++-- | Check whether we have an definition from an absurd lambda.+isAbsurdLambdaName :: QName -> Bool+isAbsurdLambdaName = (absurdLambdaName ==) . prettyShow . qnameName++-- | Base name for generalized variable projections+generalizedFieldName :: String+generalizedFieldName = ".generalizedField-"++-- | Check whether we have a generalized variable field+getGeneralizedFieldName :: A.QName -> Maybe String+getGeneralizedFieldName q+  | List.isPrefixOf generalizedFieldName strName = Just (drop (length generalizedFieldName) strName)+  | otherwise                                    = Nothing+  where strName = prettyShow $ nameConcrete $ qnameName q++---------------------------------------------------------------------------+-- * KillRange instances+---------------------------------------------------------------------------++instance KillRange Signature where+  killRange (Sig secs defs rews) = killRange2 Sig secs defs rews++instance KillRange Sections where+  killRange = fmap killRange++instance KillRange Definitions where+  killRange = fmap killRange++instance KillRange RewriteRuleMap where+  killRange = fmap killRange++instance KillRange Section where+  killRange (Section tel) = killRange1 Section tel++instance KillRange Definition where+  killRange (Defn ai name t pols occs gens gpars displ mut compiled inst copy ma nc inj def) =+    killRange16 Defn ai name t pols occs gens gpars displ mut compiled inst copy ma nc inj def+    -- TODO clarify: Keep the range in the defName field?++instance KillRange NumGeneralizableArgs where+  killRange = id++instance KillRange NLPat where+  killRange (PVar x y) = killRange2 PVar x y+  killRange (PWild)    = PWild+  killRange (PDef x y) = killRange2 PDef x y+  killRange (PLam x y) = killRange2 PLam x y+  killRange (PPi x y)  = killRange2 PPi x y+  killRange (PBoundVar x y) = killRange2 PBoundVar x y+  killRange (PTerm x)  = killRange1 PTerm x++instance KillRange NLPType where+  killRange (NLPType s a) = killRange2 NLPType s a++instance KillRange RewriteRule where+  killRange (RewriteRule q gamma f es rhs t) =+    killRange6 RewriteRule q gamma f es rhs t++instance KillRange CompiledRepresentation where+  killRange = id+++instance KillRange EtaEquality where+  killRange = id++instance KillRange System where+  killRange (System tel sys) = System (killRange tel) (killRange sys)++instance KillRange ExtLamInfo where+  killRange (ExtLamInfo m sys) = killRange2 ExtLamInfo m sys++instance KillRange FunctionFlag where+  killRange = id++instance KillRange CompKit where+  killRange = id++instance KillRange Defn where+  killRange def =+    case def of+      Axiom -> Axiom+      DataOrRecSig n -> DataOrRecSig n+      GeneralizableVar -> GeneralizableVar+      AbstractDefn{} -> __IMPOSSIBLE__ -- only returned by 'getConstInfo'!+      Function cls comp ct tt covering inv mut isAbs delayed proj flags term extlam with copat ->+        killRange15 Function cls comp ct tt covering inv mut isAbs delayed proj flags term extlam with copat+      Datatype a b c d e f g h i     -> killRange8 Datatype a b c d e f g h i+      Record a b c d e f g h i j k   -> killRange11 Record a b c d e f g h i j k+      Constructor a b c d e f g h i  -> killRange9 Constructor a b c d e f g h i+      Primitive a b c d e            -> killRange5 Primitive a b c d e++instance KillRange MutualId where+  killRange = id++instance KillRange c => KillRange (FunctionInverse' c) where+  killRange NotInjective = NotInjective+  killRange (Inverse m)  = Inverse $ killRangeMap m++instance KillRange TermHead where+  killRange SortHead     = SortHead+  killRange PiHead       = PiHead+  killRange (ConsHead q) = ConsHead $ killRange q+  killRange h@VarHead{}  = h+  killRange UnknownHead  = UnknownHead++instance KillRange Projection where+  killRange (Projection a b c d e) = killRange5 Projection a b c d e++instance KillRange ProjLams where+  killRange = id++instance KillRange a => KillRange (Open a) where+  killRange = fmap killRange++instance KillRange DisplayForm where+  killRange (Display n es dt) = killRange3 Display n es dt++instance KillRange Polarity where+  killRange = id++instance KillRange IsForced where+  killRange = id++instance KillRange DoGeneralize where+  killRange = id++instance KillRange DisplayTerm where+  killRange dt =+    case dt of+      DWithApp dt dts es -> killRange3 DWithApp dt dts es+      DCon q ci dts     -> killRange3 DCon q ci dts+      DDef q dts        -> killRange2 DDef q dts+      DDot v            -> killRange1 DDot v+      DTerm v           -> killRange1 DTerm v++instance KillRange a => KillRange (Closure a) where+  killRange = id
src/full/Agda/TypeChecking/Monad/Builtin.hs view
@@ -1,21 +1,30 @@ {-# LANGUAGE CPP #-} -module Agda.TypeChecking.Monad.Builtin where+module Agda.TypeChecking.Monad.Builtin+  ( module Agda.TypeChecking.Monad.Builtin+  , module Agda.Syntax.Builtin  -- The names are defined here.+  ) where +#if __GLASGOW_HASKELL__ >= 800+import qualified Control.Monad.Fail as Fail+#endif+ import Control.Monad.State import Control.Monad.Trans.Maybe  import qualified Data.Map as Map+import Data.Function ( on )  import Agda.Syntax.Common import Agda.Syntax.Position import Agda.Syntax.Literal+import Agda.Syntax.Builtin import Agda.Syntax.Internal as I import Agda.TypeChecking.Monad.Base -- import Agda.TypeChecking.Functions  -- LEADS TO IMPORT CYCLE import Agda.TypeChecking.Substitute -import Agda.Utils.Except ( MonadError(catchError) )+import Agda.Utils.Except import Agda.Utils.Lens import Agda.Utils.Monad import Agda.Utils.Maybe@@ -24,12 +33,25 @@ #include "undefined.h" import Agda.Utils.Impossible -class (Functor m, Applicative m, Monad m) => HasBuiltins m where+class ( Functor m+      , Applicative m+#if __GLASGOW_HASKELL__ == 710+      , Monad m+#else+      , Fail.MonadFail m+#endif+      ) => HasBuiltins m where   getBuiltinThing :: String -> m (Maybe (Builtin PrimFun))  instance HasBuiltins m => HasBuiltins (MaybeT m) where   getBuiltinThing b = lift $ getBuiltinThing b +instance HasBuiltins m => HasBuiltins (ExceptT e m) where+  getBuiltinThing b = lift $ getBuiltinThing b++instance HasBuiltins m => HasBuiltins (StateT s m) where+  getBuiltinThing b = lift $ getBuiltinThing b+ litType :: Literal -> TCM Type litType l = case l of   LitNat _ n    -> do@@ -46,24 +68,27 @@     el t = El (mkType 0) t  instance MonadIO m => HasBuiltins (TCMT m) where-  getBuiltinThing b = liftM2 mplus (Map.lookup b <$> use stLocalBuiltins)-                      (Map.lookup b <$> use stImportedBuiltins)+  getBuiltinThing b = liftM2 mplus (Map.lookup b <$> useTC stLocalBuiltins)+                      (Map.lookup b <$> useTC stImportedBuiltins)  setBuiltinThings :: BuiltinThings PrimFun -> TCM ()-setBuiltinThings b = stLocalBuiltins .= b+setBuiltinThings b = stLocalBuiltins `setTCLens` b  bindBuiltinName :: String -> Term -> TCM () bindBuiltinName b x = do-        builtin <- getBuiltinThing b-        case builtin of-            Just (Builtin y) -> typeError $ DuplicateBuiltinBinding b y x-            Just (Prim _)    -> typeError $ NoSuchBuiltinName b-            Nothing          -> stLocalBuiltins %= Map.insert b (Builtin x)+  builtin <- getBuiltinThing b+  case builtin of+    Just (Builtin y) -> typeError $ DuplicateBuiltinBinding b y x+    Just (Prim _)    -> typeError $ NoSuchBuiltinName b+    Nothing          -> stLocalBuiltins `modifyTCLens` Map.insert b (Builtin x)  bindPrimitive :: String -> PrimFun -> TCM () bindPrimitive b pf = do-  builtin <- use stLocalBuiltins-  setBuiltinThings $ Map.insert b (Prim pf) builtin+  builtin <- getBuiltinThing b+  case builtin of+    Just (Builtin _) -> typeError $ NoSuchPrimitiveFunction b+    Just (Prim x)    -> typeError $ (DuplicatePrimitiveBinding b `on` primFunName) x pf+    Nothing          -> stLocalBuiltins `modifyTCLens` Map.insert b (Prim pf)  getBuiltin :: String -> TCM Term getBuiltin x =@@ -86,6 +111,27 @@ getPrimitive x =   fromMaybeM (typeError $ NoSuchPrimitiveFunction x) $ getPrimitive' x +getPrimitiveTerm :: String -> TCM Term+getPrimitiveTerm x = (`Def` []) <$> primFunName <$> getPrimitive x++getPrimitiveTerm' :: HasBuiltins m => String -> m (Maybe Term)+getPrimitiveTerm' x = fmap (`Def` []) <$> getPrimitiveName' x++getTerm' :: HasBuiltins m => String -> m (Maybe Term)+getTerm' x = mplus <$> getBuiltin' x <*> getPrimitiveTerm' x++getName' :: HasBuiltins m => String -> m (Maybe QName)+getName' x = mplus <$> getBuiltinName' x <*> getPrimitiveName' x++-- | @getTerm use name@ looks up @name@ as a primitive or builtin, and+-- throws an error otherwise.+-- The @use@ argument describes how the name is used for the sake of+-- the error message.+getTerm :: (HasBuiltins m) => String -> String -> m Term+getTerm use name = flip fromMaybeM (getTerm' name) $+  return $! (throwImpossible $ ImpMissingDefinitions [name] use)++ -- | Rewrite a literal to constructor form if possible. constructorForm :: Term -> TCM Term constructorForm v = constructorForm' primZero primSuc v@@ -105,7 +151,17 @@  primInteger, primIntegerPos, primIntegerNegSuc,     primFloat, primChar, primString, primUnit, primUnitUnit, primBool, primTrue, primFalse,+    primSigma,     primList, primNil, primCons, primIO, primNat, primSuc, primZero,+    primPath, primPathP, primInterval, primIZero, primIOne, primPartial, primPartialP,+    primIMin, primIMax, primINeg,+    primIsOne, primItIsOne, primIsOne1, primIsOne2, primIsOneEmpty,+    primSub, primSubIn, primSubOut,+    primTrans, primHComp,+    primId, primConId, primIdElim,+    primEquiv, primEquivFun, primEquivProof, primPathToEquiv,+    primGlue, prim_glue, prim_unglue,+    primFaceForall,     primNatPlus, primNatMinus, primNatTimes, primNatDivSucAux, primNatModSucAux,     primNatEquality, primNatLess,     -- Machine words@@ -115,6 +171,7 @@     primEquality, primRefl,     primRewrite, -- Name of rewrite relation     primLevel, primLevelZero, primLevelSuc, primLevelMax,+    primSetOmega,     primFromNat, primFromNeg, primFromString,     -- builtins for reflection:     primQName, primArgInfo, primArgArgInfo, primArg, primArgArg, primAbs, primAbsAbs, primAgdaTerm, primAgdaTermVar,@@ -143,7 +200,9 @@     primAgdaTCMGetType, primAgdaTCMGetDefinition,     primAgdaTCMQuoteTerm, primAgdaTCMUnquoteTerm,     primAgdaTCMBlockOnMeta, primAgdaTCMCommit, primAgdaTCMIsMacro,-    primAgdaTCMWithNormalisation, primAgdaTCMDebugPrint+    primAgdaTCMWithNormalisation, primAgdaTCMDebugPrint,+    primAgdaTCMNoConstraints,+    primAgdaTCMRunSpeculative     :: TCM Term  primInteger      = getBuiltin builtinInteger@@ -153,6 +212,7 @@ primChar         = getBuiltin builtinChar primString       = getBuiltin builtinString primBool         = getBuiltin builtinBool+primSigma        = getBuiltin builtinSigma primUnit         = getBuiltin builtinUnit primUnitUnit     = getBuiltin builtinUnitUnit primTrue         = getBuiltin builtinTrue@@ -161,6 +221,37 @@ primNil          = getBuiltin builtinNil primCons         = getBuiltin builtinCons primIO           = getBuiltin builtinIO+primId           = getBuiltin builtinId+primConId        = getBuiltin builtinConId+primIdElim       = getPrimitiveTerm builtinIdElim+primPath         = getBuiltin builtinPath+primPathP        = getBuiltin builtinPathP+primInterval     = getBuiltin builtinInterval+primIZero        = getBuiltin builtinIZero+primIOne         = getBuiltin builtinIOne+primIMin         = getPrimitiveTerm builtinIMin+primIMax         = getPrimitiveTerm builtinIMax+primINeg         = getPrimitiveTerm builtinINeg+primPartial      = getPrimitiveTerm "primPartial"+primPartialP     = getPrimitiveTerm "primPartialP"+primIsOne        = getBuiltin builtinIsOne+primItIsOne      = getBuiltin builtinItIsOne+primTrans        = getPrimitiveTerm builtinTrans+primHComp        = getPrimitiveTerm builtinHComp+primEquiv        = getBuiltin builtinEquiv+primEquivFun     = getBuiltin builtinEquivFun+primEquivProof   = getBuiltin builtinEquivProof+primPathToEquiv  = getBuiltin builtinPathToEquiv+primGlue         = getPrimitiveTerm builtinGlue+prim_glue        = getPrimitiveTerm builtin_glue+prim_unglue      = getPrimitiveTerm builtin_unglue+primFaceForall   = getPrimitiveTerm builtinFaceForall+primIsOne1       = getBuiltin builtinIsOne1+primIsOne2       = getBuiltin builtinIsOne2+primIsOneEmpty   = getBuiltin builtinIsOneEmpty+primSub          = getBuiltin builtinSub+primSubIn        = getBuiltin builtinSubIn+primSubOut       = getPrimitiveTerm builtinSubOut primNat          = getBuiltin builtinNat primSuc          = getBuiltin builtinSuc primZero         = getBuiltin builtinZero@@ -188,6 +279,7 @@ primLevelZero    = getBuiltin builtinLevelZero primLevelSuc     = getBuiltin builtinLevelSuc primLevelMax     = getBuiltin builtinLevelMax+primSetOmega     = getBuiltin builtinSetOmega primFromNat      = getBuiltin builtinFromNat primFromNeg      = getBuiltin builtinFromNeg primFromString   = getBuiltin builtinFromString@@ -285,215 +377,8 @@ primAgdaTCMIsMacro            = getBuiltin builtinAgdaTCMIsMacro primAgdaTCMWithNormalisation  = getBuiltin builtinAgdaTCMWithNormalisation primAgdaTCMDebugPrint         = getBuiltin builtinAgdaTCMDebugPrint--builtinNat, builtinSuc, builtinZero, builtinNatPlus, builtinNatMinus,-  builtinNatTimes, builtinNatDivSucAux, builtinNatModSucAux, builtinNatEquals,-  builtinNatLess, builtinInteger, builtinIntegerPos, builtinIntegerNegSuc,-  builtinWord64,-  builtinFloat, builtinChar, builtinString, builtinUnit, builtinUnitUnit,-  builtinBool, builtinTrue, builtinFalse,-  builtinList, builtinNil, builtinCons, builtinIO,-  builtinSizeUniv, builtinSize, builtinSizeLt,-  builtinSizeSuc, builtinSizeInf, builtinSizeMax,-  builtinInf, builtinSharp, builtinFlat,-  builtinEquality, builtinRefl, builtinRewrite, builtinLevelMax,-  builtinLevel, builtinLevelZero, builtinLevelSuc,-  builtinFromNat, builtinFromNeg, builtinFromString,-  builtinQName, builtinAgdaSort, builtinAgdaSortSet, builtinAgdaSortLit,-  builtinAgdaSortUnsupported,-  builtinHiding, builtinHidden, builtinInstance, builtinVisible,-  builtinRelevance, builtinRelevant, builtinIrrelevant, builtinArg,-  builtinAssoc, builtinAssocLeft, builtinAssocRight, builtinAssocNon,-  builtinPrecedence, builtinPrecRelated, builtinPrecUnrelated,-  builtinFixity, builtinFixityFixity,-  builtinArgInfo, builtinArgArgInfo, builtinArgArg,-  builtinAbs, builtinAbsAbs, builtinAgdaTerm,-  builtinAgdaTermVar, builtinAgdaTermLam, builtinAgdaTermExtLam,-  builtinAgdaTermDef, builtinAgdaTermCon, builtinAgdaTermPi,-  builtinAgdaTermSort, builtinAgdaTermLit, builtinAgdaTermUnsupported, builtinAgdaTermMeta,-  builtinAgdaErrorPart, builtinAgdaErrorPartString, builtinAgdaErrorPartTerm, builtinAgdaErrorPartName,-  builtinAgdaLiteral, builtinAgdaLitNat, builtinAgdaLitWord64, builtinAgdaLitFloat,-  builtinAgdaLitChar, builtinAgdaLitString, builtinAgdaLitQName, builtinAgdaLitMeta,-  builtinAgdaClause, builtinAgdaClauseClause, builtinAgdaClauseAbsurd, builtinAgdaPattern,-  builtinAgdaPatVar, builtinAgdaPatCon, builtinAgdaPatDot, builtinAgdaPatLit,-  builtinAgdaPatProj, builtinAgdaPatAbsurd,-  builtinAgdaDefinitionFunDef,-  builtinAgdaDefinitionDataDef, builtinAgdaDefinitionRecordDef,-  builtinAgdaDefinitionDataConstructor, builtinAgdaDefinitionPostulate,-  builtinAgdaDefinitionPrimitive, builtinAgdaDefinition,-  builtinAgdaMeta,-  builtinAgdaTCM, builtinAgdaTCMReturn, builtinAgdaTCMBind, builtinAgdaTCMUnify,-  builtinAgdaTCMTypeError, builtinAgdaTCMInferType,-  builtinAgdaTCMCheckType, builtinAgdaTCMNormalise, builtinAgdaTCMReduce,-  builtinAgdaTCMCatchError,-  builtinAgdaTCMGetContext, builtinAgdaTCMExtendContext, builtinAgdaTCMInContext,-  builtinAgdaTCMFreshName, builtinAgdaTCMDeclareDef, builtinAgdaTCMDeclarePostulate, builtinAgdaTCMDefineFun,-  builtinAgdaTCMGetType, builtinAgdaTCMGetDefinition,-  builtinAgdaTCMQuoteTerm, builtinAgdaTCMUnquoteTerm,-  builtinAgdaTCMBlockOnMeta, builtinAgdaTCMCommit, builtinAgdaTCMIsMacro,-  builtinAgdaTCMWithNormalisation, builtinAgdaTCMDebugPrint-  :: String--builtinNat                           = "NATURAL"-builtinSuc                           = "SUC"-builtinZero                          = "ZERO"-builtinNatPlus                       = "NATPLUS"-builtinNatMinus                      = "NATMINUS"-builtinNatTimes                      = "NATTIMES"-builtinNatDivSucAux                  = "NATDIVSUCAUX"-builtinNatModSucAux                  = "NATMODSUCAUX"-builtinNatEquals                     = "NATEQUALS"-builtinNatLess                       = "NATLESS"-builtinWord64                        = "WORD64"-builtinInteger                       = "INTEGER"-builtinIntegerPos                    = "INTEGERPOS"-builtinIntegerNegSuc                 = "INTEGERNEGSUC"-builtinFloat                         = "FLOAT"-builtinChar                          = "CHAR"-builtinString                        = "STRING"-builtinUnit                          = "UNIT"-builtinUnitUnit                      = "UNITUNIT"-builtinBool                          = "BOOL"-builtinTrue                          = "TRUE"-builtinFalse                         = "FALSE"-builtinList                          = "LIST"-builtinNil                           = "NIL"-builtinCons                          = "CONS"-builtinIO                            = "IO"-builtinSizeUniv                      = "SIZEUNIV"-builtinSize                          = "SIZE"-builtinSizeLt                        = "SIZELT"-builtinSizeSuc                       = "SIZESUC"-builtinSizeInf                       = "SIZEINF"-builtinSizeMax                       = "SIZEMAX"-builtinInf                           = "INFINITY"-builtinSharp                         = "SHARP"-builtinFlat                          = "FLAT"-builtinEquality                      = "EQUALITY"-builtinRefl                          = "REFL"-builtinRewrite                       = "REWRITE"-builtinLevelMax                      = "LEVELMAX"-builtinLevel                         = "LEVEL"-builtinLevelZero                     = "LEVELZERO"-builtinLevelSuc                      = "LEVELSUC"-builtinFromNat                       = "FROMNAT"-builtinFromNeg                       = "FROMNEG"-builtinFromString                    = "FROMSTRING"-builtinQName                         = "QNAME"-builtinAgdaSort                      = "AGDASORT"-builtinAgdaSortSet                   = "AGDASORTSET"-builtinAgdaSortLit                   = "AGDASORTLIT"-builtinAgdaSortUnsupported           = "AGDASORTUNSUPPORTED"-builtinHiding                        = "HIDING"-builtinHidden                        = "HIDDEN"-builtinInstance                      = "INSTANCE"-builtinVisible                       = "VISIBLE"-builtinRelevance                     = "RELEVANCE"-builtinRelevant                      = "RELEVANT"-builtinIrrelevant                    = "IRRELEVANT"-builtinAssoc                         = "ASSOC"-builtinAssocLeft                     = "ASSOCLEFT"-builtinAssocRight                    = "ASSOCRIGHT"-builtinAssocNon                      = "ASSOCNON"-builtinPrecedence                    = "PRECEDENCE"-builtinPrecRelated                   = "PRECRELATED"-builtinPrecUnrelated                 = "PRECUNRELATED"-builtinFixity                        = "FIXITY"-builtinFixityFixity                  = "FIXITYFIXITY"-builtinArg                           = "ARG"-builtinArgInfo                       = "ARGINFO"-builtinArgArgInfo                    = "ARGARGINFO"-builtinArgArg                        = "ARGARG"-builtinAbs                           = "ABS"-builtinAbsAbs                        = "ABSABS"-builtinAgdaTerm                      = "AGDATERM"-builtinAgdaTermVar                   = "AGDATERMVAR"-builtinAgdaTermLam                   = "AGDATERMLAM"-builtinAgdaTermExtLam                = "AGDATERMEXTLAM"-builtinAgdaTermDef                   = "AGDATERMDEF"-builtinAgdaTermCon                   = "AGDATERMCON"-builtinAgdaTermPi                    = "AGDATERMPI"-builtinAgdaTermSort                  = "AGDATERMSORT"-builtinAgdaTermLit                   = "AGDATERMLIT"-builtinAgdaTermUnsupported           = "AGDATERMUNSUPPORTED"-builtinAgdaTermMeta                  = "AGDATERMMETA"-builtinAgdaErrorPart                 = "AGDAERRORPART"-builtinAgdaErrorPartString           = "AGDAERRORPARTSTRING"-builtinAgdaErrorPartTerm             = "AGDAERRORPARTTERM"-builtinAgdaErrorPartName             = "AGDAERRORPARTNAME"-builtinAgdaLiteral                   = "AGDALITERAL"-builtinAgdaLitNat                    = "AGDALITNAT"-builtinAgdaLitWord64                 = "AGDALITWORD64"-builtinAgdaLitFloat                  = "AGDALITFLOAT"-builtinAgdaLitChar                   = "AGDALITCHAR"-builtinAgdaLitString                 = "AGDALITSTRING"-builtinAgdaLitQName                  = "AGDALITQNAME"-builtinAgdaLitMeta                   = "AGDALITMETA"-builtinAgdaClause                    = "AGDACLAUSE"-builtinAgdaClauseClause              = "AGDACLAUSECLAUSE"-builtinAgdaClauseAbsurd              = "AGDACLAUSEABSURD"-builtinAgdaPattern                   = "AGDAPATTERN"-builtinAgdaPatVar                    = "AGDAPATVAR"-builtinAgdaPatCon                    = "AGDAPATCON"-builtinAgdaPatDot                    = "AGDAPATDOT"-builtinAgdaPatLit                    = "AGDAPATLIT"-builtinAgdaPatProj                   = "AGDAPATPROJ"-builtinAgdaPatAbsurd                 = "AGDAPATABSURD"-builtinAgdaDefinitionFunDef          = "AGDADEFINITIONFUNDEF"-builtinAgdaDefinitionDataDef         = "AGDADEFINITIONDATADEF"-builtinAgdaDefinitionRecordDef       = "AGDADEFINITIONRECORDDEF"-builtinAgdaDefinitionDataConstructor = "AGDADEFINITIONDATACONSTRUCTOR"-builtinAgdaDefinitionPostulate       = "AGDADEFINITIONPOSTULATE"-builtinAgdaDefinitionPrimitive       = "AGDADEFINITIONPRIMITIVE"-builtinAgdaDefinition                = "AGDADEFINITION"-builtinAgdaMeta                      = "AGDAMETA"-builtinAgdaTCM           = "AGDATCM"-builtinAgdaTCMReturn     = "AGDATCMRETURN"-builtinAgdaTCMBind       = "AGDATCMBIND"-builtinAgdaTCMUnify      = "AGDATCMUNIFY"-builtinAgdaTCMTypeError  = "AGDATCMTYPEERROR"-builtinAgdaTCMInferType  = "AGDATCMINFERTYPE"-builtinAgdaTCMCheckType  = "AGDATCMCHECKTYPE"-builtinAgdaTCMNormalise  = "AGDATCMNORMALISE"-builtinAgdaTCMReduce     = "AGDATCMREDUCE"-builtinAgdaTCMCatchError = "AGDATCMCATCHERROR"-builtinAgdaTCMGetContext = "AGDATCMGETCONTEXT"-builtinAgdaTCMExtendContext = "AGDATCMEXTENDCONTEXT"-builtinAgdaTCMInContext     = "AGDATCMINCONTEXT"-builtinAgdaTCMFreshName     = "AGDATCMFRESHNAME"-builtinAgdaTCMDeclareDef    = "AGDATCMDECLAREDEF"-builtinAgdaTCMDeclarePostulate    = "AGDATCMDECLAREPOSTULATE"-builtinAgdaTCMDefineFun     = "AGDATCMDEFINEFUN"-builtinAgdaTCMGetType       = "AGDATCMGETTYPE"-builtinAgdaTCMGetDefinition = "AGDATCMGETDEFINITION"-builtinAgdaTCMBlockOnMeta   = "AGDATCMBLOCKONMETA"-builtinAgdaTCMCommit        = "AGDATCMCOMMIT"-builtinAgdaTCMQuoteTerm     = "AGDATCMQUOTETERM"-builtinAgdaTCMUnquoteTerm   = "AGDATCMUNQUOTETERM"-builtinAgdaTCMIsMacro       = "AGDATCMISMACRO"-builtinAgdaTCMWithNormalisation = "AGDATCMWITHNORMALISATION"-builtinAgdaTCMDebugPrint = "AGDATCMDEBUGPRINT"---- | Builtins that come without a definition in Agda syntax.---   These are giving names to Agda internal concepts which---   cannot be assigned an Agda type.------   An example would be a user-defined name for @Set@.------     {-# BUILTIN TYPE Type #-}------   The type of @Type@ would be @Type : Level → Setω@---   which is not valid Agda.--builtinsNoDef :: [String]-builtinsNoDef =-  [ builtinSizeUniv-  , builtinSize-  , builtinSizeLt-  , builtinSizeSuc-  , builtinSizeInf-  , builtinSizeMax-  ]+primAgdaTCMNoConstraints      = getBuiltin builtinAgdaTCMNoConstraints+primAgdaTCMRunSpeculative     = getBuiltin builtinAgdaTCMRunSpeculative  -- | The coinductive primitives. @@ -519,7 +404,128 @@ coinductionKit :: TCM (Maybe CoinductionKit) coinductionKit = tryMaybe coinductionKit' + ------------------------------------------------------------------------+-- * Path equality+------------------------------------------------------------------------++getPrimName :: Term -> QName+getPrimName ty = do+  let lamV (Lam i b)  = mapFst (getHiding i :) $ lamV (unAbs b)+      lamV (Pi _ b)   = lamV (unEl $ unAbs b)+      lamV v          = ([], v)+  case lamV ty of+            (_, Def path _) -> path+            (_, Con nm _ _)   -> conName nm+            (_, _)          -> __IMPOSSIBLE__++getBuiltinName', getPrimitiveName' :: HasBuiltins m => String -> m (Maybe QName)+getBuiltinName' n = fmap getPrimName <$> getBuiltin' n+getPrimitiveName' n = fmap primFunName <$> getPrimitive' n++isPrimitive :: HasBuiltins m => String -> QName -> m Bool+isPrimitive n q = (Just q ==) <$> getPrimitiveName' n++intervalView' :: HasBuiltins m => m (Term -> IntervalView)+intervalView' = do+  iz <- getBuiltinName' builtinIZero+  io <- getBuiltinName' builtinIOne+  imax <- getPrimitiveName' "primIMax"+  imin <- getPrimitiveName' "primIMin"+  ineg <- getPrimitiveName' "primINeg"+  return $ \ t ->+    case t of+      Def q es ->+        case es of+          [Apply x,Apply y] | Just q == imin -> IMin x y+          [Apply x,Apply y] | Just q == imax -> IMax x y+          [Apply x]         | Just q == ineg -> INeg x+          _                 -> OTerm t+      Con q _ [] | Just (conName q) == iz -> IZero+                 | Just (conName q) == io -> IOne+      _ -> OTerm t++intervalView :: HasBuiltins m => Term -> m IntervalView+intervalView t = do+  f <- intervalView'+  return (f t)++intervalUnview :: HasBuiltins m => IntervalView -> m Term+intervalUnview t = do+  f <- intervalUnview'+  return (f t)++intervalUnview' :: HasBuiltins m => m (IntervalView -> Term)+intervalUnview' = do+  iz <- fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinIZero -- should it be a type error instead?+  io <- fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinIOne+  imin <- (`Def` []) <$> fromMaybe __IMPOSSIBLE__ <$> getPrimitiveName' "primIMin"+  imax <- (`Def` []) <$> fromMaybe __IMPOSSIBLE__ <$> getPrimitiveName' "primIMax"+  ineg <- (`Def` []) <$> fromMaybe __IMPOSSIBLE__ <$> getPrimitiveName' "primINeg"+  return $ \ v -> case v of+             IZero -> iz+             IOne  -> io+             IMin x y -> apply imin [x,y]+             IMax x y -> apply imax [x,y]+             INeg x   -> apply ineg [x]+             OTerm t -> t++------------------------------------------------------------------------+-- * Path equality+------------------------------------------------------------------------++-- | Check whether the type is actually an path (lhs ≡ rhs)+--   and extract lhs, rhs, and their type.+--+--   Precondition: type is reduced.++pathView :: HasBuiltins m => Type -> m PathView+pathView t0 = do+  view <- pathView'+  return $ view t0++pathView' :: HasBuiltins m => m (Type -> PathView)+pathView' = do+ mpath  <- getBuiltinName' builtinPath+ mpathp <- getBuiltinName' builtinPathP+ return $ \ t0@(El s t) ->+  case t of+    Def path' [ Apply level , Apply typ , Apply lhs , Apply rhs ]+      | Just path' == mpath, Just path <- mpathp -> PathType s path level (lam_i <$> typ) lhs rhs+      where lam_i = Lam defaultArgInfo . NoAbs "_"+    Def path' [ Apply level , Apply typ , Apply lhs , Apply rhs ]+      | Just path' == mpathp, Just path <- mpathp -> PathType s path level typ lhs rhs+    _ -> OType t0++-- | Non dependent Path+idViewAsPath :: HasBuiltins m => Type -> m PathView+idViewAsPath t0@(El s t) = do+  mid <- fmap getPrimName <$> getBuiltin' builtinId+  mpath <- fmap getPrimName <$> getBuiltin' builtinPath+  case mid of+   Just path | isJust mpath -> case t of+    Def path' [ Apply level , Apply typ , Apply lhs , Apply rhs ]+      | path' == path -> return $ PathType s (fromJust mpath) level typ lhs rhs+    _ -> return $ OType t0+   _ -> return $ OType t0++boldPathView :: Type -> PathView+boldPathView t0@(El s t) = do+  case t of+    Def path' [ Apply level , Apply typ , Apply lhs , Apply rhs ]+      -> PathType s path' level typ lhs rhs+    _ -> OType t0++-- | Revert the 'PathView'.+--+--   Postcondition: type is reduced.++pathUnview :: PathView -> Type+pathUnview (OType t) = t+pathUnview (PathType s path l t lhs rhs) =+  El s $ Def path $ map Apply [l, t, lhs, rhs]++------------------------------------------------------------------------ -- * Builtin equality ------------------------------------------------------------------------ @@ -567,3 +573,19 @@ equalityUnview (OtherType t) = t equalityUnview (EqualityType s equality l t lhs rhs) =   El s $ Def equality $ map Apply (l ++ [t, lhs, rhs])++-- | Primitives with typechecking constrants.+constrainedPrims :: [String]+constrainedPrims =+  [ builtinConId+  , builtinPOr+  , builtinComp+  , builtinHComp+  , builtinTrans+  , builtin_glue+  ]++getNameOfConstrained :: HasBuiltins m => String -> m (Maybe QName)+getNameOfConstrained s = do+  unless (s `elem` constrainedPrims) __IMPOSSIBLE__+  getName' s
src/full/Agda/TypeChecking/Monad/Caching.hs view
@@ -12,7 +12,7 @@   , activateLoadedFileCache   , cachingStarts   , areWeCaching-  , noCacheForImportedModule+  , withoutCache      -- * Restoring the 'PostScopeState'   , restorePostScopeState@@ -38,25 +38,25 @@ -- | To be called before any write or restore calls. cachingStarts :: TCM () cachingStarts = do-    NameId _ m <- use stFreshNameId-    stFreshNameId .= NameId 1 m-    stAreWeCaching .= True+    NameId _ m <- useTC stFreshNameId+    stFreshNameId `setTCLens` NameId 1 m+    stAreWeCaching `setTCLens` True  areWeCaching :: TCM Bool-areWeCaching = use stAreWeCaching+areWeCaching = useTC stAreWeCaching  -- | Writes a 'TypeCheckAction' to the current log, using the current -- 'PostScopeState' writeToCurrentLog :: TypeCheckAction -> TCM () writeToCurrentLog !d = do   reportSLn "cache" 10 $ "cachePostScopeState"-  !l <- gets stPostScopeState+  !l <- getsTC stPostScopeState   modifyCache $ fmap $ \lfc -> lfc{ lfcCurrent = (d, l) : lfcCurrent lfc}  restorePostScopeState :: PostScopeState -> TCM () restorePostScopeState pss = do   reportSLn "cache" 10 $ "restorePostScopeState"-  modify $ \s ->+  modifyTC $ \s ->     let ipoints = s^.stInteractionPoints         ws = s^.stTCWarnings         pss' = pss{stPostInteractionPoints = stPostInteractionPoints pss `mergeIPMap` ipoints@@ -75,24 +75,22 @@   :: (Maybe LoadedFileCache -> Maybe LoadedFileCache)   -> TCM () modifyCache f = do-  modify $ \s -> let !p = stPersistentState s in s+  modifyTC $ \s -> let !p = stPersistentState s in s     { stPersistentState =                           p { stLoadedFileCache = f (stLoadedFileCache p)}     }  getCache :: TCM (Maybe LoadedFileCache) getCache = do-  gets (stLoadedFileCache . stPersistentState)+  getsTC (stLoadedFileCache . stPersistentState)  putCache :: Maybe LoadedFileCache -> TCM () putCache cs = modifyCache $ const cs --- | The cache should not be used for an imported module, and it--- should be restored after the module has been type-checked. This--- combinator takes care of that.--noCacheForImportedModule :: TCM a -> TCM a-noCacheForImportedModule m =+-- | Runs the action without cache and restores the current cache at+-- the end of it.+withoutCache :: TCM a -> TCM a+withoutCache m =   bracket_ getCache putCache $ do     modifyCache (const Nothing)     m
src/full/Agda/TypeChecking/Monad/Closure.hs view
@@ -10,9 +10,9 @@  enterClosure :: Closure a -> (a -> TCM b) -> TCM b enterClosure (Closure sig env scope cps x) k = do-  isDbg <- view eIsDebugPrinting+  isDbg <- viewTC eIsDebugPrinting   withScope_ scope-    $ locallyState stModuleCheckpoints (const cps)+    $ locallyTCState stModuleCheckpoints (const cps)     $ withEnv env{ envIsDebugPrinting = isDbg }     $ k x 
src/full/Agda/TypeChecking/Monad/Constraints.hs view
@@ -27,13 +27,13 @@ -- | Add all constraints belonging to the given problem to the current problem(s). stealConstraints :: ProblemId -> TCM () stealConstraints pid = do-  current <- asks envActiveProblems+  current <- asksTC envActiveProblems   reportSLn "tc.constr.steal" 50 $ "problem " ++ show (Set.toList current) ++ " is stealing problem " ++ show pid ++ "'s constraints!"   -- Add current to any constraint in pid.   let rename pc@(PConstr pids c) | Set.member pid pids = PConstr (Set.union current pids) c                                  | otherwise           = pc   -- We should never steal from an active problem.-  whenM (Set.member pid <$> asks envActiveProblems) __IMPOSSIBLE__+  whenM (Set.member pid <$> asksTC envActiveProblems) __IMPOSSIBLE__   modifyAwakeConstraints    $ List.map rename   modifySleepingConstraints $ List.map rename @@ -42,7 +42,7 @@  solvingProblems :: Set ProblemId -> TCM a -> TCM a solvingProblems pids m = verboseBracket "tc.constr.solve" 50 ("working on problems " ++ show (Set.toList pids)) $ do-  x <- local (\e -> e { envActiveProblems = pids `Set.union` envActiveProblems e }) m+  x <- localTC (\e -> e { envActiveProblems = pids `Set.union` envActiveProblems e }) m   Fold.forM_ pids $ \ pid -> do     ifNotM (isProblemSolved pid)         (reportSLn "tc.constr.solve" 50 $ "problem " ++ show pid ++ " was not solved.")@@ -56,7 +56,7 @@  isProblemSolved :: ProblemId -> TCM Bool isProblemSolved pid =-  and2M (not . Set.member pid <$> asks envActiveProblems)+  and2M (not . Set.member pid <$> asksTC envActiveProblems)         (all (not . Set.member pid . constraintProblems) <$> getAllConstraints)  getConstraintsForProblem :: ProblemId -> TCM Constraints@@ -64,11 +64,11 @@  -- | Get the awake constraints getAwakeConstraints :: TCM Constraints-getAwakeConstraints = use stAwakeConstraints+getAwakeConstraints = useTC stAwakeConstraints  wakeConstraints :: (ProblemConstraint-> TCM Bool) -> TCM () wakeConstraints wake = do-  c <- use stSleepingConstraints+  c <- useTC stSleepingConstraints   (wakeup, sleepin) <- partitionM wake c   reportSLn "tc.constr.wake" 50 $     "waking up         " ++ show (List.map (Set.toList . constraintProblems) wakeup) ++ "\n" ++@@ -85,7 +85,7 @@  putConstraintsToSleep :: (ProblemConstraint -> Bool) -> TCM () putConstraintsToSleep sleepy = do-  awakeOnes <- use stAwakeConstraints+  awakeOnes <- useTC stAwakeConstraints   let (gotoSleep, stayAwake) = List.partition sleepy awakeOnes   modifySleepingConstraints $ (++ gotoSleep)   modifyAwakeConstraints    $ const stayAwake@@ -101,33 +101,36 @@ --   by events that would normally trigger a wakeup call. holdConstraints :: (ConstraintStatus -> ProblemConstraint -> Bool) -> TCM a -> TCM a holdConstraints p m = do-  (holdAwake, stillAwake)   <- List.partition (p AwakeConstraint)    <$> use stAwakeConstraints-  (holdAsleep, stillAsleep) <- List.partition (p SleepingConstraint) <$> use stSleepingConstraints-  stAwakeConstraints    .= stillAwake-  stSleepingConstraints .= stillAsleep+  (holdAwake, stillAwake)   <- List.partition (p AwakeConstraint)    <$> useTC stAwakeConstraints+  (holdAsleep, stillAsleep) <- List.partition (p SleepingConstraint) <$> useTC stSleepingConstraints+  stAwakeConstraints    `setTCLens` stillAwake+  stSleepingConstraints `setTCLens` stillAsleep   let restore = do-        stAwakeConstraints    %= (holdAwake ++)-        stSleepingConstraints %= (holdAsleep ++)+        stAwakeConstraints    `modifyTCLens` (holdAwake ++)+        stSleepingConstraints `modifyTCLens` (holdAsleep ++)   catchError (m <* restore) (\ err -> restore *> throwError err)  takeAwakeConstraint :: TCM (Maybe ProblemConstraint)-takeAwakeConstraint = do+takeAwakeConstraint = takeAwakeConstraint' (const True)++takeAwakeConstraint' :: (ProblemConstraint -> Bool) -> TCM (Maybe ProblemConstraint)+takeAwakeConstraint' p = do   cs <- getAwakeConstraints-  case cs of-    []     -> return Nothing-    c : cs -> do-      modifyAwakeConstraints $ const cs+  case break p cs of+    (_, [])       -> return Nothing+    (cs0, c : cs) -> do+      modifyAwakeConstraints $ const (cs0 ++ cs)       return $ Just c  getAllConstraints :: TCM Constraints-getAllConstraints = gets $ \s -> s^.stAwakeConstraints ++ s^.stSleepingConstraints+getAllConstraints = getsTC $ \s -> s^.stAwakeConstraints ++ s^.stSleepingConstraints  withConstraint :: (Constraint -> TCM a) -> ProblemConstraint -> TCM a withConstraint f (PConstr pids c) = do   -- We should preserve the problem stack and the isSolvingConstraint flag-  (pids', isSolving) <- asks $ envActiveProblems &&& envSolvingConstraints+  (pids', isSolving) <- asksTC $ envActiveProblems &&& envSolvingConstraints   enterClosure c $ \c ->-    local (\e -> e { envActiveProblems = pids', envSolvingConstraints = isSolving }) $+    localTC (\e -> e { envActiveProblems = pids', envSolvingConstraints = isSolving }) $     solvingProblems pids (f c)  buildProblemConstraint :: Set ProblemId -> Constraint -> TCM ProblemConstraint@@ -137,7 +140,7 @@ buildProblemConstraint_ = buildProblemConstraint Set.empty  buildConstraint :: Constraint -> TCM ProblemConstraint-buildConstraint c = flip buildProblemConstraint c =<< asks envActiveProblems+buildConstraint c = flip buildProblemConstraint c =<< asksTC envActiveProblems  -- | Add new a constraint addConstraint' :: Constraint -> TCM ()@@ -149,25 +152,27 @@ addConstraintTo :: Lens' Constraints TCState -> Constraint -> TCM () addConstraintTo bucket c = do     pc <- build-    stDirty .= True-    bucket %= (pc :)+    stDirty `setTCLens` True+    bucket `modifyTCLens` (pc :)   where     build | isBlocking c = buildConstraint c           | otherwise    = buildProblemConstraint_ c     isBlocking SortCmp{}     = False     isBlocking LevelCmp{}    = False     isBlocking ValueCmp{}    = True+    isBlocking ValueCmpOnFace{} = True     isBlocking ElimCmp{}     = True     isBlocking TypeCmp{}     = True     isBlocking TelCmp{}      = True     isBlocking (Guarded c _) = isBlocking c     isBlocking UnBlock{}     = True-    isBlocking FindInScope{} = False+    isBlocking FindInstance{} = False     isBlocking IsEmpty{}     = True     isBlocking CheckSizeLtSat{} = True     isBlocking CheckFunDef{} = True     isBlocking HasBiggerSort{} = False     isBlocking HasPTSRule{}  = False+    isBlocking UnquoteTactic{} = True  -- | Add already awake constraints addAwakeConstraints :: Constraints -> TCM ()@@ -175,10 +180,10 @@  -- | Start solving constraints nowSolvingConstraints :: TCM a -> TCM a-nowSolvingConstraints = local $ \e -> e { envSolvingConstraints = True }+nowSolvingConstraints = localTC $ \e -> e { envSolvingConstraints = True }  isSolvingConstraints :: TCM Bool-isSolvingConstraints = asks envSolvingConstraints+isSolvingConstraints = asksTC envSolvingConstraints  --------------------------------------------------------------------------- -- * Lenses@@ -191,7 +196,7 @@ mapSleepingConstraints = over stSleepingConstraints  modifyAwakeConstraints  :: (Constraints -> Constraints) -> TCM ()-modifyAwakeConstraints = modify . mapAwakeConstraints+modifyAwakeConstraints = modifyTC . mapAwakeConstraints  modifySleepingConstraints  :: (Constraints -> Constraints) -> TCM ()-modifySleepingConstraints = modify . mapSleepingConstraints+modifySleepingConstraints = modifyTC . mapSleepingConstraints
src/full/Agda/TypeChecking/Monad/Context.hs view
@@ -12,6 +12,7 @@  import Agda.Syntax.Abstract.Name import Agda.Syntax.Common+import Agda.Syntax.Concrete.Name (LensInScope(..)) import Agda.Syntax.Internal import Agda.Syntax.Scope.Monad (getLocalVars, setLocalVars) @@ -38,7 +39,7 @@ -- | Modify a 'Context' in a computation. {-# SPECIALIZE modifyContext :: (Context -> Context) -> TCM a -> TCM a #-} modifyContext :: MonadTCM tcm => (Context -> Context) -> tcm a -> tcm a-modifyContext f = local $ \e -> e { envContext = f $ envContext e }+modifyContext f = localTC $ \e -> e { envContext = f $ envContext e }  -- | Change to top (=empty) context. Resets the checkpoints. {-# SPECIALIZE inTopContext :: TCM a -> TCM a #-}@@ -47,8 +48,8 @@   locals <- liftTCM $ getLocalVars   liftTCM $ setLocalVars []   a <- modifyContext (const [])-        $ locally eCurrentCheckpoint (const 0)-        $ locally eCheckpoints (const $ Map.singleton 0 IdS) cont+        $ locallyTC eCurrentCheckpoint (const 0)+        $ locallyTC eCheckpoints (const $ Map.singleton 0 IdS) cont   liftTCM $ setLocalVars locals   return a @@ -65,7 +66,7 @@  -- | Delete the last @n@ bindings from the context. -----   Doesn't update checkpoints!! Use `updateContext rho (drop n)` instead,+--   Doesn't update checkpoints! Use `updateContext rho (drop n)` instead, --   for an appropriate substitution `rho`. {-# SPECIALIZE escapeContext :: Int -> TCM a -> TCM a #-} escapeContext :: MonadTCM tcm => Int -> tcm a -> tcm a@@ -77,34 +78,34 @@ checkpoint :: (MonadDebug tcm, MonadTCM tcm) => Substitution -> tcm a -> tcm a checkpoint sub k = do   unlessDebugPrinting $ reportSLn "tc.cxt.checkpoint" 105 $ "New checkpoint {"-  old     <- view eCurrentCheckpoint-  oldMods <- use  stModuleCheckpoints+  old     <- viewTC eCurrentCheckpoint+  oldMods <- useTC  stModuleCheckpoints   chkpt <- fresh   unlessDebugPrinting $ verboseS "tc.cxt.checkpoint" 105 $ do     cxt <- getContextTelescope-    cps <- view eCheckpoints+    cps <- viewTC eCheckpoints     let cps' = Map.insert chkpt IdS $ fmap (applySubst sub) cps-        prCps cps = vcat [ pshow c <+> text ": " <+> pretty s | (c, s) <- Map.toList cps ]+        prCps cps = vcat [ pshow c <+> ": " <+> pretty s | (c, s) <- Map.toList cps ]     reportSDoc "tc.cxt.checkpoint" 105 $ return $ nest 2 $ vcat-      [ text "old =" <+> pshow old-      , text "new =" <+> pshow chkpt-      , text "sub =" <+> pretty sub-      , text "cxt =" <+> pretty cxt-      , text "old substs =" <+> prCps cps-      , text "new substs =" <?> prCps cps'+      [ "old =" <+> pshow old+      , "new =" <+> pshow chkpt+      , "sub =" <+> pretty sub+      , "cxt =" <+> pretty cxt+      , "old substs =" <+> prCps cps+      , "new substs =" <?> prCps cps'       ]-  x <- flip local k $ \ env -> env+  x <- flip localTC k $ \ env -> env     { envCurrentCheckpoint = chkpt     , envCheckpoints       = Map.insert chkpt IdS $                               fmap (applySubst sub) (envCheckpoints env)     }-  newMods <- use stModuleCheckpoints+  newMods <- useTC stModuleCheckpoints   -- Set the checkpoint for introduced modules to the old checkpoint when the   -- new one goes out of scope. #2897: This isn't actually sound for modules   -- created under refined parent parameters, but as long as those modules   -- aren't named we shouldn't look at the checkpoint. The right thing to do   -- would be to not store these modules in the checkpoint map, but todo..-  stModuleCheckpoints .= Map.union oldMods (old <$ Map.difference newMods oldMods)+  stModuleCheckpoints `setTCLens` Map.union oldMods (old <$ Map.difference newMods oldMods)   unlessDebugPrinting $ reportSLn "tc.cxt.checkpoint" 105 "}"   return x @@ -114,10 +115,13 @@ updateContext sub f = modifyContext f . checkpoint sub  -- | Get the substitution from the context at a given checkpoint to the current context.-checkpointSubstitution :: MonadReader TCEnv tcm => CheckpointId -> tcm Substitution-checkpointSubstitution chkpt =-  caseMaybeM (view (eCheckpoints . key chkpt)) __IMPOSSIBLE__ return+checkpointSubstitution :: MonadTCEnv tcm => CheckpointId -> tcm Substitution+checkpointSubstitution = maybe __IMPOSSIBLE__ return <=< checkpointSubstitution' +-- | Get the substitution from the context at a given checkpoint to the current context.+checkpointSubstitution' :: MonadTCEnv tcm => CheckpointId -> tcm (Maybe Substitution)+checkpointSubstitution' chkpt = viewTC (eCheckpoints . key chkpt)+ -- | Get substitution @Γ ⊢ ρ : Γm@ where @Γ@ is the current context --   and @Γm@ is the module parameter telescope of module @m@. --@@ -126,7 +130,7 @@ --   This is ok for instance if we are outside module @m@ (in which case we --   have to supply all module parameters to any symbol defined within @m@ we --   want to refer).-getModuleParameterSub :: (MonadReader TCEnv m, ReadTCState m) => ModuleName -> m Substitution+getModuleParameterSub :: (MonadTCEnv m, ReadTCState m) => ModuleName -> m Substitution getModuleParameterSub m = do   mcp <- (^. stModuleCheckpoints . key m) <$> getTCState   maybe (return IdS) checkpointSubstitution mcp@@ -142,31 +146,37 @@ {-# SPECIALIZE addCtx :: Name -> Dom Type -> TCM a -> TCM a #-} addCtx :: (MonadDebug tcm, MonadTCM tcm) => Name -> Dom Type -> tcm a -> tcm a addCtx x a ret = do-  let ce = (x,) <$> a+  q <- viewTC eQuantity+  let ce = (x,) <$> inverseApplyQuantity q a+  when (not $ isNoName x) $ do+    registerForShadowing x+    ys <- getContextNames+    forM_ ys $ \y ->+      when (not (isNoName y) && sameRoot x y) $ tellShadowing x y   updateContext (raiseS 1) (ce :) ret       -- let-bindings keep track of own their context --- | Pick a concrete name that doesn't shadow anything in the given list.-unshadowedName :: [Name] -> Name -> Name-unshadowedName xs x = head $ filter (notTaken $ map nameConcrete xs)-                           $ iterate nextName x   where-    notTaken xs x = isNoName x || nameConcrete x `notElem` xs+    -- add x to the map of possibly shadowed names+    registerForShadowing x = modifyTCLens stShadowingNames $ Map.insert x [] --- | Pick a concrete name that doesn't shadow anything in the context.-unshadowName :: MonadTCM tcm => Name -> tcm Name-unshadowName x = do-  ctx <- map (fst . unDom) <$> getContext-  return $ unshadowedName ctx x+    -- register the fact that x possibly shadows the name y+    tellShadowing x y = modifyTCLens stShadowingNames $ Map.adjust (x:) y +addRecordNameContext :: (MonadDebug m, MonadTCM m) => Dom Type -> m b -> m b+addRecordNameContext dom ret = do+  x <- setNotInScope <$> freshRecordName+  addCtx x dom ret+ -- | Various specializations of @addCtx@. {-# SPECIALIZE addContext :: b -> TCM a -> TCM a #-} class AddContext b where   addContext :: (MonadTCM tcm, MonadDebug tcm) => b -> tcm a -> tcm a   contextSize :: b -> Nat --- | Wrapper to tell 'addContext not to 'unshadowName's. Used when adding a---   user-provided, but already type checked, telescope to the context.+-- | Wrapper to tell 'addContext' not to mark names as+--   'NotInScope'. Used when adding a user-provided, but already type+--   checked, telescope to the context. newtype KeepNames a = KeepNames a  instance {-# OVERLAPPABLE #-} AddContext a => AddContext [a] where@@ -196,9 +206,20 @@     addContext (xs, raise 1 dom)   contextSize (xs, _) = length xs +instance AddContext ([Arg Name], Type) where+  addContext (xs, t) = addContext ((map . fmap) unnamed xs :: [NamedArg Name], t)+  contextSize (xs, _) = length xs++instance AddContext ([NamedArg Name], Type) where+  addContext ([], _)     = id+  addContext (x : xs, t) =+    addContext (namedArg x, t <$ domFromNamedArgName x) .+    addContext (xs, raise 1 t)+  contextSize (xs, _) = length xs+ instance AddContext (String, Dom Type) where   addContext (s, dom) ret = do-    x <- unshadowName =<< freshName_ s+    x <- setNotInScope <$> freshName_ s     addCtx x dom ret   contextSize _ = 1 @@ -209,15 +230,15 @@   contextSize _ = 1  instance AddContext (Dom Type) where-  addContext dom = addContext ("_", dom)+  addContext dom = addContext ("_" :: String, dom)   contextSize _ = 1  instance AddContext Name where-  addContext x = addContext (x, dummyDom)+  addContext x = addContext (x, __DUMMY_DOM__)   contextSize _ = 1  instance {-# OVERLAPPING #-} AddContext String where-  addContext s = addContext (s, dummyDom)+  addContext s = addContext (s, __DUMMY_DOM__)   contextSize _ = 1  instance AddContext (KeepNames Telescope) where@@ -232,11 +253,7 @@     loop (ExtendTel t tel) = underAbstraction' id t tel loop   contextSize = size --- | Context entries without a type have this dummy type.-dummyDom :: Dom Type-dummyDom = defaultDom typeDontCare---- | Go under an abstraction.+-- | Go under an abstraction.  Do not extend context in case of 'NoAbs'. {-# SPECIALIZE underAbstraction :: Subst t a => Dom Type -> Abs a -> (a -> TCM b) -> TCM b #-} underAbstraction :: (Subst t a, MonadTCM tcm, MonadDebug tcm) => Dom Type -> Abs a -> (a -> tcm b) -> tcm b underAbstraction = underAbstraction' id@@ -244,61 +261,79 @@ underAbstraction' :: (Subst t a, MonadTCM tcm, MonadDebug tcm, AddContext (name, Dom Type)) =>                      (String -> name) -> Dom Type -> Abs a -> (a -> tcm b) -> tcm b underAbstraction' _ _ (NoAbs _ v) k = k v-underAbstraction' wrap t a k = addContext (wrap $ realName $ absName a, t) $ k $ absBody a+underAbstraction' wrap t a k = underAbstractionAbs' wrap t a k++-- | Go under an abstraction, treating 'NoAbs' as 'Abs'.+underAbstractionAbs :: (Subst t a, MonadTCM tcm, MonadDebug tcm) => Dom Type -> Abs a -> (a -> tcm b) -> tcm b+underAbstractionAbs = underAbstractionAbs' id++underAbstractionAbs'+  :: (Subst t a, MonadTCM tcm, MonadDebug tcm, AddContext (name, Dom Type))+  => (String -> name) -> Dom Type -> Abs a -> (a -> tcm b) -> tcm b+underAbstractionAbs' wrap t a k = addContext (wrap $ realName $ absName a, t) $ k $ absBody a   where     realName s = if isNoName s then "x" else argNameToString s  -- | Go under an abstract without worrying about the type to add to the context. {-# SPECIALIZE underAbstraction_ :: Subst t a => Abs a -> (a -> TCM b) -> TCM b #-} underAbstraction_ :: (Subst t a, MonadTCM tcm, MonadDebug tcm) => Abs a -> (a -> tcm b) -> tcm b-underAbstraction_ = underAbstraction dummyDom+underAbstraction_ = underAbstraction __DUMMY_DOM__ --- | Add a let bound variable.+getLetBindings :: MonadTCM tcm => tcm [(Name,(Term,Dom Type))]+getLetBindings = do+  bs <- asksTC envLetBindings+  forM (Map.toList bs) $ \ (n,o) -> (,) n <$> getOpen o++-- | Add a let bound variable+{-# SPECIALIZE addLetBinding' :: Name -> Term -> Dom Type -> TCM a -> TCM a #-}+addLetBinding' :: MonadTCM tcm => Name -> Term -> Dom Type -> tcm a -> tcm a+addLetBinding' x v t ret = do+    vt <- liftTCM $ makeOpen (v, t)+    flip localTC ret $ \e -> e { envLetBindings = Map.insert x vt $ envLetBindings e }++-- | Add a let bound variable {-# SPECIALIZE addLetBinding :: ArgInfo -> Name -> Term -> Type -> TCM a -> TCM a #-} addLetBinding :: MonadTCM tcm => ArgInfo -> Name -> Term -> Type -> tcm a -> tcm a-addLetBinding info x v t0 ret = do-    let t = Dom info t0-    vt <- liftTCM $ makeOpen (v, t)-    flip local ret $ \e -> e { envLetBindings = Map.insert x vt $ envLetBindings e }+addLetBinding info x v t0 ret = addLetBinding' x v (defaultArgDom info t0) ret   -- * Querying the context  -- | Get the current context. {-# SPECIALIZE getContext :: TCM [Dom (Name, Type)] #-}-getContext :: MonadReader TCEnv m => m [Dom (Name, Type)]-getContext = asks envContext+getContext :: MonadTCEnv m => m [Dom (Name, Type)]+getContext = asksTC envContext  -- | Get the size of the current context. {-# SPECIALIZE getContextSize :: TCM Nat #-}-getContextSize :: (Applicative m, MonadReader TCEnv m) => m Nat-getContextSize = length <$> asks envContext+getContextSize :: (Applicative m, MonadTCEnv m) => m Nat+getContextSize = length <$> asksTC envContext  -- | Generate @[var (n - 1), ..., var 0]@ for all declarations in the context. {-# SPECIALIZE getContextArgs :: TCM Args #-}-getContextArgs :: (Applicative m, MonadReader TCEnv m) => m Args+getContextArgs :: (Applicative m, MonadTCEnv m) => m Args getContextArgs = reverse . zipWith mkArg [0..] <$> getContext-  where mkArg i (Dom info _) = Arg info $ var i+  where mkArg i dom = var i <$ argFromDom dom  -- | Generate @[var (n - 1), ..., var 0]@ for all declarations in the context. {-# SPECIALIZE getContextTerms :: TCM [Term] #-}-getContextTerms :: (Applicative m, MonadReader TCEnv m) => m [Term]+getContextTerms :: (Applicative m, MonadTCEnv m) => m [Term] getContextTerms = map var . downFrom <$> getContextSize  -- | Get the current context as a 'Telescope'. {-# SPECIALIZE getContextTelescope :: TCM Telescope #-}-getContextTelescope :: (Applicative m, MonadReader TCEnv m) => m Telescope+getContextTelescope :: (Applicative m, MonadTCEnv m) => m Telescope getContextTelescope = telFromList' nameToArgName . reverse <$> getContext  -- | Get the names of all declarations in the context. {-# SPECIALIZE getContextNames :: TCM [Name] #-}-getContextNames :: (Applicative m, MonadReader TCEnv m) => m [Name]+getContextNames :: (Applicative m, MonadTCEnv m) => m [Name] getContextNames = map (fst . unDom) <$> getContext  -- | get type of bound variable (i.e. deBruijn index) -- {-# SPECIALIZE lookupBV :: Nat -> TCM (Dom (Name, Type)) #-}-lookupBV :: MonadReader TCEnv m => Nat -> m (Dom (Name, Type))+lookupBV :: MonadTCEnv m => Nat -> m (Dom (Name, Type)) lookupBV n = do   ctx <- getContext   let failure = fail $ "de Bruijn index out of scope: " ++ show n ++@@ -306,25 +341,25 @@   maybe failure (return . fmap (raise $ n + 1)) $ ctx !!! n  {-# SPECIALIZE typeOfBV' :: Nat -> TCM (Dom Type) #-}-typeOfBV' :: (Applicative m, MonadReader TCEnv m) => Nat -> m (Dom Type)+typeOfBV' :: (Applicative m, MonadTCEnv m) => Nat -> m (Dom Type) typeOfBV' n = fmap snd <$> lookupBV n  {-# SPECIALIZE typeOfBV :: Nat -> TCM Type #-}-typeOfBV :: (Applicative m, MonadReader TCEnv m) => Nat -> m Type+typeOfBV :: (Applicative m, MonadTCEnv m) => Nat -> m Type typeOfBV i = unDom <$> typeOfBV' i  {-# SPECIALIZE nameOfBV :: Nat -> TCM Name #-}-nameOfBV :: (Applicative m, MonadReader TCEnv m) => Nat -> m Name+nameOfBV :: (Applicative m, MonadTCEnv m) => Nat -> m Name nameOfBV n = fst . unDom <$> lookupBV n  -- | Get the term corresponding to a named variable. If it is a lambda bound --   variable the deBruijn index is returned and if it is a let bound variable --   its definition is returned. {-# SPECIALIZE getVarInfo :: Name -> TCM (Term, Dom Type) #-}-getVarInfo :: MonadReader TCEnv m => Name -> m (Term, Dom Type)+getVarInfo :: MonadTCEnv m => Name -> m (Term, Dom Type) getVarInfo x =     do  ctx <- getContext-        def <- asks envLetBindings+        def <- asksTC envLetBindings         case List.findIndex ((==x) . fst . unDom) ctx of             Just n -> do                 t <- typeOfBV' n@@ -332,4 +367,5 @@             _       ->                 case Map.lookup x def of                     Just vt -> getOpen vt-                    _       -> fail $ "unbound variable " ++ prettyShow (nameConcrete x)+                    _       -> fail $ "unbound variable " ++ prettyShow (nameConcrete x) +++                                " (id: " ++ prettyShow (nameId x) ++ ")"
src/full/Agda/TypeChecking/Monad/Context.hs-boot view
@@ -7,4 +7,4 @@ import Agda.Syntax.Internal import Agda.TypeChecking.Monad.Base -checkpointSubstitution :: MonadReader TCEnv tcm => CheckpointId -> tcm Substitution+checkpointSubstitution :: MonadTCEnv tcm => CheckpointId -> tcm Substitution
src/full/Agda/TypeChecking/Monad/Debug.hs view
@@ -42,8 +42,8 @@ instance (MonadIO m) => MonadDebug (TCMT m) where    displayDebugMessage n s = liftTCM $ do-    cb <- gets $ stInteractionOutputCallback . stPersistentState-    liftIO $ cb (Resp_RunningInfo n s)+    cb <- getsTC $ stInteractionOutputCallback . stPersistentState+    cb (Resp_RunningInfo n s)    formatDebugMessage k n d = liftTCM $     show <$> d `catchError` \ err ->@@ -79,26 +79,26 @@  -- | Conditionally print debug string. {-# SPECIALIZE reportS :: VerboseKey -> Int -> String -> TCM () #-}-reportS :: (HasOptions m, MonadDebug m, MonadReader TCEnv m)+reportS :: (HasOptions m, MonadDebug m, MonadTCEnv m)         => VerboseKey -> Int -> String -> m () reportS k n s = verboseS k n $ displayDebugMessage n s  -- | Conditionally println debug string. {-# SPECIALIZE reportSLn :: VerboseKey -> Int -> String -> TCM () #-}-reportSLn :: (HasOptions m, MonadDebug m, MonadReader TCEnv m)+reportSLn :: (HasOptions m, MonadDebug m, MonadTCEnv m)           => VerboseKey -> Int -> String -> m () reportSLn k n s = verboseS k n $   displayDebugMessage n (s ++ "\n")  -- | Conditionally render debug 'Doc' and print it. {-# SPECIALIZE reportSDoc :: VerboseKey -> Int -> TCM Doc -> TCM () #-}-reportSDoc :: (HasOptions m, MonadDebug m, MonadReader TCEnv m)+reportSDoc :: (HasOptions m, MonadDebug m, MonadTCEnv m)            => VerboseKey -> Int -> TCM Doc -> m () reportSDoc k n d = verboseS k n $ do-  displayDebugMessage n . (++ "\n") =<< formatDebugMessage k n (locally eIsDebugPrinting (const True) d)+  displayDebugMessage n . (++ "\n") =<< formatDebugMessage k n (locallyTC eIsDebugPrinting (const True) d)  unlessDebugPrinting :: MonadTCM m => m () -> m ()-unlessDebugPrinting = unlessM (asks envIsDebugPrinting)+unlessDebugPrinting = unlessM (asksTC envIsDebugPrinting)  traceSLn :: (HasOptions m, MonadDebug m)          => VerboseKey -> Int -> String -> m a -> m a@@ -109,7 +109,7 @@ traceSDoc :: (HasOptions m, MonadDebug m)           => VerboseKey -> Int -> TCM Doc -> m a -> m a traceSDoc k n d cont = ifNotM (hasVerbosity k n) cont $ {- else -} do-  s <- formatDebugMessage k n $ locally eIsDebugPrinting (const True) d+  s <- formatDebugMessage k n $ locallyTC eIsDebugPrinting (const True) d   traceDebugMessage n (s ++ "\n") cont  -- | Print brackets around debug messages issued by a computation.
src/full/Agda/TypeChecking/Monad/Debug.hs-boot view
@@ -19,10 +19,10 @@  instance (MonadIO m) => MonadDebug (TCMT m) -reportS :: (HasOptions m, MonadDebug m, MonadReader TCEnv m)+reportS :: (HasOptions m, MonadDebug m, MonadTCEnv m)         => VerboseKey -> Int -> String -> m ()-reportSLn :: (HasOptions m, MonadDebug m, MonadReader TCEnv m)+reportSLn :: (HasOptions m, MonadDebug m, MonadTCEnv m)           => VerboseKey -> Int -> String -> m ()-reportSDoc :: (HasOptions m, MonadDebug m, MonadReader TCEnv m)+reportSDoc :: (HasOptions m, MonadDebug m, MonadTCEnv m)            => VerboseKey -> Int -> TCM Doc -> m () 
src/full/Agda/TypeChecking/Monad/Env.hs view
@@ -1,8 +1,10 @@-+{-# LANGUAGE CPP #-} module Agda.TypeChecking.Monad.Env where  import Control.Monad.Reader import qualified Data.List as List+import qualified Data.Map as Map+import Data.Maybe (fromMaybe) import Data.Monoid  import Agda.Syntax.Common@@ -10,73 +12,83 @@  import Agda.TypeChecking.Monad.Base +import Agda.Utils.FileName++#include "undefined.h"+import Agda.Utils.Impossible+ -- | Get the name of the current module, if any. {-# SPECIALIZE currentModule :: TCM ModuleName #-} {-# SPECIALIZE currentModule :: ReduceM ModuleName #-}-currentModule :: MonadReader TCEnv m => m ModuleName-currentModule = asks envCurrentModule+currentModule :: MonadTCEnv m => m ModuleName+currentModule = asksTC envCurrentModule  -- | Set the name of the current module. withCurrentModule :: ModuleName -> TCM a -> TCM a withCurrentModule m =-    local $ \e -> e { envCurrentModule = m }+    localTC $ \ e -> e { envCurrentModule = m } +-- | Get the path of the currently checked file+getCurrentPath :: MonadTCEnv m => m AbsolutePath+getCurrentPath = fromMaybe __IMPOSSIBLE__ <$> asksTC envCurrentPath+ -- | Get the number of variables bound by anonymous modules. {-# SPECIALIZE getAnonymousVariables :: ModuleName -> TCM Nat #-} {-# SPECIALIZE getAnonymousVariables :: ModuleName -> ReduceM Nat #-}-getAnonymousVariables :: MonadReader TCEnv m => ModuleName -> m Nat+getAnonymousVariables :: MonadTCEnv m => ModuleName -> m Nat getAnonymousVariables m = do-  ms <- asks envAnonymousModules+  ms <- asksTC envAnonymousModules   return $ sum [ n | (m', n) <- ms, mnameToList m' `List.isPrefixOf` mnameToList m ]  -- | Add variables bound by an anonymous module. withAnonymousModule :: ModuleName -> Nat -> TCM a -> TCM a withAnonymousModule m n =-  local $ \e -> e { envAnonymousModules   = (m, n) : envAnonymousModules e-                  }+  localTC $ \ e -> e { envAnonymousModules = (m, n) : envAnonymousModules e }  -- | Set the current environment to the given withEnv :: TCEnv -> TCM a -> TCM a-withEnv env = local $ \ env0 -> env+withEnv env = localTC $ \ env0 -> env   -- Keep persistent settings-  { envAllowDestructiveUpdate = envAllowDestructiveUpdate env0-  , envPrintMetasBare         = envPrintMetasBare env0+  { envPrintMetasBare         = envPrintMetasBare env0   }  -- | Get the current environment getEnv :: TCM TCEnv-getEnv = ask+getEnv = askTC  -- | Increases the module nesting level by one in the given -- computation. withIncreasedModuleNestingLevel :: TCM a -> TCM a withIncreasedModuleNestingLevel =-  local (\e -> e { envModuleNestingLevel =-                     envModuleNestingLevel e + 1 })+  localTC $ \ e -> e { envModuleNestingLevel =+                       envModuleNestingLevel e + 1 }  -- | Set highlighting level withHighlightingLevel :: HighlightingLevel -> TCM a -> TCM a-withHighlightingLevel h = local $ \e -> e { envHighlightingLevel = h }+withHighlightingLevel h = localTC $ \ e -> e { envHighlightingLevel = h } +withoutOptionsChecking :: TCM a -> TCM a+withoutOptionsChecking = localTC $ \ e -> e { envCheckOptionConsistency = False }+ -- | Restore setting for 'ExpandLast' to default. doExpandLast :: TCM a -> TCM a-doExpandLast = local $ \ e -> e { envExpandLast = ExpandLast }+doExpandLast = localTC $ \ e -> e { envExpandLast = ExpandLast }  dontExpandLast :: TCM a -> TCM a-dontExpandLast = local $ \ e -> e { envExpandLast = DontExpandLast }+dontExpandLast = localTC $ \ e -> e { envExpandLast = DontExpandLast }  -- | If the reduced did a proper match (constructor or literal pattern), --   then record this as simplification step. {-# SPECIALIZE performedSimplification :: TCM a -> TCM a #-}-performedSimplification :: MonadReader TCEnv m => m a -> m a-performedSimplification = local $ \ e -> e { envSimplification = YesSimplification }+performedSimplification :: MonadTCEnv m => m a -> m a+performedSimplification = localTC $ \ e -> e { envSimplification = YesSimplification }  {-# SPECIALIZE performedSimplification' :: Simplification -> TCM a -> TCM a #-}-performedSimplification' :: MonadReader TCEnv m => Simplification -> m a -> m a-performedSimplification' simpl = local $ \ e -> e { envSimplification = simpl `mappend` envSimplification e }+performedSimplification' :: MonadTCEnv m => Simplification -> m a -> m a+performedSimplification' simpl = localTC $ \ e -> e { envSimplification = simpl `mappend` envSimplification e } -getSimplification :: MonadReader TCEnv m => m Simplification-getSimplification = asks envSimplification+getSimplification :: MonadTCEnv m => m Simplification+getSimplification = asksTC envSimplification  -- * Controlling reduction. @@ -85,7 +97,7 @@ updateAllowedReductions f e = e { envAllowedReductions = f (envAllowedReductions e) }  modifyAllowedReductions :: (AllowedReductions -> AllowedReductions) -> TCM a -> TCM a-modifyAllowedReductions = local . updateAllowedReductions+modifyAllowedReductions = localTC . updateAllowedReductions  putAllowedReductions :: AllowedReductions -> TCM a -> TCM a putAllowedReductions = modifyAllowedReductions . const@@ -105,12 +117,11 @@ -- * Concerning 'envInsideDotPattern'  insideDotPattern :: TCM a -> TCM a-insideDotPattern = local $ \e -> e { envInsideDotPattern = True }+insideDotPattern = localTC $ \ e -> e { envInsideDotPattern = True }  isInsideDotPattern :: TCM Bool-isInsideDotPattern = asks envInsideDotPattern+isInsideDotPattern = asksTC envInsideDotPattern  -- | Don't use call-by-need evaluation for the given computation. callByName :: TCM a -> TCM a-callByName = local $ \ e -> e { envCallByNeed = False }-+callByName = localTC $ \ e -> e { envCallByNeed = False }
src/full/Agda/TypeChecking/Monad/Imports.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE CPP #-}+ module Agda.TypeChecking.Monad.Imports where  import Control.Monad.State@@ -11,55 +13,63 @@ import qualified Agda.Syntax.Concrete.Name as C import Agda.TypeChecking.Monad.Base import Agda.Utils.Lens+import Agda.Utils.List ( caseListM ) import Agda.Utils.Monad +#include "undefined.h"+import Agda.Utils.Impossible+ addImport :: ModuleName -> TCM ()-addImport m =-    stImportedModules %= Set.insert m+addImport m = modifyTCLens stImportedModules $ Set.insert m  addImportCycleCheck :: C.TopLevelModuleName -> TCM a -> TCM a addImportCycleCheck m =-    local $ \e -> e { envImportPath = m : envImportPath e }+    localTC $ \e -> e { envImportPath = m : envImportPath e }  getImports :: TCM (Set ModuleName)-getImports = use stImportedModules+getImports = useTC stImportedModules  isImported :: ModuleName -> TCM Bool isImported m = Set.member m <$> getImports  getImportPath :: TCM [C.TopLevelModuleName]-getImportPath = asks envImportPath+getImportPath = asksTC envImportPath  visitModule :: ModuleInfo -> TCM () visitModule mi =-  stVisitedModules %=+  modifyTCLens stVisitedModules $     Map.insert (toTopLevelModuleName $ iModuleName $ miInterface mi) mi  setVisitedModules :: VisitedModules -> TCM ()-setVisitedModules ms = stVisitedModules .= ms+setVisitedModules ms = setTCLens stVisitedModules ms  getVisitedModules :: TCM VisitedModules-getVisitedModules = use stVisitedModules+getVisitedModules = useTC stVisitedModules  isVisited :: C.TopLevelModuleName -> TCM Bool-isVisited x = Map.member x <$> use stVisitedModules+isVisited x = Map.member x <$> useTC stVisitedModules  getVisitedModule :: C.TopLevelModuleName                  -> TCM (Maybe ModuleInfo)-getVisitedModule x = Map.lookup x <$> use stVisitedModules+getVisitedModule x = Map.lookup x <$> useTC stVisitedModules +mapVisitedModule :: C.TopLevelModuleName+                 -> (ModuleInfo -> ModuleInfo)+                 -> TCM ()+mapVisitedModule x f = modifyTCLens stVisitedModules (Map.adjust f x)+ getDecodedModules :: TCM DecodedModules-getDecodedModules = stDecodedModules . stPersistentState <$> get+getDecodedModules = stDecodedModules . stPersistentState <$> getTC  setDecodedModules :: DecodedModules -> TCM ()-setDecodedModules ms = modify $ \s ->+setDecodedModules ms = modifyTC $ \s ->   s { stPersistentState = (stPersistentState s) { stDecodedModules = ms } }  getDecodedModule :: C.TopLevelModuleName -> TCM (Maybe Interface)-getDecodedModule x = Map.lookup x . stDecodedModules . stPersistentState <$> get+getDecodedModule x = Map.lookup x . stDecodedModules . stPersistentState <$> getTC  storeDecodedModule :: Interface -> TCM ()-storeDecodedModule i = modify $ \s ->+storeDecodedModule i = modifyTC $ \s ->   s { stPersistentState =         (stPersistentState s) { stDecodedModules =           Map.insert (toTopLevelModuleName $ iModuleName i) i $@@ -68,7 +78,7 @@   }  dropDecodedModule :: C.TopLevelModuleName -> TCM ()-dropDecodedModule x = modify $ \s ->+dropDecodedModule x = modifyTC $ \s ->   s { stPersistentState =         (stPersistentState s) { stDecodedModules =                                   Map.delete x $ stDecodedModules $ stPersistentState s@@ -76,12 +86,12 @@   }  withImportPath :: [C.TopLevelModuleName] -> TCM a -> TCM a-withImportPath path = local $ \e -> e { envImportPath = path }+withImportPath path = localTC $ \e -> e { envImportPath = path }  -- | Assumes that the first module in the import path is the module we are --   worried about. checkForImportCycle :: TCM () checkForImportCycle = do-    m:ms <- getImportPath+  caseListM getImportPath __IMPOSSIBLE__ $ \ m ms -> do     when (m `elem` ms) $ typeError $ CyclicModuleDependency                                    $ dropWhile (/= m) $ reverse (m:ms)
src/full/Agda/TypeChecking/Monad/MetaVars.hs view
@@ -10,6 +10,10 @@ import Control.Monad.Reader import Control.Monad.Writer +import Data.IntMap (IntMap)+import qualified Data.IntMap as IntMap+import Data.IntSet (IntSet)+import qualified Data.IntSet as IntSet import Data.Map (Map) import qualified Data.Map as Map import Data.Set (Set)@@ -49,39 +53,42 @@ dontAssignMetas :: TCM a -> TCM a dontAssignMetas cont = do   reportSLn "tc.meta" 45 $ "don't assign metas"-  local (\ env -> env { envAssignMetas = False }) cont+  localTC (\ env -> env { envAssignMetas = False }) cont  -- | Get the meta store. getMetaStore :: TCM MetaStore-getMetaStore = use stMetaStore+getMetaStore = useTC stMetaStore  modifyMetaStore :: (MetaStore -> MetaStore) -> TCM ()-modifyMetaStore f = stMetaStore %= f+modifyMetaStore f = stMetaStore `modifyTCLens` f  -- | Run a computation and record which new metas it created.-metasCreatedBy :: TCM a -> TCM (a, Set MetaId)+metasCreatedBy :: TCM a -> TCM (a, IntSet) metasCreatedBy m = do-  before <- Map.keysSet <$> use stMetaStore+  before <- IntMap.keysSet <$> useTC stMetaStore   a <- m-  after  <- Map.keysSet <$> use stMetaStore-  return (a, after Set.\\ before)+  after  <- IntMap.keysSet <$> useTC stMetaStore+  return (a, after IntSet.\\ before) --- | Lookup a meta variable+-- | Lookup a meta variable.+lookupMeta' :: MetaId -> TCM (Maybe MetaVariable)+lookupMeta' m = IntMap.lookup (metaId m) <$> getMetaStore+ lookupMeta :: MetaId -> TCM MetaVariable-lookupMeta m = fromMaybeM failure $ Map.lookup m <$> getMetaStore+lookupMeta m = fromMaybeM failure $ lookupMeta' m   where failure = fail $ "no such meta variable " ++ prettyShow m +-- | Update the information associated with a meta variable. updateMetaVar :: MetaId -> (MetaVariable -> MetaVariable) -> TCM ()-updateMetaVar m f = modifyMetaStore $ Map.adjust f m+updateMetaVar m f = modifyMetaStore $ IntMap.adjust f $ metaId m +-- | Insert a new meta variable with associated information into the meta store.+insertMetaVar :: MetaId -> MetaVariable -> TCM ()+insertMetaVar m mv = modifyMetaStore $ IntMap.insert (metaId m) mv+ getMetaPriority :: MetaId -> TCM MetaPriority getMetaPriority = mvPriority <.> lookupMeta -{- UNUSED-getMetaRelevance :: MetaId -> TCM Relevance-getMetaRelevance x = miRelevance . mvInfo <$> lookupMeta x--}- isSortMeta :: MetaId -> TCM Bool isSortMeta m = isSortMeta_ <$> lookupMeta m @@ -97,14 +104,19 @@     HasType{ jMetaType = t } -> t     IsSort{}  -> __IMPOSSIBLE__ +-- | Compute the context variables that a meta should be applied to, accounting+--   for pruning.+getMetaContextArgs :: MetaVariable -> TCM Args+getMetaContextArgs MetaVar{ mvPermutation = p } = do+  args <- getContextArgs+  return $ permute (takeP (length args) p) args+ -- | Given a meta, return the type applied to the current context. getMetaTypeInContext :: MetaId -> TCM Type getMetaTypeInContext m = do-  MetaVar{ mvJudgement = j, mvPermutation = p } <- lookupMeta m+  mv@MetaVar{ mvJudgement = j } <- lookupMeta m   case j of-    HasType{ jMetaType = t } -> do-      vs <- getContextArgs-      piApplyM t $ permute (takeP (size vs) p) vs+    HasType{ jMetaType = t } -> piApplyM t =<< getMetaContextArgs mv     IsSort{}                 -> __IMPOSSIBLE__  -- | Check whether all metas are instantiated.@@ -175,6 +187,23 @@   levelAtomMetas (MetaLevel m _) = [m]   levelAtomMetas _               = [] +-- | Returns all metavariables in a constraint. Slightly complicated by the+--   fact that blocked terms are represented by two meta variables. To find the+--   second one we need to look up the meta listeners for the one in the+--   UnBlock constraint.+constraintMetas :: Constraint -> TCM (Set MetaId)+constraintMetas c = Set.union (Set.fromList $ allMetas c) <$> metas c+  where+    -- Dig out constraint-specific meta vars+    metas (UnBlock x)                    = Set.insert x . Set.unions <$> (mapM listenerMetas =<< getMetaListeners x)+    metas (Guarded c _)                  = metas c+    metas (UnquoteTactic (Just x) _ _ _) = return $ Set.singleton x+    metas _                              = return Set.empty++    -- For blocked constant twin variables+    listenerMetas EtaExpand{}           = return Set.empty+    listenerMetas (CheckConstraint _ c) = constraintMetas (clValue $ theConstraint c)+ -- | Create 'MetaInfo' in the current environment. createMetaInfo :: TCM MetaInfo createMetaInfo = createMetaInfo' RunMetaOccursCheck@@ -183,10 +212,12 @@ createMetaInfo' b = do   r   <- getCurrentRange   cl  <- buildClosure r+  gen <- viewTC eGeneralizeMetas   return MetaInfo     { miClosRange       = cl     , miMetaOccursCheck = b     , miNameSuggestion  = ""+    , miGeneralizable   = hide $ defaultArg gen     }  setValueMetaName :: Term -> MetaNameSuggestion -> TCM ()@@ -208,6 +239,11 @@   updateMetaVar mi $ \ mvar ->     mvar { mvInfo = (mvInfo mvar) { miNameSuggestion = s }} +setMetaArgInfo :: MetaId -> ArgInfo -> TCM ()+setMetaArgInfo m i = updateMetaVar m $ \ mv ->+  mv { mvInfo = (mvInfo mv)+        { miGeneralizable = setArgInfo i (miGeneralizable (mvInfo mv)) } }+ updateMetaVarRange :: MetaId -> Range -> TCM () updateMetaVarRange mi r = updateMetaVar mi (setRange r) @@ -219,13 +255,13 @@  modifyInteractionPoints :: (InteractionPoints -> InteractionPoints) -> TCM () modifyInteractionPoints f =-  stInteractionPoints %= f+  stInteractionPoints `modifyTCLens` f  -- | Register an interaction point during scope checking. --   If there is no interaction id yet, create one. registerInteractionPoint :: Bool -> Range -> Maybe Nat -> TCM InteractionId registerInteractionPoint preciseRange r maybeId = do-  m <- use stInteractionPoints+  m <- useTC stInteractionPoints   -- If we're given an interaction id we shouldn't look up by range.   -- This is important when doing 'refine', since all interaction points   -- created by the refine gets the same range.@@ -268,8 +304,8 @@ -- | Hook up meta variable to interaction point. connectInteractionPoint :: InteractionId -> MetaId -> TCM () connectInteractionPoint ii mi = do-  ipCl <- asks envClause-  m <- use stInteractionPoints+  ipCl <- asksTC envClause+  m <- useTC stInteractionPoints   let ip = InteractionPoint { ipRange = __IMPOSSIBLE__, ipMeta = Just mi, ipSolved = False, ipClause = ipCl }   -- The interaction point needs to be present already, we just set the meta.   case Map.insertLookupWithKey (\ key new old -> new { ipRange = ipRange old }) ii ip m of@@ -279,21 +315,22 @@ -- | Mark an interaction point as solved. removeInteractionPoint :: InteractionId -> TCM () removeInteractionPoint ii = do-  stInteractionPoints %= Map.update (\ ip -> Just ip{ ipSolved = True }) ii+  stInteractionPoints `modifyTCLens` Map.update (\ ip -> Just ip{ ipSolved = True }) ii  -- | Get a list of interaction ids.-getInteractionPoints :: TCM [InteractionId]-getInteractionPoints = Map.keys <$> use stInteractionPoints+{-# SPECIALIZE getInteractionPoints :: TCM [InteractionId] #-}+getInteractionPoints :: MonadTCM tcm => tcm [InteractionId]+getInteractionPoints = Map.keys <$> useTC stInteractionPoints  -- | Get all metas that correspond to unsolved interaction ids. getInteractionMetas :: TCM [MetaId] getInteractionMetas =-  mapMaybe ipMeta . filter (not . ipSolved) . Map.elems <$> use stInteractionPoints+  mapMaybe ipMeta . filter (not . ipSolved) . Map.elems <$> useTC stInteractionPoints  -- | Get all metas that correspond to unsolved interaction ids. getInteractionIdsAndMetas :: TCM [(InteractionId,MetaId)] getInteractionIdsAndMetas =-  mapMaybe f . filter (not . ipSolved . snd) . Map.toList <$> use stInteractionPoints+  mapMaybe f . filter (not . ipSolved . snd) . Map.toList <$> useTC stInteractionPoints   where f (ii, ip) = (ii,) <$> ipMeta ip  -- | Does the meta variable correspond to an interaction point?@@ -303,9 +340,10 @@ isInteractionMeta x = lookup x . map swap <$> getInteractionIdsAndMetas  -- | Get the information associated to an interaction point.-lookupInteractionPoint :: InteractionId -> TCM InteractionPoint+{-# SPECIALIZE lookupInteractionPoint :: InteractionId -> TCM InteractionPoint #-}+lookupInteractionPoint :: MonadTCM tcm => InteractionId -> tcm InteractionPoint lookupInteractionPoint ii =-  fromMaybeM err $ Map.lookup ii <$> use stInteractionPoints+  fromMaybeM err $ Map.lookup ii <$> useTC stInteractionPoints   where     err  = fail $ "no such interaction point: " ++ show ii @@ -314,24 +352,24 @@ lookupInteractionId :: InteractionId -> TCM MetaId lookupInteractionId ii = fromMaybeM err2 $ ipMeta <$> lookupInteractionPoint ii   where-    err2 = typeError $ GenericError $ "No type nor action available for hole " ++ show ii ++ ". Possible cause: the hole has not been reached during type checking (do you see yellow?)"+    err2 = typeError $ GenericError $ "No type nor action available for hole " ++ prettyShow ii ++ ". Possible cause: the hole has not been reached during type checking (do you see yellow?)"  -- | Check whether an interaction id is already associated with a meta variable. lookupInteractionMeta :: InteractionId -> TCM (Maybe MetaId)-lookupInteractionMeta ii = lookupInteractionMeta_ ii <$> use stInteractionPoints+lookupInteractionMeta ii = lookupInteractionMeta_ ii <$> useTC stInteractionPoints  lookupInteractionMeta_ :: InteractionId -> InteractionPoints -> Maybe MetaId lookupInteractionMeta_ ii m = ipMeta =<< Map.lookup ii m  -- | Generate new meta variable.-newMeta :: MetaInfo -> MetaPriority -> Permutation -> Judgement a -> TCM MetaId+newMeta :: Frozen -> MetaInfo -> MetaPriority -> Permutation -> Judgement a -> TCM MetaId newMeta = newMeta' Open  -- | Generate a new meta variable with some instantiation given. --   For instance, the instantiation could be a 'PostponedTypeCheckingProblem'.-newMeta' :: MetaInstantiation -> MetaInfo -> MetaPriority -> Permutation ->+newMeta' :: MetaInstantiation -> Frozen -> MetaInfo -> MetaPriority -> Permutation ->             Judgement a -> TCM MetaId-newMeta' inst mi p perm j = do+newMeta' inst frozen mi p perm j = do   x <- fresh   let j' = j { jMetaId = x }  -- fill the identifier part of the judgement       mv = MetaVar{ mvInfo             = mi@@ -340,14 +378,16 @@                   , mvJudgement        = j'                   , mvInstantiation    = inst                   , mvListeners        = Set.empty-                  , mvFrozen           = Instantiable }+                  , mvFrozen           = frozen+                  }   -- printing not available (import cycle)-  -- reportSDoc "tc.meta.new" 50 $ text "new meta" <+> prettyTCM j'-  stMetaStore %= Map.insert x mv+  -- reportSDoc "tc.meta.new" 50 $ "new meta" <+> prettyTCM j'+  insertMetaVar x mv   return x  -- | Get the 'Range' for an interaction point.-getInteractionRange :: InteractionId -> TCM Range+{-# SPECIALIZE getInteractionRange :: InteractionId -> TCM Range #-}+getInteractionRange :: MonadTCM tcm => InteractionId -> tcm Range getInteractionRange = ipRange <.> lookupInteractionPoint  -- | Get the 'Range' for a meta variable.@@ -364,25 +404,29 @@ withMetaInfo mI cont = enterClosure mI $ \ r ->   setCurrentRange r cont +getMetaVariableSet :: TCM IntSet+getMetaVariableSet = IntMap.keysSet <$> getMetaStore++getMetaVariables :: (MetaVariable -> Bool) -> TCM [MetaId]+getMetaVariables p = do+  store <- getMetaStore+  return [ MetaId i | (i, mv) <- IntMap.assocs store, p mv ]+ getInstantiatedMetas :: TCM [MetaId]-getInstantiatedMetas = do-    store <- getMetaStore-    return [ i | (i, MetaVar{ mvInstantiation = mi }) <- Map.assocs store, isInst mi ]-    where-        isInst Open                           = False-        isInst OpenIFS                        = False-        isInst BlockedConst{}                 = False-        isInst PostponedTypeCheckingProblem{} = False-        isInst InstV{}                        = True+getInstantiatedMetas = getMetaVariables (isInst . mvInstantiation)+  where+    isInst Open                           = False+    isInst OpenInstance                   = False+    isInst BlockedConst{}                 = False+    isInst PostponedTypeCheckingProblem{} = False+    isInst InstV{}                        = True  getOpenMetas :: TCM [MetaId]-getOpenMetas = do-    store <- getMetaStore-    return [ i | (i, MetaVar{ mvInstantiation = mi }) <- Map.assocs store, isOpenMeta mi ]+getOpenMetas = getMetaVariables (isOpenMeta . mvInstantiation)  isOpenMeta :: MetaInstantiation -> Bool isOpenMeta Open                           = True-isOpenMeta OpenIFS                        = True+isOpenMeta OpenInstance                   = True isOpenMeta BlockedConst{}                 = True isOpenMeta PostponedTypeCheckingProblem{} = True isOpenMeta InstV{}                        = False@@ -424,7 +468,7 @@  -- | Freeze some meta variables and return the list of metas that got frozen. freezeMetas' :: (MetaId -> Bool) -> TCM [MetaId]-freezeMetas' p = execWriterT $ stMetaStore %== Map.traverseWithKey freeze+freezeMetas' p = execWriterT $ modifyTCLensM stMetaStore $ IntMap.traverseWithKey (freeze . MetaId)   where   freeze :: Monad m => MetaId -> MetaVariable -> WriterT [MetaId] m MetaVariable   freeze m mvar@@ -439,7 +483,8 @@  -- | Thaw some metas, as indicated by the passed condition. unfreezeMetas' :: (MetaId -> Bool) -> TCM ()-unfreezeMetas' cond = modifyMetaStore $ Map.mapWithKey unfreeze where+unfreezeMetas' cond = modifyMetaStore $ IntMap.mapWithKey $ unfreeze . MetaId+  where   unfreeze :: MetaId -> MetaVariable -> MetaVariable   unfreeze m mvar     | cond m    = mvar { mvFrozen = Instantiable }
src/full/Agda/TypeChecking/Monad/Mutual.hs view
@@ -21,17 +21,17 @@ import Agda.Utils.Pretty ( prettyShow )  noMutualBlock :: TCM a -> TCM a-noMutualBlock = local $ \e -> e { envMutualBlock = Nothing }+noMutualBlock = localTC $ \e -> e { envMutualBlock = Nothing }  -- | Pass the current mutual block id --   or create a new mutual block if we are not already inside on. inMutualBlock :: (MutualId -> TCM a) -> TCM a inMutualBlock m = do-  mi <- asks envMutualBlock+  mi <- asksTC envMutualBlock   case mi of     Nothing -> do       i <- fresh-      local (\ e -> e { envMutualBlock = Just i }) $ m i+      localTC (\ e -> e { envMutualBlock = Just i }) $ m i     -- Don't create a new mutual block if we're already inside one.     Just i -> m i @@ -39,7 +39,7 @@ --   possibly overwriting the existing one.  setMutualBlockInfo :: MutualId -> Info.MutualInfo -> TCM ()-setMutualBlockInfo mi info = stMutualBlocks %= Map.alter f mi+setMutualBlockInfo mi info = stMutualBlocks `modifyTCLens` Map.alter f mi   where   f Nothing                   = Just $ MutualBlock info empty   f (Just (MutualBlock _ xs)) = Just $ MutualBlock info xs@@ -47,7 +47,7 @@ -- | Set the mutual block info for a block if non-existing.  insertMutualBlockInfo :: MutualId -> Info.MutualInfo -> TCM ()-insertMutualBlockInfo mi info = stMutualBlocks %= Map.alter f mi+insertMutualBlockInfo mi info = stMutualBlocks `modifyTCLens` Map.alter f mi   where   f Nothing = Just $ MutualBlock info empty   f (Just mb@(MutualBlock info0 xs))@@ -58,8 +58,8 @@  setMutualBlock :: MutualId -> QName -> TCM () setMutualBlock i x = do-  stMutualBlocks %= Map.alter f i-  stSignature    %= updateDefinition x (\ defn -> defn { defMutual = i })+  stMutualBlocks `modifyTCLens` Map.alter f i+  stSignature    `modifyTCLens` updateDefinition x (\ defn -> defn { defMutual = i })   where   f Nothing                    = Just $ MutualBlock empty $ Set.singleton x   f (Just (MutualBlock mi xs)) = Just $ MutualBlock mi $ Set.insert x xs@@ -67,11 +67,11 @@ -- | Get the current mutual block, if any, otherwise a fresh mutual -- block is returned. currentOrFreshMutualBlock :: TCM MutualId-currentOrFreshMutualBlock = maybe fresh return =<< asks envMutualBlock+currentOrFreshMutualBlock = maybe fresh return =<< asksTC envMutualBlock  lookupMutualBlock :: MutualId -> TCM MutualBlock lookupMutualBlock mi = do-  mbs <- use stMutualBlocks+  mbs <- useTC stMutualBlocks   case Map.lookup mi mbs of     Just mb -> return mb     Nothing -> return empty -- can end up here if we ask for the current mutual block and there is none@@ -79,7 +79,7 @@ -- | Reverse lookup of a mutual block id for a names. mutualBlockOf :: QName -> TCM MutualId mutualBlockOf x = do-  mb <- Map.toList <$> use stMutualBlocks+  mb <- Map.toList <$> useTC stMutualBlocks   case filter (Set.member x . mutualNames . snd) mb of     (i, _) : _ -> return i     _          -> fail $ "No mutual block for " ++ prettyShow x
src/full/Agda/TypeChecking/Monad/Open.hs view
@@ -24,20 +24,20 @@ -- | Create an open term in the current context. makeOpen :: a -> TCM (Open a) makeOpen x = do-    cp <- view eCurrentCheckpoint+    cp <- viewTC eCurrentCheckpoint     return $ OpenThing cp x  -- | Extract the value from an open term. The checkpoint at which it was --   created must be in scope.-getOpen :: (Subst Term a, MonadReader TCEnv m) => Open a -> m a+getOpen :: (Subst Term a, MonadTCEnv m) => Open a -> m a getOpen (OpenThing cp x) = do   sub <- checkpointSubstitution cp   return $ applySubst sub x  -- | Extract the value from an open term. Returns `Nothing` if the checkpoint --   at which it was created is not in scope.-tryGetOpen :: (Subst Term a, MonadReader TCEnv m) => Open a -> m (Maybe a)-tryGetOpen (OpenThing cp x) = fmap (`applySubst` x) <$> view (eCheckpoints . key cp)+tryGetOpen :: (Subst Term a, MonadTCEnv m) => Open a -> m (Maybe a)+tryGetOpen (OpenThing cp x) = fmap (`applySubst` x) <$> viewTC (eCheckpoints . key cp)  -- | An 'Open' is closed if it has checkpoint 0. isClosed :: Open a -> Bool
src/full/Agda/TypeChecking/Monad/Options.hs view
@@ -5,6 +5,7 @@ import Prelude hiding (mapM)  import Control.Monad.Reader hiding (mapM)+import Control.Monad.Writer import Control.Monad.State  hiding (mapM)  import Data.Maybe@@ -47,15 +48,16 @@  setPragmaOptions :: PragmaOptions -> TCM () setPragmaOptions opts = do-  stPragmaOptions %= Lens.mapSafeMode (Lens.getSafeMode opts ||)+  stPragmaOptions `modifyTCLens` Lens.mapSafeMode (Lens.getSafeMode opts ||)   clo <- commandLineOptions   let unsafe = unsafePragmaOptions opts-  when (Lens.getSafeMode clo && not (null unsafe)) $ warning $ SafeFlagPragma unsafe+--  when (Lens.getSafeMode clo && not (null unsafe)) $ warning $ SafeFlagPragma unsafe+  when (Lens.getSafeMode opts && not (null unsafe)) $ warning $ SafeFlagPragma unsafe   ok <- liftIO $ runOptM $ checkOpts (clo { optPragmaOptions = opts })   case ok of     Left err   -> __IMPOSSIBLE__     Right opts -> do-      stPragmaOptions .= optPragmaOptions opts+      stPragmaOptions `setTCLens` optPragmaOptions opts       updateBenchmarkingStatus  -- | Sets the command line options (both persistent and pragma options@@ -69,34 +71,47 @@ -- An empty list of relative include directories (@'Left' []@) is -- interpreted as @["."]@. setCommandLineOptions :: CommandLineOptions -> TCM ()-setCommandLineOptions = setCommandLineOptions' CurrentDir+setCommandLineOptions opts = do+  root <- liftIO (absolute =<< getCurrentDirectory)+  setCommandLineOptions' root opts -setCommandLineOptions' :: RelativeTo -> CommandLineOptions -> TCM ()-setCommandLineOptions' relativeTo opts = do+setCommandLineOptions'+  :: AbsolutePath+     -- ^ The base directory of relative paths.+  -> CommandLineOptions+  -> TCM ()+setCommandLineOptions' root opts = do   z <- liftIO $ runOptM $ checkOpts opts   case z of     Left err   -> __IMPOSSIBLE__     Right opts -> do       incs <- case optAbsoluteIncludePaths opts of         [] -> do-          opts' <- setLibraryPaths relativeTo opts+          opts' <- setLibraryPaths root opts           let incs = optIncludePaths opts'-          setIncludeDirs incs relativeTo+          setIncludeDirs incs root           getIncludeDirs         incs -> return incs-      modify $ Lens.setCommandLineOptions opts{ optAbsoluteIncludePaths = incs }+      modifyTC $ Lens.setCommandLineOptions opts{ optAbsoluteIncludePaths = incs }       setPragmaOptions (optPragmaOptions opts)       updateBenchmarkingStatus  libToTCM :: LibM a -> TCM a libToTCM m = do-  z <- liftIO $ runExceptT m+  (z, warns) <- liftIO $ runWriterT $ runExceptT m++  unless (null warns) $ warnings $ map LibraryWarning warns   case z of     Left s  -> typeError $ GenericDocError s     Right x -> return x -setLibraryPaths :: RelativeTo -> CommandLineOptions -> TCM CommandLineOptions-setLibraryPaths rel o = setLibraryIncludes =<< addDefaultLibraries rel o+setLibraryPaths+  :: AbsolutePath+     -- ^ The base directory of relative paths.+  -> CommandLineOptions+  -> TCM CommandLineOptions+setLibraryPaths root o =+  setLibraryIncludes =<< addDefaultLibraries root o  setLibraryIncludes :: CommandLineOptions -> TCM CommandLineOptions setLibraryIncludes o = do@@ -105,13 +120,16 @@     paths     <- libToTCM $ libraryIncludePaths (optOverrideLibrariesFile o) installed libs     return o{ optIncludePaths = paths ++ optIncludePaths o } -addDefaultLibraries :: RelativeTo -> CommandLineOptions -> TCM CommandLineOptions-addDefaultLibraries rel o+addDefaultLibraries+  :: AbsolutePath+     -- ^ The base directory of relative paths.+  -> CommandLineOptions+  -> TCM CommandLineOptions+addDefaultLibraries root o   | or [ not $ null $ optLibraries o        , not $ optUseLibs o        , optShowVersion o ] = pure o   | otherwise = do-  root <- getProjectRoot rel   (libs, incs) <- libToTCM $ getDefaultLibraries (filePath root) (optDefaultLibs o)   return o{ optIncludePaths = incs ++ optIncludePaths o, optLibraries = libs } @@ -126,16 +144,16 @@ -- | Disable display forms. enableDisplayForms :: TCM a -> TCM a enableDisplayForms =-  local $ \e -> e { envDisplayFormsEnabled = True }+  localTC $ \e -> e { envDisplayFormsEnabled = True }  -- | Disable display forms. disableDisplayForms :: TCM a -> TCM a disableDisplayForms =-  local $ \e -> e { envDisplayFormsEnabled = False }+  localTC $ \e -> e { envDisplayFormsEnabled = False }  -- | Check if display forms are enabled. displayFormsEnabled :: TCM Bool-displayFormsEnabled = asks envDisplayFormsEnabled+displayFormsEnabled = asksTC envDisplayFormsEnabled  -- | Gets the include directories. --@@ -149,22 +167,6 @@     [] -> __IMPOSSIBLE__     _  -> return incs --- | Which directory should form the base of relative include paths?--data RelativeTo-  = ProjectRoot AbsolutePath-    -- ^ The root directory of the \"project\" containing the given-    -- file. The file needs to be syntactically correct, with a module-    -- name matching the file name.-  | CurrentDir-    -- ^ The current working directory.--getProjectRoot :: RelativeTo -> TCM AbsolutePath-getProjectRoot CurrentDir = liftIO (absolute =<< getCurrentDirectory)-getProjectRoot (ProjectRoot f) = do-  m <- moduleName' f-  return (projectRoot f m)- -- | Makes the given directories absolute and stores them as include -- directories. --@@ -173,14 +175,12 @@ -- -- An empty list is interpreted as @["."]@. -setIncludeDirs :: [FilePath] -- ^ New include directories.-               -> RelativeTo -- ^ How should relative paths be interpreted?+setIncludeDirs :: [FilePath]    -- ^ New include directories.+               -> AbsolutePath  -- ^ The base directory of relative paths.                -> TCM ()-setIncludeDirs incs relativeTo = do+setIncludeDirs incs root = do   -- save the previous include dirs-  oldIncs <- gets Lens.getAbsoluteIncludePaths--  root <- getProjectRoot relativeTo+  oldIncs <- getsTC Lens.getAbsoluteIncludePaths    -- Add the current dir if no include path is given   incs <- return $ if null incs then ["."] else incs@@ -198,9 +198,9 @@   incs <- return $ incs ++ [primdir]    reportSDoc "setIncludeDirs" 10 $ return $ vcat-    [ text "Old include directories:"+    [ "Old include directories:"     , nest 2 $ vcat $ map pretty oldIncs-    , text "New include directories:"+    , "New include directories:"     , nest 2 $ vcat $ map pretty incs     ] @@ -219,29 +219,13 @@   -- "new-path/M.agda".   when (oldIncs /= incs) $ do     ho <- getInteractionOutputCallback+    tcWarnings <- useTC stTCWarnings -- restore already generated warnings     resetAllState+    setTCLens stTCWarnings tcWarnings     setInteractionOutputCallback ho    Lens.putAbsoluteIncludePaths incs -  -- Andreas, 2016-07-11 (reconstructing semantics):-  ---  -- Check that the module name of the project root-  -- is still correct wrt. to the changed include path.-  ---  -- E.g. if the include path was "/" and file "/A/B" was named "module A.B",-  -- and then the include path changes to "/A/", the module name-  -- becomes invalid; correct would then be "module B".--  case relativeTo of-    CurrentDir -> return ()-    ProjectRoot f -> void $ moduleName f-     -- Andreas, 2016-07-12 WAS:-     -- do-     --  m <- moduleName' f-     --  checkModuleName m f Nothing-- setInputFile :: FilePath -> TCM () setInputFile file =     do  opts <- commandLineOptions@@ -261,8 +245,8 @@ hasInputFile :: TCM Bool hasInputFile = isJust <$> optInputFile <$> commandLineOptions -proofIrrelevance :: TCM Bool-proofIrrelevance = optProofIrrelevance <$> pragmaOptions+isPropEnabled :: HasOptions m => m Bool+isPropEnabled = optProp <$> pragmaOptions  {-# SPECIALIZE hasUniversePolymorphism :: TCM Bool #-} hasUniversePolymorphism :: HasOptions m => m Bool@@ -305,6 +289,10 @@ ignoreInterfaces :: TCM Bool ignoreInterfaces = optIgnoreInterfaces <$> commandLineOptions +ignoreAllInterfaces :: TCM Bool+ignoreAllInterfaces = optIgnoreAllInterfaces <$> commandLineOptions++ positivityCheckEnabled :: TCM Bool positivityCheckEnabled = not . optDisablePositivity <$> pragmaOptions @@ -339,7 +327,7 @@ type VerboseKey = String  parseVerboseKey :: VerboseKey -> [String]-parseVerboseKey = wordsBy (`elem` ".:")+parseVerboseKey = wordsBy (`elem` (".:" :: String))  -- | Check whether a certain verbosity level is activated. --@@ -372,8 +360,8 @@ {-# SPECIALIZE verboseS :: VerboseKey -> Int -> TCM () -> TCM () #-} -- {-# SPECIALIZE verboseS :: MonadIO m => VerboseKey -> Int -> TCMT m () -> TCMT m () #-} -- RULE left-hand side too complicated to desugar {-# SPECIALIZE verboseS :: MonadTCM tcm => VerboseKey -> Int -> tcm () -> tcm () #-}-verboseS :: (MonadReader TCEnv m, HasOptions m) => VerboseKey -> Int -> m () -> m ()-verboseS k n action = whenM (hasVerbosity k n) $ locally eIsDebugPrinting (const True) action+verboseS :: (MonadTCEnv m, HasOptions m) => VerboseKey -> Int -> m () -> m ()+verboseS k n action = whenM (hasVerbosity k n) $ locallyTC eIsDebugPrinting (const True) action  -- | Verbosity lens. verbosity :: VerboseKey -> Lens' Int TCState@@ -384,4 +372,3 @@      defaultTo :: Eq a => a -> Lens' a (Maybe a)     defaultTo x f m = f (fromMaybe x m) <&> \ v -> if v == x then Nothing else Just v-
src/full/Agda/TypeChecking/Monad/Options.hs-boot view
@@ -10,6 +10,6 @@ type VerboseKey = String  hasVerbosity :: HasOptions m => VerboseKey -> Int -> m Bool-verboseS :: (MonadReader TCEnv m, HasOptions m) => VerboseKey -> Int -> m () -> m ()+verboseS :: (MonadTCEnv m, HasOptions m) => VerboseKey -> Int -> m () -> m ()  enableCaching :: TCM Bool
src/full/Agda/TypeChecking/Monad/Signature.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE BangPatterns      #-} {-# LANGUAGE CPP                      #-} {-# LANGUAGE NondecreasingIndentation #-} @@ -7,6 +8,11 @@  import Control.Arrow (first, second, (***)) import Control.Applicative hiding (empty)++#if __GLASGOW_HASKELL__ >= 800+import qualified Control.Monad.Fail as Fail+#endif+ import Control.Monad.State import Control.Monad.Reader import Control.Monad.Writer@@ -29,6 +35,7 @@ import Agda.Syntax.Treeless (Compiled(..), TTerm)  import Agda.TypeChecking.Monad.Base+import Agda.TypeChecking.Monad.Builtin import Agda.TypeChecking.Monad.Debug import Agda.TypeChecking.Monad.Context import Agda.TypeChecking.Monad.Options@@ -42,9 +49,12 @@ import Agda.TypeChecking.Positivity.Occurrence import Agda.TypeChecking.Substitute import {-# SOURCE #-} Agda.TypeChecking.Telescope+import Agda.TypeChecking.CompiledClause+import Agda.TypeChecking.Coverage.SplitTree import {-# SOURCE #-} Agda.TypeChecking.CompiledClause.Compile import {-# SOURCE #-} Agda.TypeChecking.Polarity import {-# SOURCE #-} Agda.TypeChecking.ProjectionLike+import Agda.TypeChecking.Monad.Builtin  import Agda.Utils.Except ( ExceptT ) import Agda.Utils.Functor@@ -78,7 +88,7 @@                     Just (doms, dom) -> telFromList $ fmap hideOrKeepInstance doms ++ [dom]               _ -> tel   let d' = abstract tel' $ d { defName = q }-  reportSDoc "tc.signature" 60 $ return $ text "lambda-lifted definition =" <?> pretty d'+  reportSDoc "tc.signature" 60 $ return $ "lambda-lifted definition =" <?> pretty d'   modifySignature $ updateDefinitions $ HMap.insertWith (+++) q d'   i <- currentOrFreshMutualBlock   setMutualBlock i q@@ -92,6 +102,20 @@     def@Function{} -> def { funTerminates = Just b }     def -> def +-- | Set CompiledClauses of a defined function symbol.+setCompiledClauses :: QName -> CompiledClauses -> TCM ()+setCompiledClauses q cc = modifySignature $ updateDefinition q $ updateTheDef $ setT+  where+    setT def@Function{} = def { funCompiled = Just cc }+    setT def            = def++-- | Set SplitTree of a defined function symbol.+setSplitTree :: QName -> SplitTree -> TCM ()+setSplitTree q st = modifySignature $ updateDefinition q $ updateTheDef $ setT+  where+    setT def@Function{} = def { funSplitTree = Just st }+    setT def            = def+ -- | Modify the clauses of a function. modifyFunClauses :: QName -> ([Clause] -> [Clause]) -> TCM () modifyFunClauses q f =@@ -109,62 +133,21 @@ mkPragma :: String -> TCM CompilerPragma mkPragma s = CompilerPragma <$> getCurrentRange <*> pure s --- | Add a compiler pragma `{-# COMPILE <backend> <name> <text> #-}`+-- | Add a compiler pragma `{-\# COMPILE <backend> <name> <text> \#-}` addPragma :: BackendName -> QName -> String -> TCM () addPragma b q s = modifySignature . updateDefinition q . addCompilerPragma b =<< mkPragma s --- ** Temporary **---  The functions below are only needed while we still parse the old COMPILED---  pragmas.--type HaskellCode = String-type HaskellType = String-type JSCode = String-type CoreCode = String--addDeprecatedPragma :: String -> BackendName -> QName -> String -> TCM ()-addDeprecatedPragma old b q s = do-  let pq = prettyShow $ nameConcrete $ qnameName q-  warning $ DeprecationWarning (unwords ["The", old, "pragma"])-                               (unwords ["{-# COMPILE", b, pq, s, "#-}"]) "2.6"-  addPragma b q s--dataFormat :: String -> [String] -> String-dataFormat ty cons = "= data " ++ ty ++ " (" ++ List.intercalate " | " cons ++ ")"--addHaskellCode :: QName -> HaskellCode -> TCM ()-addHaskellCode q hsCode = addDeprecatedPragma "COMPILED" ghcBackendName q $ "= " ++ hsCode--addHaskellExport :: QName -> String -> TCM ()-addHaskellExport q hsName = addDeprecatedPragma "COMPILED_EXPORT" ghcBackendName q $ "as " ++ hsName--addHaskellType :: QName -> HaskellType -> TCM ()-addHaskellType q hsTy = addDeprecatedPragma "COMPILED_TYPE" ghcBackendName q $ "= type " ++ hsTy--addHaskellData :: QName -> HaskellType -> [HaskellCode] -> TCM ()-addHaskellData q hsTy hsCons = addDeprecatedPragma "COMPILED_DATA" ghcBackendName q $ dataFormat hsTy hsCons--addJSCode :: QName -> JSCode -> TCM ()-addJSCode q jsDef = addDeprecatedPragma "COMPILED_JS" jsBackendName q ("= " ++ jsDef)--addCoreCode :: QName -> CoreCode -> TCM ()-addCoreCode q crDef = addDeprecatedPragma "COMPILED_UHC" uhcBackendName q $ "= " ++ crDef--addCoreType :: QName -> CoreCode -> [CoreCode] -> TCM ()-addCoreType q crTy crCons = addDeprecatedPragma "COMPILED_DATA_UHC" uhcBackendName q $ dataFormat crTy crCons---- ** End of temporary functions **- getUniqueCompilerPragma :: BackendName -> QName -> TCM (Maybe CompilerPragma) getUniqueCompilerPragma backend q = do   ps <- defCompilerPragmas backend <$> getConstInfo q   case ps of     []  -> return Nothing     [p] -> return $ Just p-    _   -> setCurrentRange (ps !! 1) $+    (_:p1:_) ->+      setCurrentRange p1 $             genericDocError $-                  hang (text ("Conflicting " ++ backend ++ " pragmas for") <+> pretty q <+> text "at") 2 $-                       vcat [ text "-" <+> pretty (getRange p) | p <- ps ]+                  hang (text ("Conflicting " ++ backend ++ " pragmas for") <+> pretty q <+> "at") 2 $+                       vcat [ "-" <+> pretty (getRange p) | p <- ps ]  setFunctionFlag :: FunctionFlag -> Bool -> QName -> TCM () setFunctionFlag flag val q = modifyGlobalDefinition q $ set (theDefLens . funFlag flag) val@@ -214,8 +197,8 @@ -- | Sets the checkpoint for the given module to the current checkpoint. setModuleCheckpoint :: ModuleName -> TCM () setModuleCheckpoint m = do-  chkpt <- view eCurrentCheckpoint-  stModuleCheckpoints %= Map.insert m chkpt+  chkpt <- viewTC eCurrentCheckpoint+  stModuleCheckpoints `modifyTCLens` Map.insert m chkpt  -- | Get a section. --@@ -343,12 +326,17 @@  applySection' :: ModuleName -> Telescope -> ModuleName -> Args -> ScopeCopyInfo -> TCM () applySection' new ptel old ts ScopeCopyInfo{ renNames = rd, renModules = rm } = do+  do+    noCopyList <- catMaybes <$> mapM getName' constrainedPrims+    forM_ (map fst rd) $ \ q -> do+      when (q `elem` noCopyList) $ typeError (TriedToCopyConstrainedPrim q)+   reportSLn "tc.mod.apply" 10 $ render $ vcat-    [ text "applySection"-    , text "new  =" <+> pretty new-    , text "ptel =" <+> pretty ptel-    , text "old  =" <+> pretty old-    , text "ts   =" <+> pretty ts+    [ "applySection"+    , "new  =" <+> pretty new+    , "ptel =" <+> pretty ptel+    , "old  =" <+> pretty old+    , "ts   =" <+> pretty ts     ]   mapM_ (copyDef ts) rd   mapM_ (copySec ts) rm@@ -413,6 +401,7 @@             t   = defType d `piApply` ts'             pol = defPolarity d `apply` ts'             occ = defArgOccurrences d `apply` ts'+            gen = defArgGeneralizable d `apply` ts'             inst = defInstance d             -- the name is set by the addConstant function             nd :: QName -> TCM Definition@@ -422,12 +411,15 @@                     , defType           = t                     , defPolarity       = pol                     , defArgOccurrences = occ+                    , defArgGeneralizable = gen+                    , defGeneralizedParams = [] -- This is only needed for type checking data/record defs so no need to copy it.                     , defDisplay        = []                     , defMutual         = -1   -- TODO: mutual block?                     , defCompiledRep    = noCompiledRep                     , defInstance       = inst                     , defCopy           = True                     , defMatchable      = False+                    , defNoCompilation  = defNoCompilation d                     , defInjective      = False                     , theDef            = df }             oldDef = theDef d@@ -464,8 +456,9 @@                          , recClause  = Just cl                          , recTel     = apply tel ts'                          }+                GeneralizableVar -> return GeneralizableVar                 _ -> do-                  cc <- compileClauses Nothing [cl] -- Andreas, 2012-10-07 non need for record pattern translation+                  (mst, cc) <- compileClauses Nothing [cl] -- Andreas, 2012-10-07 non need for record pattern translation                   let newDef =                         set funMacro  (oldDef ^. funMacro) $                         set funStatic (oldDef ^. funStatic) $@@ -473,6 +466,7 @@                         emptyFunction                         { funClauses        = [cl]                         , funCompiled       = Just cc+                        , funSplitTree      = mst                         , funMutual         = mutual                         , funProjection     = proj                         , funTerminates     = Just True@@ -480,7 +474,7 @@                         , funWith           = with                         , funCopatternLHS   = isCopatternLHS [cl]                         }-                  reportSDoc "tc.mod.apply" 80 $ return $ (text "new def for" <+> pretty x) <?> pretty newDef+                  reportSDoc "tc.mod.apply" 80 $ return $ ("new def for" <+> pretty x) <?> pretty newDef                   return newDef              cl = Clause { clauseLHSRange  = getRange $ defClauses d@@ -548,18 +542,18 @@   let add = updateDefinition x $ \ def -> def{ defDisplay = d : defDisplay def }   ifM (isLocal x)     {-then-} (modifySignature add)-    {-else-} (stImportsDisplayForms %= HMap.insertWith (++) x [d])+    {-else-} (stImportsDisplayForms `modifyTCLens` HMap.insertWith (++) x [d])   whenM (hasLoopingDisplayForm x) $-    typeError . GenericDocError $ text "Cannot add recursive display form for" <+> pretty x+    typeError . GenericDocError $ "Cannot add recursive display form for" <+> pretty x  isLocal :: QName -> TCM Bool-isLocal x = HMap.member x <$> use (stSignature . sigDefinitions)+isLocal x = HMap.member x <$> useTC (stSignature . sigDefinitions)  getDisplayForms :: QName -> TCM [LocalDisplayForm] getDisplayForms q = do   ds  <- either (const []) defDisplay <$> getConstInfo' q-  ds1 <- HMap.lookupDefault [] q <$> use stImportsDisplayForms-  ds2 <- HMap.lookupDefault [] q <$> use stImportedDisplayForms+  ds1 <- HMap.lookupDefault [] q <$> useTC stImportsDisplayForms+  ds2 <- HMap.lookupDefault [] q <$> useTC stImportedDisplayForms   ifM (isLocal q) (return $ ds ++ ds1 ++ ds2)                   (return $ ds1 ++ ds ++ ds2) @@ -602,11 +596,15 @@ whatInduction :: MonadTCM tcm => QName -> tcm Induction whatInduction c = liftTCM $ do   def <- theDef <$> getConstInfo c+  mz <- getBuiltinName' builtinIZero+  mo <- getBuiltinName' builtinIOne   case def of     Datatype{ dataInduction = i } -> return i     Record{} | not (recRecursive def) -> return Inductive     Record{ recInduction = i    } -> return $ fromMaybe Inductive i     Constructor{ conInd = i }     -> return i+    _ | Just c == mz || Just c == mo+                                  -> return Inductive     _                             -> __IMPOSSIBLE__  -- | Does the given constructor come from a single-constructor type?@@ -636,7 +634,17 @@   SigUnknown s -> f s   SigAbstract  -> a -class (Functor m, Applicative m, Monad m, HasOptions m, MonadDebug m, MonadReader TCEnv m) => HasConstInfo m where+class ( Functor m+      , Applicative m+#if __GLASGOW_HASKELL__ == 710+      , Monad m+#else+      , Fail.MonadFail m+#endif+      , HasOptions m+      , MonadDebug m+      , MonadTCEnv m+      ) => HasConstInfo m where   -- | Lookup the definition of a name. The result is a closed thing, all free   --   variables have been abstracted over.   getConstInfo :: QName -> m Definition@@ -669,10 +677,10 @@ getOriginalProjection q = projOrig . fromMaybe __IMPOSSIBLE__ <$> isProjection q  instance HasConstInfo (TCMT IO) where-  getRewriteRulesFor = defaultGetRewriteRulesFor get+  getRewriteRulesFor = defaultGetRewriteRulesFor getTC   getConstInfo' q = do-    st  <- get-    env <- ask+    st  <- getTC+    env <- askTC     defaultGetConstInfo st env q   getConstInfo q = getConstInfo' q >>= \case       Right d -> return d@@ -680,7 +688,7 @@       Left SigAbstract      -> notInScope $ qnameToConcrete q  defaultGetConstInfo-  :: (HasOptions m, MonadDebug m, MonadReader TCEnv m)+  :: (HasOptions m, MonadDebug m, MonadTCEnv m)   => TCState -> TCEnv -> QName -> m (Either SigError Definition) defaultGetConstInfo st env q = do     let defs  = st^.(stSignature . sigDefinitions)@@ -716,13 +724,21 @@   getConstInfo' = lift . getConstInfo'   getRewriteRulesFor = lift . getRewriteRulesFor +instance HasConstInfo m => HasConstInfo (ReaderT r m) where+  getConstInfo' = lift . getConstInfo'+  getRewriteRulesFor = lift . getRewriteRulesFor+ instance (Monoid w, HasConstInfo m) => HasConstInfo (WriterT w m) where   getConstInfo' = lift . getConstInfo'   getRewriteRulesFor = lift . getRewriteRulesFor +instance HasConstInfo m => HasConstInfo (StateT s m) where+  getConstInfo' = lift . getConstInfo'+  getRewriteRulesFor = lift . getRewriteRulesFor+ {-# INLINE getConInfo #-}-getConInfo :: MonadTCM tcm => ConHead -> tcm Definition-getConInfo = liftTCM . getConstInfo . conName+getConInfo :: HasConstInfo m => ConHead -> m Definition+getConInfo = getConstInfo . conName  -- | Look up the polarity of a definition. getPolarity :: QName -> TCM [Polarity]@@ -799,6 +815,14 @@ getCompiledArgUse :: QName -> TCM [Bool] getCompiledArgUse q = maybe [] cArgUsage <$> getCompiled q +-- | add data constructors to a datatype+addDataCons :: QName -> [QName] -> TCM ()+addDataCons d cs = modifySignature $ updateDefinition d $ updateTheDef $ \ def ->+  let !cs' = cs ++ dataCons def in+  case def of+    Datatype{} -> def {dataCons = cs' }+    _          -> __IMPOSSIBLE__+ -- | Get the mutually recursive identifiers of a symbol from the signature. getMutual :: QName -> TCM (Maybe [QName]) getMutual d = getMutual_ . theDef <$> getConstInfo d@@ -839,28 +863,28 @@ getDefModule f = do   def <- getConstInfo f   return $ case theDef def of-    Function{ funExtLam = Just (ExtLamInfo m) } -> m-    _                                           -> qnameModule f+    Function{ funExtLam = Just (ExtLamInfo m _) } -> m+    _                                             -> qnameModule f  -- | Compute the number of free variables of a defined name. This is the sum of --   number of parameters shared with the current module and the number of --   anonymous variables (if the name comes from a let-bound module).-getDefFreeVars :: (Functor m, Applicative m, ReadTCState m, MonadReader TCEnv m) => QName -> m Nat+getDefFreeVars :: (Functor m, Applicative m, ReadTCState m, MonadTCEnv m) => QName -> m Nat getDefFreeVars = getModuleFreeVars . qnameModule  freeVarsToApply :: (Functor m, HasConstInfo m, HasOptions m,-                    ReadTCState m, MonadReader TCEnv m, MonadDebug m)+                    ReadTCState m, MonadTCEnv m, MonadDebug m)                 => QName -> m Args freeVarsToApply q = do   vs <- moduleParamsToApply $ qnameModule q   t <- defType <$> getConstInfo q   let TelV tel _ = telView'UpTo (size vs) t   unless (size tel == size vs) __IMPOSSIBLE__-  return $ zipWith (\ (Arg _ v) (Dom ai _) -> Arg ai v) vs $ telToList tel+  return $ zipWith (\ arg dom -> unArg arg <$ argFromDom dom) vs $ telToList tel  {-# SPECIALIZE getModuleFreeVars :: ModuleName -> TCM Nat #-} {-# SPECIALIZE getModuleFreeVars :: ModuleName -> ReduceM Nat #-}-getModuleFreeVars :: (Functor m, Applicative m, MonadReader TCEnv m, ReadTCState m)+getModuleFreeVars :: (Functor m, Applicative m, MonadTCEnv m, ReadTCState m)                   => ModuleName -> m Nat getModuleFreeVars m = do   m0   <- commonParentModule m <$> currentModule@@ -881,7 +905,7 @@ --          ... M₁.M₂.f [insert Γ raised by Θ] --   @ moduleParamsToApply :: (Functor m, Applicative m, HasOptions m,-                        MonadReader TCEnv m, ReadTCState m, MonadDebug m)+                        MonadTCEnv m, ReadTCState m, MonadDebug m)                     => ModuleName -> m Args moduleParamsToApply m = do   -- Get the correct number of free variables (correctly raised) of @m@.@@ -919,7 +943,7 @@       -- drop some @args@.       -- And there are also anonymous modules, thus, the invariant is not trivial.       when (size stel < size args) __IMPOSSIBLE__-      return $ zipWith (\ (Dom ai _) (Arg _ v) -> Arg ai v) (telToList stel) args+      return $ zipWith (\ !dom (Arg _ v) -> v <$ argFromDom dom) (telToList stel) args  -- | Unless all variables in the context are module parameters, create a fresh --   module to capture the non-module parameters. Used when unquoting to make@@ -929,13 +953,18 @@   sub <- getModuleParameterSub =<< currentModule   if sub == IdS then k else do     m  <- currentModule-    m' <- qualifyM m . mnameFromList . (:[]) <$> freshName_ "_"+    m' <- qualifyM m . mnameFromList . (:[]) <$>+            freshName_ ("_" :: String)     addSection m'     withCurrentModule m' k  -- | Instantiate a closed definition with the correct part of the current --   context.-instantiateDef :: Definition -> TCM Definition+{-# SPECIALIZE instantiateDef :: Definition -> TCM Definition #-}+instantiateDef+  :: ( Functor m, HasConstInfo m, HasOptions m+     , ReadTCState m, MonadTCEnv m, MonadDebug m )+  => Definition -> m Definition instantiateDef d = do   vs  <- freeVarsToApply $ defName d   verboseS "tc.sig.inst" 30 $ do@@ -947,18 +976,18 @@   return $ d `apply` vs  instantiateRewriteRule :: (Functor m, HasConstInfo m, HasOptions m,-                           ReadTCState m, MonadReader TCEnv m, MonadDebug m)+                           ReadTCState m, MonadTCEnv m, MonadDebug m)                        => RewriteRule -> m RewriteRule instantiateRewriteRule rew = do-  traceSLn "rewriting" 60 ("instantiating rewrite rule " ++ show (rewName rew) ++ " to the local context.") $ do+  traceSLn "rewriting" 95 ("instantiating rewrite rule " ++ show (rewName rew) ++ " to the local context.") $ do   vs  <- freeVarsToApply $ rewName rew   let rew' = rew `apply` vs-  traceSLn "rewriting" 60 ("instantiated rewrite rule: ") $ do-  traceSLn "rewriting" 60 (show rew') $ do+  traceSLn "rewriting" 95 ("instantiated rewrite rule: ") $ do+  traceSLn "rewriting" 95 (show rew') $ do   return rew'  instantiateRewriteRules :: (Functor m, HasConstInfo m, HasOptions m,-                            ReadTCState m, MonadReader TCEnv m, MonadDebug m)+                            ReadTCState m, MonadTCEnv m, MonadDebug m)                         => RewriteRules -> m RewriteRules instantiateRewriteRules = mapM instantiateRewriteRule @@ -975,6 +1004,8 @@                }   where     makeAbs Axiom         = Just Axiom+    makeAbs d@DataOrRecSig{}     = Just d+    makeAbs d@GeneralizableVar{} = Just d     makeAbs d@Datatype {} = Just $ AbstractDefn d     makeAbs d@Function {} = Just $ AbstractDefn d     makeAbs Constructor{} = Nothing@@ -988,28 +1019,22 @@  -- | Enter abstract mode. Abstract definition in the current module are transparent. {-# SPECIALIZE inAbstractMode :: TCM a -> TCM a #-}-inAbstractMode :: MonadReader TCEnv m => m a -> m a-inAbstractMode = local $ \e -> e { envAbstractMode = AbstractMode,-                                   envAllowDestructiveUpdate = False }-                                    -- Allowing destructive updates when seeing through-                                    -- abstract may break the abstraction.+inAbstractMode :: MonadTCEnv m => m a -> m a+inAbstractMode = localTC $ \e -> e { envAbstractMode = AbstractMode }  -- | Not in abstract mode. All abstract definitions are opaque. {-# SPECIALIZE inConcreteMode :: TCM a -> TCM a #-}-inConcreteMode :: MonadReader TCEnv m => m a -> m a-inConcreteMode = local $ \e -> e { envAbstractMode = ConcreteMode }+inConcreteMode :: MonadTCEnv m => m a -> m a+inConcreteMode = localTC $ \e -> e { envAbstractMode = ConcreteMode }  -- | Ignore abstract mode. All abstract definitions are transparent.-ignoreAbstractMode :: MonadReader TCEnv m => m a -> m a-ignoreAbstractMode = local $ \e -> e { envAbstractMode = IgnoreAbstractMode,-                                       envAllowDestructiveUpdate = False }-                                       -- Allowing destructive updates when ignoring-                                       -- abstract may break the abstraction.+ignoreAbstractMode :: MonadTCEnv m => m a -> m a+ignoreAbstractMode = localTC $ \e -> e { envAbstractMode = IgnoreAbstractMode }  -- | Enter concrete or abstract mode depending on whether the given identifier --   is concrete or abstract. {-# SPECIALIZE inConcreteOrAbstractMode :: QName -> (Definition -> TCM a) -> TCM a #-}-inConcreteOrAbstractMode :: (MonadReader TCEnv m, HasConstInfo m) => QName -> (Definition -> m a) -> m a+inConcreteOrAbstractMode :: (MonadTCEnv m, HasConstInfo m) => QName -> (Definition -> m a) -> m a inConcreteOrAbstractMode q cont = do   -- Andreas, 2015-07-01: If we do not ignoreAbstractMode here,   -- we will get ConcreteDef for abstract things, as they are turned into axioms.@@ -1021,8 +1046,8 @@ -- | Check whether a name might have to be treated abstractly (either if we're --   'inAbstractMode' or it's not a local name). Returns true for things not --   declared abstract as well, but for those 'makeAbstract' will have no effect.-treatAbstractly :: MonadReader TCEnv m => QName -> m Bool-treatAbstractly q = asks $ treatAbstractly' q+treatAbstractly :: MonadTCEnv m => QName -> m Bool+treatAbstractly q = asksTC $ treatAbstractly' q  -- | Andreas, 2015-07-01: --   If the @current@ module is a weak suffix of the identifier module,@@ -1043,21 +1068,31 @@   where     current = dropAnon $ envCurrentModule env     m       = dropAnon $ qnameModule q-    dropAnon (MName ms) = MName $ reverse $ dropWhile isNoName $ reverse ms+    dropAnon (MName ms) = MName $ List.dropWhileEnd isNoName ms  -- | Get type of a constant, instantiated to the current context.-typeOfConst :: QName -> TCM Type+{-# SPECIALIZE typeOfConst :: QName -> TCM Type #-}+typeOfConst+  :: ( Functor m, HasConstInfo m, HasOptions m+     , ReadTCState m, MonadTCEnv m, MonadDebug m )+  => QName -> m Type typeOfConst q = defType <$> (instantiateDef =<< getConstInfo q)  -- | Get relevance of a constant. relOfConst :: QName -> TCM Relevance relOfConst q = defRelevance <$> getConstInfo q +-- | Get modality of a constant.+modalityOfConst :: QName -> TCM Modality+modalityOfConst q = getModality . defArgInfo <$> getConstInfo q+ -- | The number of dropped parameters for a definition. --   0 except for projection(-like) functions and constructors. droppedPars :: Definition -> Int droppedPars d = case theDef d of     Axiom{}                  -> 0+    DataOrRecSig{}           -> 0+    GeneralizableVar{}       -> 0     def@Function{}           -> projectionArgs def     Datatype  {dataPars = _} -> 0  -- not dropped     Record     {recPars = _} -> 0  -- not dropped@@ -1105,7 +1140,8 @@  -- | Apply a function @f@ to its first argument, producing the proper --   postfix projection if @f@ is a projection.-applyDef :: ProjOrigin -> QName -> Arg Term -> TCM Term+applyDef :: (HasConstInfo m)+         => ProjOrigin -> QName -> Arg Term -> m Term applyDef o f a = do   let fallback = return $ Def f [Apply a]   caseMaybeM (isProjection f) fallback $ \ isP -> do
src/full/Agda/TypeChecking/Monad/Signature.hs-boot view
@@ -1,8 +1,46 @@+{-# LANGUAGE CPP #-}  module Agda.TypeChecking.Monad.Signature where +#if __GLASGOW_HASKELL__ >= 800+import qualified Control.Monad.Fail as Fail+#endif++import Control.Monad.Reader++import Agda.Syntax.Abstract.Name (QName) import Agda.Syntax.Internal (ModuleName, Telescope)-import Agda.TypeChecking.Monad.Base (TCM, ReadTCState)++import Agda.TypeChecking.Monad.Base+  ( TCM, ReadTCState, HasOptions, TCEnv, MonadTCEnv+  , Definition, RewriteRules+  )+import Agda.TypeChecking.Monad.Debug (MonadDebug)++import Agda.Utils.Pretty (prettyShow)++data SigError = SigUnknown String | SigAbstract++class ( Functor m+      , Applicative m+#if __GLASGOW_HASKELL__ == 710+      , Monad m+#else+      , Fail.MonadFail m+#endif+      , HasOptions m+      , MonadDebug m+      , MonadTCEnv m+      ) => HasConstInfo m where+  getConstInfo :: QName -> m Definition+  getConstInfo q = getConstInfo' q >>= \case+      Right d -> return d+      Left (SigUnknown err) -> __IMPOSSIBLE_VERBOSE__ err+      Left SigAbstract      -> __IMPOSSIBLE_VERBOSE__ $+        "Abstract, thus, not in scope: " ++ prettyShow q+  getConstInfo' :: QName -> m (Either SigError Definition)+  getConstInfo' q = Right <$> getConstInfo q+  getRewriteRulesFor :: QName -> m RewriteRules  inFreshModuleIfFreeParams :: TCM a -> TCM a lookupSection :: (Functor m, ReadTCState m) => ModuleName -> m Telescope
src/full/Agda/TypeChecking/Monad/SizedTypes.hs view
@@ -6,6 +6,9 @@  module Agda.TypeChecking.Monad.SizedTypes where +import qualified Data.Foldable as Fold+import qualified Data.Traversable as Trav+ import Agda.Interaction.Options  import Agda.Syntax.Common@@ -23,6 +26,9 @@ import Agda.Utils.List import Agda.Utils.Maybe import Agda.Utils.Monad+import Agda.Utils.NonemptyList+import Agda.Utils.Pretty+import Agda.Utils.Singleton  #include "undefined.h" import Agda.Utils.Impossible@@ -56,7 +62,7 @@  isSizeTypeTest :: TCM (Term -> Maybe BoundedSize) isSizeTypeTest =-  flip (ifM (optSizedTypes <$> pragmaOptions)) (return $ const Nothing) $ do+  flip (ifM sizedTypesOption) (return $ const Nothing) $ do     (size, sizelt) <- getBuiltinSize     let testType (Def d [])        | Just d == size   = Just BoundedNo         testType (Def d [Apply v]) | Just d == sizelt = Just $ BoundedLt $ unArg v@@ -76,7 +82,7 @@   return (size, sizelt)  isSizeNameTest :: TCM (QName -> Bool)-isSizeNameTest = ifM (optSizedTypes <$> pragmaOptions)+isSizeNameTest = ifM sizedTypesOption   isSizeNameTestRaw   (return $ const False) @@ -92,7 +98,7 @@     Def _ [] <- primSize     Def _ [] <- primSizeInf     Def _ [] <- primSizeSuc-    optSizedTypes <$> pragmaOptions+    sizedTypesOption   `catchError` \_ -> return False  -- | Test whether the SIZELT builtin is defined.@@ -140,7 +146,7 @@ -- | The name of @SIZESUC@. sizeSucName :: TCM (Maybe QName) sizeSucName = do-  ifM (not . optSizedTypes <$> pragmaOptions) (return Nothing) $ tryMaybe $ do+  ifM (not <$> sizedTypesOption) (return Nothing) $ tryMaybe $ do     Def x [] <- primSizeSuc     return x @@ -157,10 +163,9 @@ sizeSuc_ suc v = Def suc [Apply $ defaultArg v]  -- | Transform list of terms into a term build from binary maximum.-sizeMax :: [Term] -> TCM Term+sizeMax :: NonemptyList Term -> TCM Term sizeMax vs = case vs of-  []  -> __IMPOSSIBLE__  -- we do not have a zero size-  [v] -> return v+  v :! [] -> return v   vs  -> do     Def max [] <- primSizeMax     return $ foldr1 (\ u v -> Def max $ map (Apply . defaultArg) [u,v]) vs@@ -193,6 +198,13 @@   | DOtherSize Term   deriving (Show) +instance Pretty DeepSizeView where+  pretty = \case+    DSizeInf        -> "∞"+    DSizeVar n o     -> text ("@" ++ show n) <+> "+" <+> pretty o+    DSizeMeta x es o -> pretty (MetaV x es) <+> "+" <+> pretty o+    DOtherSize t     -> pretty t+ data SizeViewComparable a   = NotComparable   | YesAbove DeepSizeView a@@ -258,38 +270,37 @@ -- * View on sizes where maximum is pulled to the top ------------------------------------------------------------------------ -type SizeMaxView = [DeepSizeView]+type SizeMaxView = NonemptyList DeepSizeView+type SizeMaxView' = [DeepSizeView]  maxViewMax :: SizeMaxView -> SizeMaxView -> SizeMaxView maxViewMax v w = case (v,w) of-  (DSizeInf : _, _) -> [DSizeInf]-  (_, DSizeInf : _) -> [DSizeInf]-  _                 -> foldr maxViewCons w v+  (DSizeInf :! _, _) -> singleton DSizeInf+  (_, DSizeInf :! _) -> singleton DSizeInf+  _                 -> Fold.foldr maxViewCons w v  -- | @maxViewCons v ws = max v ws@.  It only adds @v@ to @ws@ if it is not --   subsumed by an element of @ws@. maxViewCons :: DeepSizeView -> SizeMaxView -> SizeMaxView-maxViewCons _ [DSizeInf] = [DSizeInf]-maxViewCons DSizeInf _   = [DSizeInf]+maxViewCons _ (DSizeInf :! _) = singleton DSizeInf+maxViewCons DSizeInf _        = singleton DSizeInf maxViewCons v ws = case sizeViewComparableWithMax v ws of-  NotComparable  -> v:ws-  YesAbove _ ws' -> v:ws'+  NotComparable  -> consNe v ws+  YesAbove _ ws' -> v :! ws'   YesBelow{}     -> ws  -- | @sizeViewComparableWithMax v ws@ tries to find @w@ in @ws@ that compares with @v@ --   and singles this out. --   Precondition: @v /= DSizeInv@.-sizeViewComparableWithMax :: DeepSizeView -> SizeMaxView -> SizeViewComparable SizeMaxView-sizeViewComparableWithMax v ws = case ws of-  []     -> __IMPOSSIBLE__-  [w]    -> fmap (const []) $ sizeViewComparable v w-  (w:ws) -> case sizeViewComparable v w of-            NotComparable -> fmap (w:) $ sizeViewComparableWithMax v ws-            r  -> fmap (const ws) r+sizeViewComparableWithMax :: DeepSizeView -> SizeMaxView -> SizeViewComparable SizeMaxView'+sizeViewComparableWithMax v (w :! ws) =+  case (ws, sizeViewComparable v w) of+    (w':ws', NotComparable) -> fmap (w:) $ sizeViewComparableWithMax v (w' :! ws')+    (ws    , r)             -> fmap (const ws) r   maxViewSuc_ :: QName -> SizeMaxView -> SizeMaxView-maxViewSuc_ suc = map (sizeViewSuc_ suc)+maxViewSuc_ suc = fmap (sizeViewSuc_ suc)  unMaxView :: SizeMaxView -> TCM Term-unMaxView vs = sizeMax =<< mapM unDeepSizeView vs+unMaxView vs = sizeMax =<< Trav.mapM unDeepSizeView vs
src/full/Agda/TypeChecking/Monad/State.hs view
@@ -8,7 +8,7 @@ import Control.Arrow (first) import qualified Control.Exception as E import Control.Monad.Reader (asks)-import Control.Monad.State (put, get, gets, modify, modify')+import Control.Monad.State (put, get, gets, modify, modify', void) import Control.Monad.Trans (liftIO)  import Data.Maybe@@ -55,8 +55,8 @@  resetState :: TCM () resetState = do-    pers <- gets stPersistentState-    put $ initState { stPersistentState = pers }+    pers <- getsTC stPersistentState+    putTC $ initState { stPersistentState = pers }  -- | Resets all of the type checking state. --@@ -65,34 +65,47 @@ resetAllState :: TCM () resetAllState = do     b <- getBenchmark-    backends <- use stBackends-    put $ updatePersistentState (\ s -> s { stBenchmark = b }) initState-    stBackends .= backends--- resetAllState = put initState+    backends <- useTC stBackends+    putTC $ updatePersistentState (\ s -> s { stBenchmark = b }) initState+    stBackends `setTCLens` backends+-- resetAllState = putTC initState  -- | Restore 'TCState' after performing subcomputation. -- --   In contrast to 'Agda.Utils.Monad.localState', the 'Benchmark' --   info from the subcomputation is saved. localTCState :: TCM a -> TCM a-localTCState = disableDestructiveUpdate . bracket_ get (\ s -> do+localTCState = bracket_ getTC (\ s -> do    b <- getBenchmark-   put s+   putTC s    modifyBenchmark $ const b)  -- | Same as 'localTCState' but also returns the state in which we were just --   before reverting it. localTCStateSaving :: TCM a -> TCM (a, TCState) localTCStateSaving compute = do-  oldState <- get+  oldState <- getTC   result <- compute-  newState <- get+  newState <- getTC   do     b <- getBenchmark-    put oldState+    putTC oldState     modifyBenchmark $ const b   return (result, newState) +data SpeculateResult = SpeculateAbort | SpeculateCommit++-- | Allow rolling back the state changes of a TCM computation.+speculateTCState :: TCM (a, SpeculateResult) -> TCM a+speculateTCState m = do+  ((x, res), newState) <- localTCStateSaving m+  case res of+    SpeculateAbort  -> return x+    SpeculateCommit -> x <$ putTC newState++speculateTCState_ :: TCM SpeculateResult -> TCM ()+speculateTCState_ m = void $ speculateTCState $ ((),) <$> m+ -- | A fresh TCM instance. -- -- The computation is run in a fresh state, with the exception that@@ -103,19 +116,19 @@  freshTCM :: TCM a -> TCM (Either TCErr a) freshTCM m = do-  ps <- use lensPersistentState+  ps <- useTC lensPersistentState   let s = set lensPersistentState ps initState   r <- liftIO $ (Right <$> runTCM initEnv s m) `E.catch` (return . Left)   case r of     Right (a, s) -> do-      lensPersistentState .= s ^. lensPersistentState+      setTCLens lensPersistentState $ s ^. lensPersistentState       return $ Right a     Left err -> do       case err of         TypeError { tcErrState = s } ->-          lensPersistentState .= s ^. lensPersistentState+          setTCLens lensPersistentState $ s ^. lensPersistentState         IOException s _ _ ->-          lensPersistentState .= s ^. lensPersistentState+          setTCLens lensPersistentState $ s ^. lensPersistentState         _ -> return ()       return $ Left err @@ -132,7 +145,7 @@ updatePersistentState f s = s { stPersistentState = f (stPersistentState s) }  modifyPersistentState :: (PersistentTCState -> PersistentTCState) -> TCM ()-modifyPersistentState = modify . updatePersistentState+modifyPersistentState = modifyTC . updatePersistentState  -- | Lens for 'stAccumStatistics'. @@ -149,7 +162,7 @@  -- | Get the current scope. getScope :: TCM ScopeInfo-getScope = use stScope+getScope = useTC stScope  -- | Set the current scope. setScope :: ScopeInfo -> TCM ()@@ -157,7 +170,7 @@  -- | Modify the current scope without updating the inverse maps. modifyScope_ :: (ScopeInfo -> ScopeInfo) -> TCM ()-modifyScope_ f = stScope %= f+modifyScope_ f = stScope `modifyTCLens` f  -- | Modify the current scope. modifyScope :: (ScopeInfo -> ScopeInfo) -> TCM ()@@ -204,13 +217,13 @@ -- ** Lens for 'stSignature' and 'stImports'  modifySignature :: (Signature -> Signature) -> TCM ()-modifySignature f = stSignature %= f+modifySignature f = stSignature `modifyTCLens` f  modifyImportedSignature :: (Signature -> Signature) -> TCM ()-modifyImportedSignature f = stImports %= f+modifyImportedSignature f = stImports `modifyTCLens` f  getSignature :: TCM Signature-getSignature = use stSignature+getSignature = useTC stSignature  -- | Update a possibly imported definition. Warning: changes made to imported --   definitions (during type checking) will not persist outside the current@@ -278,6 +291,10 @@ updateFunClauses f def@Function{ funClauses = cs} = def { funClauses = f cs } updateFunClauses f _                              = __IMPOSSIBLE__ +updateCovering :: ([Closure Clause] -> [Closure Clause]) -> (Defn -> Defn)+updateCovering f def@Function{ funCovering = cs} = def { funCovering = f cs }+updateCovering f _                               = __IMPOSSIBLE__+ updateCompiledClauses :: (Maybe CompiledClauses -> Maybe CompiledClauses) -> (Defn -> Defn) updateCompiledClauses f def@Function{ funCompiled = cc} = def { funCompiled = f cc } updateCompiledClauses f _                              = __IMPOSSIBLE__@@ -297,16 +314,16 @@ -- implementation of 'setTopLevelModule' should be changed.  setTopLevelModule :: C.QName -> TCM ()-setTopLevelModule x = stFreshNameId .= NameId 0 (hashString $ prettyShow x)+setTopLevelModule x = stFreshNameId `setTCLens` NameId 0 (hashString $ prettyShow x)  -- | Use a different top-level module for a computation. Used when generating --   names for imported modules. withTopLevelModule :: C.QName -> TCM a -> TCM a withTopLevelModule x m = do-  next <- use stFreshNameId+  next <- useTC stFreshNameId   setTopLevelModule x   y <- m-  stFreshNameId .= next+  stFreshNameId `setTCLens` next   return y  ---------------------------------------------------------------------------@@ -315,36 +332,8 @@  addForeignCode :: BackendName -> String -> TCM () addForeignCode backend code = do-  r <- asks envRange  -- can't use TypeChecking.Monad.Trace.getCurrentRange without cycle-  stForeignCode . key backend %= Just . (ForeignCode r code :) . fromMaybe []-------------------------------------------------------------------------------- * Temporary: Haskell imports---   These will go away when we remove the IMPORT and HASKELL pragmas in---   favour of the FOREIGN pragma.------------------------------------------------------------------------------addDeprecatedForeignCode :: String -> BackendName -> String -> TCM ()-addDeprecatedForeignCode old backend code = do-  warning $ DeprecationWarning (unwords ["The", old, "pragma"])-                               foreignPragma "2.6"-  addForeignCode backend code-  where-    spc | length (lines code) > 1 = "\n"-        | otherwise               = " "-    foreignPragma =-      "{-# FOREIGN " ++ backend ++ spc ++ code ++ spc ++ "#-}"---- | Tell the compiler to import the given Haskell module.-addHaskellImport :: String -> TCM ()-addHaskellImport i = addDeprecatedForeignCode "IMPORT" ghcBackendName $ "import qualified " ++ i---- | Tell the compiler to import the given Haskell module.-addHaskellImportUHC :: String -> TCM ()-addHaskellImportUHC i = addDeprecatedForeignCode "IMPORT_UHC" ghcBackendName $ "__IMPORT__ " ++ i--addInlineHaskell :: String -> TCM ()-addInlineHaskell s = addDeprecatedForeignCode "HASKELL" ghcBackendName s+  r <- asksTC envRange  -- can't use TypeChecking.Monad.Trace.getCurrentRange without cycle+  modifyTCLens (stForeignCode . key backend) $ Just . (ForeignCode r code :) . fromMaybe []  --------------------------------------------------------------------------- -- * Interaction output callback@@ -352,11 +341,11 @@  getInteractionOutputCallback :: TCM InteractionOutputCallback getInteractionOutputCallback-  = gets $ stInteractionOutputCallback . stPersistentState+  = getsTC $ stInteractionOutputCallback . stPersistentState  appInteractionOutputCallback :: Response -> TCM () appInteractionOutputCallback r-  = getInteractionOutputCallback >>= \ cb -> liftIO $ cb r+  = getInteractionOutputCallback >>= \ cb -> cb r  setInteractionOutputCallback :: InteractionOutputCallback -> TCM () setInteractionOutputCallback cb@@ -367,17 +356,17 @@ ---------------------------------------------------------------------------  getPatternSyns :: TCM PatternSynDefns-getPatternSyns = use stPatternSyns+getPatternSyns = useTC stPatternSyns  setPatternSyns :: PatternSynDefns -> TCM () setPatternSyns m = modifyPatternSyns (const m)  -- | Lens for 'stPatternSyns'. modifyPatternSyns :: (PatternSynDefns -> PatternSynDefns) -> TCM ()-modifyPatternSyns f = stPatternSyns %= f+modifyPatternSyns f = stPatternSyns `modifyTCLens` f  getPatternSynImports :: TCM PatternSynDefns-getPatternSynImports = use stPatternSynImports+getPatternSynImports = useTC stPatternSynImports  -- | Get both local and imported pattern synonyms getAllPatternSyns :: TCM PatternSynDefns@@ -415,11 +404,11 @@  -- | Lens getter for 'Benchmark' from 'TCM'. getBenchmark :: TCM Benchmark-getBenchmark = gets $ theBenchmark+getBenchmark = getsTC $ theBenchmark  -- | Lens modify for 'Benchmark'. modifyBenchmark :: (Benchmark -> Benchmark) -> TCM ()-modifyBenchmark = modify' . updateBenchmark+modifyBenchmark = modifyTC' . updateBenchmark  --------------------------------------------------------------------------- -- * Instance definitions@@ -431,19 +420,19 @@   let itable = Map.fromListWith Set.union                [ (c, Set.singleton i)                | (i, Defn{ defInstance = Just c }) <- HMap.toList $ sig ^. sigDefinitions ]-  stImportedInstanceDefs %= Map.unionWith Set.union itable+  stImportedInstanceDefs `modifyTCLens` Map.unionWith Set.union itable  -- | Lens for 'stInstanceDefs'. updateInstanceDefs :: (TempInstanceTable -> TempInstanceTable) -> (TCState -> TCState) updateInstanceDefs = over stInstanceDefs  modifyInstanceDefs :: (TempInstanceTable -> TempInstanceTable) -> TCM ()-modifyInstanceDefs = modify . updateInstanceDefs+modifyInstanceDefs = modifyTC . updateInstanceDefs  getAllInstanceDefs :: TCM TempInstanceTable getAllInstanceDefs = do-  (table,xs) <- use stInstanceDefs-  itable <- use stImportedInstanceDefs+  (table,xs) <- useTC stInstanceDefs+  itable <- useTC stImportedInstanceDefs   let !table' = Map.unionWith Set.union itable table   return (table', xs) 
src/full/Agda/TypeChecking/Monad/Statistics.hs view
@@ -23,11 +23,11 @@  -- | Get the statistics. getStatistics :: TCM Statistics-getStatistics = use stStatistics+getStatistics = useTC stStatistics  -- | Modify the statistics via given function. modifyStatistics :: (Statistics -> Statistics) -> TCM ()-modifyStatistics f = stStatistics %= f+modifyStatistics f = stStatistics `modifyTCLens` f  -- | Increase specified counter by @1@. tick :: String -> TCM ()
src/full/Agda/TypeChecking/Monad/Trace.hs view
@@ -57,21 +57,21 @@   -- -- outside the current file   verboseS "check.ranges" 90 $     Strict.whenJust (rangeFile callRange) $ \f -> do-      currentFile <- asks envCurrentPath+      currentFile <- asksTC envCurrentPath       when (currentFile /= Just f) $ do         reportSLn "check.ranges" 90 $           prettyShow call ++           " is setting the current range to " ++ show callRange ++           " which is outside of the current file " ++ show currentFile   cl <- liftTCM $ buildClosure call-  let trace = local $ foldr (.) id $+  let trace = localTC $ foldr (.) id $         [ \e -> e { envCall = Just cl } | interestingCall cl ] ++         [ \e -> e { envHighlightingRange = callRange }           | callRange /= noRange && highlightCall call || isNoHighlighting call ] ++         [ \e -> e { envRange = callRange } | callRange /= noRange ]-  wrap <- ifM (do l <- envHighlightingLevel <$> ask+  wrap <- ifM (do l <- envHighlightingLevel <$> askTC                   return (l == Interactive && highlightCall call))-              (do oldRange <- envHighlightingRange <$> ask+              (do oldRange <- envHighlightingRange <$> askTC                   return $ highlightAsTypeChecked oldRange callRange)               (return id)   wrap $ trace m@@ -94,6 +94,7 @@     CheckDataDef{}            -> True     CheckRecDef{}             -> True     CheckConstructor{}        -> True+    CheckConstructorFitsIn{}  -> False     CheckFunDefCall{}         -> True     CheckPragma{}             -> True     CheckPrimitive{}          -> True@@ -113,7 +114,7 @@   isNoHighlighting _                = False  getCurrentRange :: (MonadTCM tcm, MonadDebug tcm) => tcm Range-getCurrentRange = asks envRange+getCurrentRange = asksTC envRange  -- | Sets the current range (for error messages etc.) to the range --   of the given object, if it has a range (i.e., its range is not 'noRange').
+ src/full/Agda/TypeChecking/Names.hs view
@@ -0,0 +1,187 @@+{-# LANGUAGE CPP                        #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE ScopedTypeVariables        #-}+{-# LANGUAGE StandaloneDeriving         #-}+{-# LANGUAGE UndecidableInstances       #-}++{-| EDSL to construct terms without touching De Bruijn indices.++e.g. if given t, u :: Term, Γ ⊢ t, u : A, we can build "λ f. f t u" like this:++runNames [] $ do+  -- @open@ binds @t@ and @u@ to computations that know how to weaken themselves in+  -- an extended context++  [t,u] <- mapM open [t,u]++  -- @lam@ gives the illusion of HOAS by providing f as a computation+  -- It also extends the internal context with the name "f", so that+  -- @t@ and @u@ will get weakened in the body.+  -- Then we finish the job using the (<@>) combinator from Agda.TypeChecking.Primitive++  lam "f" $ \ f -> f <@> t <@> u++-}+module Agda.TypeChecking.Names where++import Control.Monad+import Control.Applicative++#if __GLASGOW_HASKELL__ >= 800+import qualified Control.Monad.Fail as Fail+#endif++import Control.Monad.Identity+import Control.Monad.Reader+import Control.Monad.State+import Control.Monad.Trans++import Data.Char+import Data.Map (Map)+import qualified Data.Map as Map+import Data.Maybe+import Data.List+import Data.Traversable (traverse)+import Data.Monoid (mempty)++import Agda.Interaction.Options++import Agda.Syntax.Position+import Agda.Syntax.Common hiding (Nat)+import Agda.Syntax.Internal+import Agda.Syntax.Internal.Generic (TermLike(..))+import Agda.Syntax.Literal+import Agda.Syntax.Concrete.Pretty ()++import Agda.TypeChecking.Monad hiding (getConstInfo, typeOfConst)+import qualified Agda.TypeChecking.Monad as TCM+import Agda.TypeChecking.Monad.Builtin+import Agda.TypeChecking.Reduce+import Agda.TypeChecking.Reduce.Monad+import Agda.TypeChecking.Substitute+import Agda.TypeChecking.Errors+import Agda.TypeChecking.Level+import Agda.TypeChecking.Quote (QuotingKit, quoteTermWithKit, quoteTypeWithKit, quoteClauseWithKit, quotingKit)+import Agda.TypeChecking.Pretty ()  -- instances only+import Agda.TypeChecking.Free++import Agda.Utils.Monad+import Agda.Utils.Pretty (pretty)+import Agda.Utils.Maybe++#include "undefined.h"+import Agda.Utils.Impossible+import Debug.Trace++instance HasBuiltins m => HasBuiltins (NamesT m) where+  getBuiltinThing b = lift $ getBuiltinThing b++newtype NamesT m a = NamesT { unName :: ReaderT Names m a }+  deriving ( Functor+           , Applicative+           , Monad+#if __GLASGOW_HASKELL__ >= 800+           , Fail.MonadFail+#endif+           , MonadTrans+           , MonadState s+           , MonadIO+           , HasOptions+           , MonadDebug+           , MonadTCEnv+           , MonadTCState+           , MonadTCM+           , ReadTCState+           , MonadReduce+           )++-- deriving instance MonadState s m => MonadState s (NamesT m)++type Names = [String]++runNamesT :: Names -> NamesT m a -> m a+runNamesT n m = runReaderT (unName m) n++runNames :: Names -> NamesT Identity a -> a+runNames n m = runIdentity (runNamesT n m)++currentCxt :: Monad m => NamesT m Names+currentCxt = NamesT ask++cxtSubst :: Monad m => Names -> NamesT m (Substitution' a)+cxtSubst ctx = do+  ctx' <- currentCxt+  if (ctx `isSuffixOf` ctx')+     then return $ raiseS (genericLength ctx' - genericLength ctx)+     else fail $ "thing out of context (" ++ show ctx ++ " is not a sub context of " ++ show ctx' ++ ")"++inCxt :: (Monad m, Subst t a) => Names -> a -> NamesT m a+inCxt ctx a = do+  sigma <- cxtSubst ctx+  return $ applySubst sigma a++-- closed terms+cl' :: Applicative m => a -> NamesT m a+cl' = pure++cl :: Monad m => m a -> NamesT m a+cl = lift++open :: ( Monad m+#if __GLASGOW_HASKELL__ <= 708+        , Applicative m+#endif+        , Subst t a+        ) => a -> NamesT m (NamesT m a)+open a = do+  ctx <- NamesT ask+  pure $ inCxt ctx a++bind' :: (Monad m, Subst t' b, DeBruijn b, Subst t a, Free a) => ArgName -> (NamesT m b -> NamesT m a) -> NamesT m a+bind' n f = do+  cxt <- NamesT ask+  (NamesT . local (n:) . unName $ f (inCxt (n:cxt) (deBruijnVar 0)))++bind :: ( Monad m+#if __GLASGOW_HASKELL__ <= 708+        , Functor m+#endif+        , Subst t' b+        , DeBruijn b+        , Subst t a+        , Free a+        ) =>+        ArgName -> (NamesT m b -> NamesT m a) -> NamesT m (Abs a)+bind n f = Abs n <$> bind' n f++#if __GLASGOW_HASKELL__ <= 708+glam :: (Functor m, Monad m)+#else+glam :: Monad m+#endif+     => ArgInfo -> ArgName -> (NamesT m Term -> NamesT m Term) -> NamesT m Term+glam info n f = Lam info <$> bind n f++glamN :: (Functor m, Monad m) =>+         [Arg ArgName] -> (NamesT m Args -> NamesT m Term) -> NamesT m Term+glamN [] f = f $ pure []+glamN (Arg i n:ns) f = glam i n $ \ x -> glamN ns (\ xs -> f ((:) <$> (Arg i <$> x) <*> xs))++#if __GLASGOW_HASKELL__ <= 708+lam :: (Functor m, Monad m)+#else+lam :: Monad m+#endif+    => ArgName -> (NamesT m Term -> NamesT m Term) -> NamesT m Term+lam n f = glam defaultArgInfo n f++#if __GLASGOW_HASKELL__ <= 708+ilam :: (Functor m, Monad m)+#else+ilam :: Monad m+#endif+    => ArgName -> (NamesT m Term -> NamesT m Term) -> NamesT m Term+ilam n f = glam (setRelevance Irrelevant defaultArgInfo) n f
src/full/Agda/TypeChecking/Patterns/Abstract.hs view
@@ -41,9 +41,9 @@       let zero  = A.ConP cinfo (unambiguous $ setRange r $ conName z) []           suc p = A.ConP cinfo (unambiguous $ setRange r $ conName s) [defaultNamedArg p]           info  = A.PatRange r-          cinfo = A.ConPatInfo ConOCon info False+          cinfo = A.ConPatInfo ConOCon info ConPatEager           p'    = foldr ($) zero $ List.genericReplicate n suc-      return $ foldr (A.AsP info . A.BindName) p' xs+      return $ foldr (A.AsP info) p' (map A.BindName xs)   _ -> return p    where
src/full/Agda/TypeChecking/Patterns/Match.hs view
@@ -20,6 +20,7 @@ import Agda.TypeChecking.Reduce.Monad import Agda.TypeChecking.Substitute import Agda.TypeChecking.Monad+import Agda.TypeChecking.Monad.Builtin (getName',builtinHComp) import Agda.TypeChecking.Pretty import Agda.TypeChecking.Records import Agda.TypeChecking.Datatypes@@ -133,6 +134,16 @@               DontKnow m -> return (DontKnow m                             , vs1)       _ -> __IMPOSSIBLE__ ++-- TODO refactor matchPattern* to work with Elim instead.+mergeElim :: Elim -> Arg Term -> Elim+mergeElim Apply{} arg = Apply arg+mergeElim (IApply x y _) arg = IApply x y (unArg arg)+mergeElim Proj{} _ = __IMPOSSIBLE__++mergeElims :: [Elim] -> [Arg Term] -> [Elim]+mergeElims = zipWith mergeElim+ -- | @matchCopatterns ps es@ matches spine @es@ against copattern spine @ps@. -- --   Returns 'Yes' and a substitution for the pattern variables@@ -151,9 +162,9 @@                 -> ReduceM (Match Term, [Elim]) matchCopatterns ps vs = do   traceSDoc "tc.match" 50-    (vcat [ text "matchCopatterns"-          , nest 2 $ text "ps =" <+> fsep (punctuate comma $ map (prettyTCM . namedArg) ps)-          , nest 2 $ text "vs =" <+> fsep (punctuate comma $ map prettyTCM vs)+    (vcat [ "matchCopatterns"+          , nest 2 $ "ps =" <+> fsep (punctuate comma $ map (prettyTCM . namedArg) ps)+          , nest 2 $ "vs =" <+> fsep (punctuate comma $ map prettyTCM vs)           ]) $ do   -- Buggy, see issue 1124:   -- mapFst mconcat . unzip <$> zipWithM' (matchCopattern . namedArg) ps vs@@ -172,15 +183,22 @@ matchCopattern ProjP{} elim@Apply{}   = return (No , elim) matchCopattern _       elim@Proj{}    = return (No , elim) matchCopattern p       (Apply v) = mapSnd Apply <$> matchPattern p v+matchCopattern p       e@(IApply x y r) = mapSnd (mergeElim e) <$> matchPattern p (defaultArg r)  matchPatterns :: [NamedArg DeBruijnPattern]               -> [Arg Term]               -> ReduceM (Match Term, [Arg Term]) matchPatterns ps vs = do+  reportSDoc "tc.match" 20 $+     vcat [ "matchPatterns"+          , nest 2 $ "ps =" <+> prettyTCMPatternList ps+          , nest 2 $ "vs =" <+> fsep (punctuate comma $ map prettyTCM vs)+          ]+   traceSDoc "tc.match" 50-    (vcat [ text "matchPatterns"-          , nest 2 $ text "ps =" <+> fsep (punctuate comma $ map (text . show) ps)-          , nest 2 $ text "vs =" <+> fsep (punctuate comma $ map prettyTCM vs)+    (vcat [ "matchPatterns"+          , nest 2 $ "ps =" <+> fsep (punctuate comma $ map (text . show) ps)+          , nest 2 $ "vs =" <+> fsep (punctuate comma $ map prettyTCM vs)           ]) $ do   -- Buggy, see issue 1124:   -- (ms,vs) <- unzip <$> zipWithM' (matchPattern . namedArg) ps vs@@ -193,6 +211,8 @@              -> ReduceM (Match Term, Arg Term) matchPattern p u = case (p, u) of   (ProjP{}, _            ) -> __IMPOSSIBLE__+  (IApplyP _ _ _ x , arg ) -> return (Yes NoSimplification entry, arg)+    where entry = singleton (dbPatVarIndex x, arg)   (VarP _ x , arg          ) -> return (Yes NoSimplification entry, arg)     where entry = singleton (dbPatVarIndex x, arg)   (DotP _ _ , arg@(Arg _ v)) -> return (Yes NoSimplification empty, arg)@@ -210,9 +230,9 @@    -- Case constructor pattern.   (ConP c cpi ps, Arg info v) -> do-    if isNothing $ conPRecord cpi then fallback else do+    if isNothing $ conPRecord cpi then fallback c ps (Arg info v) else do     isEtaRecordCon (conName c) >>= \case-      Nothing -> fallback+      Nothing -> fallback c ps (Arg info v)       Just fs -> do         -- Case: Eta record constructor.         -- This case is necessary if we want to use the clauses before@@ -229,9 +249,33 @@             r@Record{ recFields = fs } | YesEta <- recEtaEquality r -> return $ Just fs             _ -> return Nothing         _ -> __IMPOSSIBLE__-+  (DefP o q ps, v) -> do+    let f (Def q' vs) | q == q' = Just (Def q, vs)+        f _                     = Nothing+    fallback' f ps v+ where     -- Default: not an eta record constructor.-    fallback = do+  fallback c ps v = do+    isMatchable <- isMatchable'+    let f (Con c' ci' vs) | c == c' = Just (Con c' ci',vs)+        f _                         = Nothing+    fallback' f ps v++  -- Regardless of blocking, constructors and a properly applied @hcomp@+  -- can be matched on.+  isMatchable' = do+    mhcomp <- getName' builtinHComp+    return $ \ r ->+      case ignoreBlocking r of+        t@Con{} -> Just t+        t@(Def q [l,a,phi,u,u0]) | Just q == mhcomp+                -> Just t+        _       -> Nothing++  -- DefP hcomp and ConP matching.+  fallback' mtc ps (Arg info v) = do+        isMatchable <- isMatchable'+         w <- reduceB' v         -- Unfold delayed (corecursive) definitions one step. This is         -- only necessary if c is a coinductive constructor, but@@ -255,12 +299,15 @@                _ -> return w         let v = ignoreBlocking w             arg = Arg info v  -- the reduced argument+         case w of-          NotBlocked _ (Con c' ci vs)-            | c == c'               -> do-                (m, vs) <- yesSimplification <$> matchPatterns ps (fromMaybe __IMPOSSIBLE__ $ allApplyElims vs)-                return (m, Arg info $ Con c' ci (map Apply vs))-            | otherwise             -> return (No                          , arg)+          b | Just t <- isMatchable b ->+            case mtc t of+              Just (bld, vs) -> do+                (m, vs1) <- yesSimplification <$> matchPatterns ps (fromMaybe __IMPOSSIBLE__ $ allApplyElims vs)+                return (m, Arg info $ bld (mergeElims vs vs1))+              Nothing+                                    -> return (No                          , arg)           NotBlocked _ (MetaV x vs) -> return (DontKnow $ Blocked x ()     , arg)           Blocked x _               -> return (DontKnow $ Blocked x ()     , arg)           NotBlocked r _            -> return (DontKnow $ NotBlocked r' () , arg)
src/full/Agda/TypeChecking/Polarity.hs view
@@ -13,6 +13,7 @@ import Agda.Syntax.Internal.Pattern  import Agda.TypeChecking.Monad+import Agda.TypeChecking.Datatypes (getNumberOfParameters) import Agda.TypeChecking.Pretty import Agda.TypeChecking.SizedTypes import Agda.TypeChecking.Substitute@@ -142,9 +143,9 @@   -- t <- instantiateFull t -- Andreas, 2014-04-11 Issue 1099: needed for   --                        -- variable occurrence test in  dependentPolarity.   reportSDoc "tc.polarity.set" 15 $-    text "Refining polarity with type " <+> prettyTCM t+    "Refining polarity with type " <+> prettyTCM t   reportSDoc "tc.polarity.set" 60 $-    text "Refining polarity with type (raw): " <+> (text .show) t+    "Refining polarity with type (raw): " <+> (text .show) t    pol <- dependentPolarity t (enablePhantomTypes (theDef def) pol1) pol1   reportSLn "tc.polarity.set" 10 $ "Polarity of " ++ prettyShow x ++ ": " ++ prettyShow pol@@ -196,8 +197,8 @@ dependentPolarity t []     (_ : _)     = __IMPOSSIBLE__ dependentPolarity t (q:qs) pols@(p:ps) = do   t <- reduce $ unEl t-  reportSDoc "tc.polarity.dep" 20 $ text "dependentPolarity t = " <+> prettyTCM t-  reportSDoc "tc.polarity.dep" 70 $ text "dependentPolarity t = " <+> (text . show) t+  reportSDoc "tc.polarity.dep" 20 $ "dependentPolarity t = " <+> prettyTCM t+  reportSDoc "tc.polarity.dep" 70 $ "dependentPolarity t = " <+> (text . show) t   case t of     Pi dom b -> do       ps <- underAbstraction dom b $ \ c -> dependentPolarity c qs ps@@ -235,7 +236,7 @@ sizePolarity :: QName -> [Polarity] -> TCM [Polarity] sizePolarity d pol0 = do   let exit = return pol0-  ifM (not . optSizedTypes <$> pragmaOptions) exit $ do+  ifNotM sizedTypesOption exit $ {- else -} do     def <- getConstInfo d     case theDef def of       Datatype{ dataPars = np, dataCons = cons } -> do@@ -243,7 +244,7 @@             (parTel, ixTel) = splitAt np $ telToList tel         case ixTel of           []                 -> exit  -- No size index-          Dom _ (_, a) : _ -> ifM ((/= Just BoundedNo) <$> isSizeType a) exit $ do+          Dom{unDom = (_,a)} : _ -> ifM ((/= Just BoundedNo) <$> isSizeType a) exit $ do             -- we assume the size index to be 'Covariant' ...             let pol   = take np pol0                 polCo = pol ++ [Covariant]@@ -271,13 +272,13 @@                           -- check that the size argument appears in the                           -- right spot in the target type                           let sizeArg = size tel-                              isLin = addContext conTel $ checkSizeIndex d np sizeArg target+                              isLin = addContext conTel $ checkSizeIndex d sizeArg target                            ok <- isPos `and2M` isLin                           reportSDoc "tc.polarity.size" 15 $-                            text "constructor" <+> prettyTCM c <+>+                            "constructor" <+> prettyTCM c <+>                             text (if ok then "passes" else "fails") <+>-                            text "size polarity check"+                            "size polarity check"                           return ok              ifNotM (andM $ map check cons)@@ -290,27 +291,27 @@                 return polCo       _ -> exit --- | @checkSizeIndex d np i a@ checks that constructor target type @a@---   has form @d ps (↑ⁿ i) idxs@ where @|ps| = np@.+-- | @checkSizeIndex d i a@ checks that constructor target type @a@+--   has form @d ps (↑ⁿ i) idxs@ where @|ps| = np(d)@. -- --   Precondition: @a@ is reduced and of form @d ps idxs0@.-checkSizeIndex :: QName -> Nat -> Nat -> Type -> TCM Bool-checkSizeIndex d np i a = do+checkSizeIndex :: QName -> Nat -> Type -> TCM Bool+checkSizeIndex d i a = do   reportSDoc "tc.polarity.size" 15 $ withShowAllArguments $ vcat-    [ text "checking that constructor target type " <+> prettyTCM a-    , text "  is data type " <+> prettyTCM d-    , text "  and has size index (successor(s) of) " <+> prettyTCM (var i)+    [ "checking that constructor target type " <+> prettyTCM a+    , "  is data type " <+> prettyTCM d+    , "  and has size index (successor(s) of) " <+> prettyTCM (var i)     ]   case unEl a of     Def d0 es -> do       whenNothingM (sameDef d d0) __IMPOSSIBLE__+      np <- fromMaybe __IMPOSSIBLE__ <$> getNumberOfParameters d0+      let (pars, Apply ix : ixs) = splitAt np es       s <- deepSizeView $ unArg ix       case s of         DSizeVar j _ | i == j           -> return $ not $ freeIn i (pars ++ ixs)         _ -> return False-      where-        (pars, Apply ix : ixs) = splitAt np es     _ -> __IMPOSSIBLE__  -- | @polarities i a@ computes the list of polarities of de Bruijn index @i@@@ -349,6 +350,7 @@ instance HasPolarity a => HasPolarity (Elim' a) where   polarities i Proj{}    = return []   polarities i (Apply a) = polarities i a+  polarities i (IApply x y a) = polarities i (x,(y,a))  instance HasPolarity Term where   polarities i v = do@@ -370,6 +372,7 @@     Sort s     -> return [] -- polarities i s -- return []     MetaV _ ts -> map (const Invariant) <$> polarities i ts     DontCare t -> polarities i t -- return []+    Dummy{}    -> return []  instance HasPolarity Level where   polarities i (Max as) = polarities i as
src/full/Agda/TypeChecking/Positivity.hs view
@@ -26,6 +26,7 @@ import Data.Map (Map) import qualified Data.Map as Map import Data.Monoid (mconcat)+import Data.Sequence (Seq) import qualified Data.Sequence as DS import Data.Set (Set) import qualified Data.Set as Set@@ -74,31 +75,31 @@ --   Also add information about positivity and recursivity of records --   to the signature. checkStrictlyPositive :: Info.MutualInfo -> Set QName -> TCM ()-checkStrictlyPositive mi qset = disableDestructiveUpdate $ do+checkStrictlyPositive mi qset = do   -- compute the occurrence graph for qs   let qs = Set.toList qset-  reportSDoc "tc.pos.tick" 100 $ text "positivity of" <+> prettyTCM qs+  reportSDoc "tc.pos.tick" 100 $ "positivity of" <+> prettyTCM qs   g <- buildOccurrenceGraph qset   let (gstar, sccs) =         Graph.gaussJordanFloydWarshallMcNaughtonYamada $ fmap occ g-  reportSDoc "tc.pos.tick" 100 $ text "constructed graph"+  reportSDoc "tc.pos.tick" 100 $ "constructed graph"   reportSLn "tc.pos.graph" 5 $ "Positivity graph: N=" ++ show (size $ Graph.nodes g) ++                                " E=" ++ show (length $ Graph.edges g)   reportSDoc "tc.pos.graph" 10 $ vcat-    [ text "positivity graph for" <+> (fsep $ map prettyTCM qs)+    [ "positivity graph for" <+> (fsep $ map prettyTCM qs)     , nest 2 $ prettyTCM g     ]   reportSLn "tc.pos.graph" 5 $     "Positivity graph (completed): E=" ++ show (length $ Graph.edges gstar)   reportSDoc "tc.pos.graph" 50 $ vcat-    [ text "transitive closure of positivity graph for" <+>+    [ "transitive closure of positivity graph for" <+>       prettyTCM qs     , nest 2 $ prettyTCM gstar     ]    -- remember argument occurrences for qs in the signature   setArgOccs qset qs gstar-  reportSDoc "tc.pos.tick" 100 $ text "set args"+  reportSDoc "tc.pos.tick" 100 $ "set args"    -- check positivity for all strongly connected components of the graph for qs   reportSDoc "tc.pos.graph.sccs" 10 $ do@@ -122,28 +123,31 @@     AcyclicSCC (ArgNode{}) -> return ()     CyclicSCC scc          -> setMut [ q | DefNode q <- scc ]   mapM_ (checkPos g gstar) qs-  reportSDoc "tc.pos.tick" 100 $ text "checked positivity"+  reportSDoc "tc.pos.tick" 100 $ "checked positivity"    where-    checkPos :: Graph Node Edge ->+    checkPos :: Graph Node (Edge OccursWhere) ->                 Graph Node Occurrence ->                 QName -> TCM ()     checkPos g gstar q = inConcreteOrAbstractMode q $ \ _def -> do       -- we check positivity only for data or record definitions       whenJustM (isDatatype q) $ \ dr -> do-        reportSDoc "tc.pos.check" 10 $ text "Checking positivity of" <+> prettyTCM q+        reportSDoc "tc.pos.check" 10 $ "Checking positivity of" <+> prettyTCM q          let loop :: Maybe Occurrence             loop = Graph.lookup (DefNode q) (DefNode q) gstar +            g' :: Graph Node (Edge (Seq OccursWhere))+            g' = fmap (fmap DS.singleton) g+             -- Note the property-            -- Agda.Utils.Graph.AdjacencyMap.Unidirectional.Tests.prop_productOfEdgesInBoundedWalk,+            -- Internal.Utils.Graph.AdjacencyMap.Unidirectional.prop_productOfEdgesInBoundedWalk,             -- which relates productOfEdgesInBoundedWalk to             -- gaussJordanFloydWarshallMcNaughtonYamada.              reason bound =               case productOfEdgesInBoundedWalk-                     occ g (DefNode q) (DefNode q) bound of+                     occ g' (DefNode q) (DefNode q) bound of                 Just (Edge _ how) -> how                 Nothing           -> __IMPOSSIBLE__ @@ -181,8 +185,8 @@             -- unless it is coinductive or a no-eta-equality record.             Nothing -> do               reportSDoc "tc.pos.record" 10 $-                text "record type " <+> prettyTCM q <+>-                text "is not recursive"+                "record type " <+> prettyTCM q <+>+                "is not recursive"               nonRecursiveRecord q             _ -> return () @@ -198,8 +202,8 @@         unlessM (isJust . recInduction . theDef <$> getConstInfo q) $           setCurrentRange (nameBindingSite $ qnameName q) $             typeError . GenericDocError =<<-              text "Recursive record" <+> prettyTCM q <+>-              text "needs to be declared as either inductive or coinductive"+              "Recursive record" <+> prettyTCM q <+>+              "needs to be declared as either inductive or coinductive"      occ (Edge o _) = o @@ -232,8 +236,8 @@       -- -- Compute a map from each name in q to the maximal argument index       -- let maxs = Map.fromListWith max       --      [ (q, i) | ArgNode q i <- Set.toList $ Graph.nodes g, q `Set.member` qset ]-      forM_ qs $ \ q -> inConcreteOrAbstractMode q $ \ def -> do-        reportSDoc "tc.pos.args" 10 $ text "checking args of" <+> prettyTCM q+      forM_ qs $ \ q -> inConcreteOrAbstractMode q $ \ def -> when (hasDefinition $ theDef def) $ do+        reportSDoc "tc.pos.args" 10 $ "checking args of" <+> prettyTCM q         n <- getDefArity def         -- If there is no outgoing edge @ArgNode q i@, all @n@ arguments are @Unused@.         -- Otherwise, we obtain the occurrences from the Graph.@@ -241,13 +245,29 @@             args = -- caseMaybe (Map.lookup q maxs) (replicate n Unused) $ \ m ->               map findOcc [0 .. n-1]  -- [0 .. max m (n - 1)] -- triggers issue #3049         reportSDoc "tc.pos.args" 10 $ sep-          [ text "args of" <+> prettyTCM q <+> text "="+          [ "args of" <+> prettyTCM q <+> "="           , nest 2 $ prettyList $ map prettyTCM args           ]         -- The list args can take a long time to compute, but contains         -- small elements, and is stored in the interface (right?), so         -- it is computed deep-strictly.         setArgOccurrences q $!! args+      where+      -- Andreas, 2018-11-23, issue #3404+      -- Only assign argument occurrences to things which have a definition.+      -- Things without a definition would be judged "constant" in all arguments,+      -- since no occurrence could possibly be found, naturally.+      hasDefinition :: Defn -> Bool+      hasDefinition = \case+        Axiom{}            -> False+        DataOrRecSig{}     -> False+        GeneralizableVar{} -> False+        AbstractDefn{}     -> False+        Primitive{}        -> False+        Constructor{}      -> False+        Function{}         -> True+        Datatype{}         -> True+        Record{}           -> True  getDefArity :: Definition -> TCM Int getDefArity def = do@@ -259,78 +279,6 @@   -- lazily.   subtract dropped . arity <$> instantiateFull (defType def) --- Operations on occurrences ----------------------------------------------- See also Agda.TypeChecking.Positivity.Occurrence.--(>*<) :: OccursWhere -> OccursWhere -> OccursWhere-Unknown      >*< _            = Unknown-Known _    _ >*< Unknown      = Unknown-Known r1 os1 >*< Known r2 os2 = Known (fuseRange r1 r2) (os1 DS.>< os2)--instance PrettyTCM OccursWhere where-  prettyTCM o = prettyOs $ map maxOneLeftOfArrow $ uniq $ splitOnDef o-    where-      nth 0 = pwords "first"-      nth 1 = pwords "second"-      nth 2 = pwords "third"-      nth n = pwords $ show (n + 1) ++ "th"--      -- remove consecutive duplicates-      uniq = map head . List.group--      prettyOs [] = __IMPOSSIBLE__-      prettyOs [o] = prettyO o <> text "."-      prettyOs (o:os) = prettyO o <> text ", which occurs" $$ prettyOs os--      prettyO Unknown      = empty-      prettyO (Known _ ws) =-        Fold.foldrM (\w d -> return d $$ fsep (prettyW w)) empty ws--      prettyW w = case w of-        LeftOfArrow  -> pwords "to the left of an arrow"-        DefArg q i   -> pwords "in the" ++ nth i ++ pwords "argument to" ++-                          [prettyTCM q]-        UnderInf     -> pwords "under" ++-                        [do -- this cannot fail if an 'UnderInf' has been generated-                            Def inf _ <- primInf-                            prettyTCM inf]-        VarArg       -> pwords "in an argument to a bound variable"-        MetaArg      -> pwords "in an argument to a metavariable"-        ConArgType c -> pwords "in the type of the constructor" ++ [prettyTCM c]-        IndArgType c -> pwords "in an index of the target type of the constructor" ++ [prettyTCM c]-        InClause i   -> pwords "in the" ++ nth i ++ pwords "clause"-        Matched      -> pwords "as matched against"-        InDefOf d    -> pwords "in the definition of" ++ [prettyTCM d]--      maxOneLeftOfArrow Unknown      = Unknown-      maxOneLeftOfArrow (Known r ws) = Known r $-        noArrows-          DS.><-        case DS.viewl startsWithArrow of-          DS.EmptyL  -> DS.empty-          w DS.:< ws -> w DS.<| DS.filter (not . isArrow) ws-        where-        (noArrows, startsWithArrow) = DS.breakl isArrow ws--        isArrow LeftOfArrow{} = True-        isArrow _             = False--      splitOnDef Unknown      = [Unknown]-      splitOnDef (Known r ws) = split ws DS.empty-        where-        split ws acc = case DS.viewl ws of-          w@InDefOf{} DS.:< ws -> let rest = split ws (DS.singleton w) in-                                  if DS.null acc-                                  then rest-                                  else Known r acc : rest-          w           DS.:< ws -> split ws (acc DS.|> w)-          DS.EmptyL            -> [Known r acc]--instance Sized OccursWhere where-  size Unknown      = 1-  size (Known _ ws) = 1 + size ws- -- Computing occurrences --------------------------------------------------  data Item = AnArg Nat@@ -356,7 +304,7 @@ data OccurrencesBuilder'   = Concat' [OccurrencesBuilder']   | OccursAs' Where OccurrencesBuilder'-  | OccursHere' Item OccursWhere+  | OccursHere' Item  emptyOB :: OccurrencesBuilder emptyOB = Concat []@@ -364,60 +312,51 @@ (>+<) :: OccurrencesBuilder -> OccurrencesBuilder -> OccurrencesBuilder occs1 >+< occs2 = Concat [occs1, occs2] --- | Removes 'OnlyVarsUpTo' entries and adds 'OccursWhere' entries.------ WARNING: There can be lots of sharing between the generated--- 'OccursWhere' entries. Traversing all of these entries could be--- expensive. (See 'computeEdges' for an example.)+-- | Removes 'OnlyVarsUpTo' entries. preprocess :: OccurrencesBuilder -> OccurrencesBuilder'-preprocess ob = case pp Nothing DS.empty ob of+preprocess ob = case pp Nothing ob of   Nothing -> Concat' []   Just ob -> ob   where   pp :: Maybe Nat         -- ^ Variables larger than or equal to this number, if any,         --   are not retained.-     -> DS.Seq Where      -> OccurrencesBuilder      -> Maybe OccurrencesBuilder'-  pp !m ws (Concat obs)        = case catMaybes $ map (pp m ws) obs of-                                   []  -> Nothing-                                   obs -> return (Concat' obs)-  pp  m ws (OccursAs w ob)     = OccursAs' w <$> pp m (ws DS.|> w) ob-  pp  m ws (OnlyVarsUpTo n ob) = pp (Just $! maybe n (min n) m) ws ob-  pp  m ws (OccursHere i)      = do guard keep-                                    return (OccursHere' i (Known (getRange i) ws))-    where-    keep = case (m, i) of-      (Nothing, _)      -> True-      (_, ADef _)       -> True-      (Just m, AnArg i) -> i < m+  pp !m = \case+    Concat obs -> case mapMaybe (pp m) obs of+      []  -> Nothing+      obs -> return (Concat' obs) --- | A type used locally in 'flatten'.-data OccursWheres-  = OccursWheres :++ OccursWheres-  | Occurs OccursWhere+    OccursAs w ob -> OccursAs' w <$> pp m ob +    OnlyVarsUpTo n ob -> pp (Just $! maybe n (min n) m) ob++    OccursHere i -> do+      guard keep+      return (OccursHere' i)+      where+      keep = case (m, i) of+        (Nothing, _)      -> True+        (_, ADef _)       -> True+        (Just m, AnArg i) -> i < m+ -- | An interpreter for 'OccurrencesBuilder'. -- -- WARNING: There can be lots of sharing between the generated -- 'OccursWhere' entries. Traversing all of these entries could be -- expensive. (See 'computeEdges' for an example.)-flatten :: OccurrencesBuilder -> Occurrences+flatten :: OccurrencesBuilder -> Map Item Integer flatten =-  fmap (flip flatten'' []) .-  Map.fromListWith (:++) .+  Map.fromListWith (+) .   flip flatten' [] .   preprocess   where   flatten' :: OccurrencesBuilder'-           -> [(Item, OccursWheres)] -> [(Item, OccursWheres)]-  flatten' (Concat' obs)     = foldr (\occs f -> flatten' occs . f) id obs-  flatten' (OccursAs' _ ob)  = flatten' ob-  flatten' (OccursHere' i o) = ((i, Occurs o) :)--  flatten'' (os1 :++ os2) = flatten'' os1 . flatten'' os2-  flatten'' (Occurs o)    = (o :)+           -> [(Item, Integer)] -> [(Item, Integer)]+  flatten' (Concat' obs)    = foldr (\occs f -> flatten' occs . f) id obs+  flatten' (OccursAs' _ ob) = flatten' ob+  flatten' (OccursHere' i)  = ((i, 1) :)  -- | Context for computing occurrences. data OccEnv = OccEnv@@ -446,8 +385,8 @@   :: (Show a, PrettyTCM a, ComputeOccurrences a)   => [Maybe Item] -> a -> TCM OccurrencesBuilder getOccurrences vars a = do-  reportSDoc "tc.pos.occ" 70 $ text "computing occurrences in " <+> text (show a)-  reportSDoc "tc.pos.occ" 20 $ text "computing occurrences in " <+> prettyTCM a+  reportSDoc "tc.pos.occ" 70 $ "computing occurrences in " <+> text (show a)+  reportSDoc "tc.pos.occ" 20 $ "computing occurrences in " <+> prettyTCM a   kit <- coinductionKit   return $ runReader (occurrences a) $ OccEnv vars $ fmap nameOfInf kit @@ -483,10 +422,8 @@     Var i args -> do       vars <- asks vars       occs <- occurrences args-      -- Apparently some development version of GHC chokes if the-      -- following line is replaced by vars ! i.-      let mi | i < length vars = vars !! i-             | otherwise       = flip trace __IMPOSSIBLE__ $+      let mi      = indexWithDefault unbound vars i+          unbound = flip trace __IMPOSSIBLE__ $                  "impossible: occurrence of de Bruijn index " ++ show i ++                  " in vars " ++ show vars ++ " is unbound"       return $ maybe emptyOB OccursHere mi >+< OccursAs VarArg occs@@ -510,6 +447,7 @@     Lit{}        -> return emptyOB     Sort{}       -> return emptyOB     DontCare _   -> return emptyOB -- Andreas, 2011-09-09: do we need to check for negative occurrences in irrelevant positions?+    Dummy{}      -> return emptyOB  instance ComputeOccurrences Level where   occurrences (Max as) = occurrences as@@ -543,7 +481,7 @@ instance ComputeOccurrences a => ComputeOccurrences (Elim' a) where   occurrences Proj{}    = __IMPOSSIBLE__   occurrences (Apply a) = occurrences a-+  occurrences (IApply x y a) = occurrences (x,(y,a)) -- TODO Andrea: conservative instance ComputeOccurrences a => ComputeOccurrences (Arg a) where   occurrences = occurrences . unArg @@ -563,12 +501,13 @@     oy <- occurrences y     return $ ox >+< oy --- | Computes the occurrences in the given definition.+-- | Computes the number of occurrences of different 'Item's in the+-- given definition. -- -- WARNING: There can be lots of sharing between the 'OccursWhere' -- entries. Traversing all of these entries could be expensive. (See -- 'computeEdges' for an example.)-computeOccurrences :: QName -> TCM Occurrences+computeOccurrences :: QName -> TCM (Map Item Integer) computeOccurrences q = flatten <$> computeOccurrences' q  -- | Computes the occurrences in the given definition.@@ -576,9 +515,9 @@ computeOccurrences' q = inConcreteOrAbstractMode q $ \ def -> do   reportSDoc "tc.pos" 25 $ do     let a = defAbstract def-    m <- asks envAbstractMode-    cur <- asks envCurrentModule-    text "computeOccurrences" <+> prettyTCM q <+> text (show a) <+> text (show m)+    m <- asksTC envAbstractMode+    cur <- asksTC envCurrentModule+    "computeOccurrences" <+> prettyTCM q <+> text (show a) <+> text (show m)       <+> prettyTCM cur   OccursAs (InDefOf q) <$> case theDef def of     Function{funClauses = cs} -> do@@ -587,7 +526,8 @@         mapM (getOccurrences []) cs     Datatype{dataClause = Just c} -> getOccurrences [] =<< instantiateFull c     Datatype{dataPars = np0, dataCons = cs}       -> do-      -- Andreas, 2013-02-27: first, each data index occurs as matched on.+      -- Andreas, 2013-02-27 (later edited by someone else): First,+      -- include each index of an inductive family.       TelV tel t <- telView $ defType def       -- Andreas, 2017-04-26, issue #2554: count first index as parameter if it has type Size.       -- We compute sizeIndex=1 if first first index has type Size, otherwise sizeIndex==0@@ -596,11 +536,11 @@       let np = np0 + sizeIndex       let xs = [np .. size tel - 1] -- argument positions corresponding to indices           ioccs = Concat $ map (OccursHere . AnArg) [np0 .. np - 1]-                        ++ map (OccursAs Matched . OccursHere . AnArg) xs+                        ++ map (OccursAs IsIndex . OccursHere . AnArg) xs       -- Then, we compute the occurrences in the constructor types.       let conOcc c = do             a <- defType <$> getConstInfo c-            TelV tel t <- telView' <$> normalise a -- normalization needed e.g. for test/succeed/Bush.agda+            TelV tel t <- telView'Path =<< normalise a -- normalization needed e.g. for test/succeed/Bush.agda             let indices = case unEl t of                             Def _ vs -> drop np vs                             _        -> __IMPOSSIBLE__@@ -616,10 +556,12 @@       getOccurrences vars =<< normalise tel' -- Andreas, 2017-01-01, issue #1899, treat like data types      -- Arguments to other kinds of definitions are hard-wired.-    Constructor{} -> return emptyOB-    Axiom{}       -> return emptyOB-    Primitive{}   -> return emptyOB-    AbstractDefn{}-> __IMPOSSIBLE__+    Constructor{}      -> return emptyOB+    Axiom{}            -> return emptyOB+    DataOrRecSig{}     -> return emptyOB+    Primitive{}        -> return emptyOB+    GeneralizableVar{} -> return emptyOB+    AbstractDefn{}     -> __IMPOSSIBLE__  -- Building the occurrence graph ------------------------------------------ @@ -627,102 +569,72 @@           | ArgNode !QName !Nat   deriving (Eq, Ord) -instance Pretty Node where-  pretty = \case-    DefNode q   -> P.pretty q-    ArgNode q i -> P.pretty q P.<> P.text ("." ++ show i)--instance PrettyTCM Node where-  prettyTCM = return . P.pretty--instance PrettyTCM n => PrettyTCM (WithNode n Edge) where-  prettyTCM (WithNode n (Edge o w)) = vcat-    [ prettyTCM o <+> prettyTCM n-    , nest 2 $ return $ P.pretty w-    ]- -- | Edge labels for the positivity graph.-data Edge = Edge !Occurrence OccursWhere-  deriving (Eq, Ord, Show)+data Edge a = Edge !Occurrence a+  deriving (Eq, Ord, Show, Functor) -instance Null Edge where-  null (Edge o _) = null o-  empty = Edge empty Unknown+-- | Merges two edges between the same source and target. +mergeEdges :: Edge a -> Edge a -> Edge a+mergeEdges _                    e@(Edge Mixed _)     = e -- dominant+mergeEdges e@(Edge Mixed _) _                        = e+mergeEdges (Edge Unused _)      e                    = e -- neutral+mergeEdges e                    (Edge Unused _)      = e+mergeEdges (Edge JustNeg _)     e@(Edge JustNeg _)   = e+mergeEdges _                    e@(Edge JustNeg w)   = Edge Mixed w+mergeEdges e@(Edge JustNeg w)   _                    = Edge Mixed w+mergeEdges _                    e@(Edge JustPos _)   = e -- dominates strict pos.+mergeEdges e@(Edge JustPos _)   _                    = e+mergeEdges _                    e@(Edge StrictPos _) = e -- dominates 'GuardPos'+mergeEdges e@(Edge StrictPos _) _                    = e+mergeEdges (Edge GuardPos _)    e@(Edge GuardPos _)  = e+ -- | These operations form a semiring if we quotient by the relation -- \"the 'Occurrence' components are equal\". -instance SemiRing Edge where-  ozero = Edge ozero Unknown-  oone  = Edge oone  Unknown--  oplus _                    e@(Edge Mixed _)     = e -- dominant-  oplus e@(Edge Mixed _) _                        = e-  oplus (Edge Unused _)      e                    = e -- neutral-  oplus e                    (Edge Unused _)      = e-  oplus (Edge JustNeg _)     e@(Edge JustNeg _)   = e-  oplus _                    e@(Edge JustNeg w)   = Edge Mixed w-  oplus e@(Edge JustNeg w)   _                    = Edge Mixed w-  oplus _                    e@(Edge JustPos _)   = e -- dominates strict pos.-  oplus e@(Edge JustPos _)   _                    = e-  oplus _                    e@(Edge StrictPos _) = e -- dominates 'GuardPos'-  oplus e@(Edge StrictPos _) _                    = e-  oplus (Edge GuardPos _)    e@(Edge GuardPos _)  = e+instance SemiRing (Edge (Seq OccursWhere)) where+  ozero = Edge ozero DS.empty+  oone  = Edge oone  DS.empty -  otimes (Edge o1 w1) (Edge o2 w2) = Edge (otimes o1 o2) (w1 >*< w2)+  oplus = mergeEdges --- | As 'OccursWhere' does not have an 'oplus' we cannot do something meaningful---   for the @OccursWhere@ here.------   E.g. @ostar (Edge JustNeg w) = Edge Mixed (w `oplus` (w >*< w))@---   would probably more sense, if we could do it.-instance StarSemiRing Edge where-  ostar (Edge o w) = Edge (ostar o) w+  otimes (Edge o1 w1) (Edge o2 w2) = Edge (otimes o1 o2) (w1 DS.>< w2)  -- | WARNING: There can be lots of sharing between the 'OccursWhere' -- entries in the edges. Traversing all of these entries could be -- expensive. (See 'computeEdges' for an example.)-buildOccurrenceGraph :: Set QName -> TCM (Graph Node Edge)+buildOccurrenceGraph :: Set QName -> TCM (Graph Node (Edge OccursWhere)) buildOccurrenceGraph qs =-  Graph.fromEdgesWith oplus . concat <$>+  Graph.fromEdgesWith mergeEdges . concat <$>     mapM defGraph (Set.toList qs)   where-    defGraph :: QName -> TCM [Graph.Edge Node Edge]+    defGraph :: QName -> TCM [Graph.Edge Node (Edge OccursWhere)]     defGraph q = inConcreteOrAbstractMode q $ \ _def -> do       occs <- computeOccurrences' q        reportSDoc "tc.pos.occs" 40 $-        (text "Occurrences in" <+> prettyTCM q <> text ":")+        ("Occurrences in" <+> prettyTCM q <> ":")           $+$         (nest 2 $ vcat $-           map (\(i, (n, s)) ->-                   text (show i) <> text ":" <+> text (show n) <+>-                   text "occurrences, of total size" <+>-                   text (show s)) $-           List.sortBy (compare `on` fst . snd) $-           map (\(i, os) -> (i, (length os, sum $ map size os))) $+           map (\(i, n) ->+                   text (show i) <> ":" <+> text (show n) <+>+                   "occurrences") $+           List.sortBy (compare `on` snd) $            Map.toList (flatten occs))-      reportSDoc "tc.pos.occs" 50 $-        (nest 2 $ vcat $-           map (\(i, os) ->-                   (text (show i) <> text ":")-                     $+$-                   (nest 2 $ vcat $ map (return . P.pretty) os))-               (Map.toList (flatten occs)))        -- Placing this line before the reportSDoc lines above creates a       -- space leak: occs is retained for too long.       es <- computeEdges qs q occs        reportSDoc "tc.pos.occs.edges" 60 $-        text "Edges:"+        "Edges:"           $+$         (nest 2 $ vcat $            map (\e ->                    let Edge o w = Graph.label e in                    prettyTCM (Graph.source e) <+>-                   text "-[" <+> return (P.pretty o) <> text "," <+>-                                 return (P.pretty w) <+> text "]->" <+>+                   "-[" <+> return (P.pretty o) <> "," <+>+                                 return (P.pretty w) <+> "]->" <+>                    prettyTCM (Graph.target e))                es) @@ -739,13 +651,13 @@ -- polarity 'StrictPos', 'JustNeg' or 'JustPos', and contain the -- following 'OccursWhere' elements: ----- * @'Known' ('DS.fromList' ['InDefOf' "F", 'InClause' 0])@,+-- * @'OccursWhere' _ 'DS.empty' ('DS.fromList' ['InDefOf' "F", 'InClause' 0])@, ----- * @'Known' ('DS.fromList' ['InDefOf' "F", 'InClause' 0, 'LeftOfArrow'])@,+-- * @'OccursWhere' _ 'DS.empty' ('DS.fromList' ['InDefOf' "F", 'InClause' 0, 'LeftOfArrow'])@, ----- * @'Known' ('DS.fromList' ['InDefOf' "F", 'InClause' 0, 'LeftOfArrow', 'LeftOfArrow'])@,+-- * @'OccursWhere' _ 'DS.empty' ('DS.fromList' ['InDefOf' "F", 'InClause' 0, 'LeftOfArrow', 'LeftOfArrow'])@, ----- * @'Known' ('DS.fromList' ['InDefOf' "F", 'InClause' 0, 'LeftOfArrow', 'LeftOfArrow', 'LeftOfArrow'])@,+-- * @'OccursWhere' _ 'DS.empty' ('DS.fromList' ['InDefOf' "F", 'InClause' 0, 'LeftOfArrow', 'LeftOfArrow', 'LeftOfArrow'])@, -- -- * and so on. computeEdges@@ -754,30 +666,62 @@   -> QName      -- ^ The current name.   -> OccurrencesBuilder-  -> TCM [Graph.Edge Node Edge]+  -> TCM [Graph.Edge Node (Edge OccursWhere)] computeEdges muts q ob =-  ($ []) <$> mkEdge __IMPOSSIBLE__ StrictPos (preprocess ob)+  ($ []) <$> mkEdge StrictPos (preprocess ob)+                    __IMPOSSIBLE__ DS.empty DS.empty   where-  mkEdge to !pol ob = case ob of-    Concat' obs     -> foldr (liftM2 (.)) (return id)-                         [ mkEdge to pol ob | ob <- obs ]-    OccursAs' w ob  -> do (to, pol) <- mkEdge' to pol w-                          mkEdge to pol ob-    OccursHere' (AnArg i) o ->-      return $ applyUnless (null pol) (Graph.Edge-        { Graph.source = ArgNode q i-        , Graph.target = to-        , Graph.label  = Edge pol o-        } :)-    OccursHere' (ADef q') o ->-      -- Andreas, 2017-04-26, issue #2555-      -- Skip nodes pointing outside the mutual block.-      return $ applyUnless (null pol || Set.notMember q' muts) (Graph.Edge-        { Graph.source = DefNode q'-        , Graph.target = to-        , Graph.label  = Edge pol o-        } :)+  mkEdge+     :: Occurrence+     -> OccurrencesBuilder'+     -> Node+        -- ^ The current target node.+     -> DS.Seq Where+        -- ^ 'Where' information encountered before the current target+        -- node was (re)selected.+     -> DS.Seq Where+        -- ^ 'Where' information encountered after the current target+        -- node was (re)selected.+     -> TCM ([Graph.Edge Node (Edge OccursWhere)] ->+             [Graph.Edge Node (Edge OccursWhere)])+  mkEdge !pol ob to cs os = case ob of+    Concat' obs ->+      foldr (liftM2 (.)) (return id)+            [ mkEdge pol ob to cs os | ob <- obs ] +    OccursAs' w ob -> do+      (to', pol) <- mkEdge' to pol w+      let mk = mkEdge pol ob+      case to' of+        Nothing -> mk to cs            (os DS.|> w)+        Just to -> mk to (cs DS.>< os) (DS.singleton w)++    OccursHere' i ->+      let o = OccursWhere (getRange i) cs os in+      case i of+        AnArg i ->+          return $ applyUnless (null pol) (Graph.Edge+            { Graph.source = ArgNode q i+            , Graph.target = to+            , Graph.label  = Edge pol o+            } :)+        ADef q' ->+          -- Andreas, 2017-04-26, issue #2555+          -- Skip nodes pointing outside the mutual block.+          return $ applyUnless (null pol || Set.notMember q' muts)+            (Graph.Edge+               { Graph.source = DefNode q'+               , Graph.target = to+               , Graph.label  = Edge pol o+               } :)++  -- | This function might return a new target node.+  mkEdge'+    :: Node+        -- ^ The current target node.+    -> Occurrence+    -> Where+    -> TCM (Maybe Node, Occurrence)   mkEdge' to !pol w = case w of     VarArg         -> mixed     MetaArg        -> mixed@@ -785,24 +729,114 @@     DefArg d i     -> do       pol' <- isGuarding d       if Set.member d muts-        then return (ArgNode d i, pol')+        then return (Just (ArgNode d i), pol')         else addPol =<< otimes pol' <$> getArgOccurrence d i     UnderInf       -> addPol GuardPos -- Andreas, 2012-06-09: ∞ is guarding     ConArgType _   -> keepGoing     IndArgType _   -> mixed     InClause _     -> keepGoing     Matched        -> mixed -- consider arguments matched against as used+    IsIndex        -> mixed -- And similarly for indices.     InDefOf d      -> do       pol' <- isGuarding d-      return (DefNode d, pol')+      return (Just (DefNode d), pol')     where-    keepGoing   = return (to, pol)-    mixed       = return (to, Mixed)-    negative    = return (to, otimes pol JustNeg)-    addPol pol' = return (to, otimes pol pol')+    keepGoing   = return (Nothing, pol)+    mixed       = return (Nothing, Mixed)+    negative    = return (Nothing, otimes pol JustNeg)+    addPol pol' = return (Nothing, otimes pol pol')    isGuarding d = do     isDR <- isDataOrRecordType d     return $ case isDR of       Just IsData -> GuardPos  -- a datatype is guarding       _           -> StrictPos++-- Pretty-printing -----------------------------------------------------++instance Pretty Node where+  pretty = \case+    DefNode q   -> P.pretty q+    ArgNode q i -> P.pretty q P.<> P.text ("." ++ show i)++instance PrettyTCM Node where+  prettyTCM = return . P.pretty++instance PrettyTCM n => PrettyTCM (WithNode n (Edge OccursWhere)) where+  prettyTCM (WithNode n (Edge o w)) = vcat+    [ prettyTCM o <+> prettyTCM n+    , nest 2 $ return $ P.pretty w+    ]++instance PrettyTCM (Seq OccursWhere) where+  prettyTCM =+    fmap snd . prettyOWs . map adjustLeftOfArrow . uniq . Fold.toList+    where+      nth 0 = pwords "first"+      nth 1 = pwords "second"+      nth 2 = pwords "third"+      nth n = pwords $ show (n + 1) ++ "th"++      -- Removes consecutive duplicates.+      uniq :: [OccursWhere] -> [OccursWhere]+      uniq = map head . List.groupBy ((==) `on` snd')+        where+        snd' (OccursWhere _ _ ws) = ws++      prettyOWs :: [OccursWhere] -> TCM (String, Doc)+      prettyOWs []  = __IMPOSSIBLE__+      prettyOWs [o] = do+        (s, d) <- prettyOW o+        return (s, d P.<> ".")+      prettyOWs (o:os) = do+        (s1, d1) <- prettyOW  o+        (s2, d2) <- prettyOWs os+        return (s1, d1 P.<> "," P.<+> "which" P.<+> P.text s2 P.$$ d2)++      prettyOW :: OccursWhere -> TCM (String, Doc)+      prettyOW (OccursWhere _ cs ws)+        | null cs   = prettyWs ws+        | otherwise = do+            (s, d1) <- prettyWs ws+            (_, d2) <- prettyWs cs+            return (s, d1 P.$$ "(" P.<> d2 P.<> ")")++      prettyWs :: Seq Where -> TCM (String, Doc)+      prettyWs ws = case Fold.toList ws of+        [InDefOf d, IsIndex] ->+          (,) "is" <$> fsep (pwords "an index of" ++ [prettyTCM d])+        _ ->+          (,) "occurs" <$>+            Fold.foldrM (\w d -> return d $$ fsep (prettyW w)) empty ws++      prettyW :: Where -> [TCM Doc]+      prettyW w = case w of+        LeftOfArrow  -> pwords "to the left of an arrow"+        DefArg q i   -> pwords "in the" ++ nth i ++ pwords "argument of" +++                          [prettyTCM q]+        UnderInf     -> pwords "under" +++                        [do -- this cannot fail if an 'UnderInf' has been generated+                            Def inf _ <- primInf+                            prettyTCM inf]+        VarArg       -> pwords "in an argument of a bound variable"+        MetaArg      -> pwords "in an argument of a metavariable"+        ConArgType c -> pwords "in the type of the constructor" ++ [prettyTCM c]+        IndArgType c -> pwords "in an index of the target type of the constructor" ++ [prettyTCM c]+        InClause i   -> pwords "in the" ++ nth i ++ pwords "clause"+        Matched      -> pwords "as matched against"+        IsIndex      -> pwords "as an index"+        InDefOf d    -> pwords "in the definition of" ++ [prettyTCM d]++      adjustLeftOfArrow :: OccursWhere -> OccursWhere+      adjustLeftOfArrow (OccursWhere r cs os) =+        OccursWhere r (DS.filter (not . isArrow) cs) $+          noArrows+            DS.><+          case DS.viewl startsWithArrow of+            DS.EmptyL  -> DS.empty+            w DS.:< ws -> w DS.<| DS.filter (not . isArrow) ws+        where+        (noArrows, startsWithArrow) = DS.breakl isArrow os++        isArrow LeftOfArrow{} = True+        isArrow _             = False
src/full/Agda/TypeChecking/Positivity/Occurrence.hs view
@@ -34,6 +34,7 @@ import Agda.Utils.Null import Agda.Utils.Pretty import Agda.Utils.SemiRing+import Agda.Utils.Size  #include "undefined.h" import Agda.Utils.Impossible@@ -44,11 +45,12 @@  -- | Description of an occurrence. data OccursWhere-  = Unknown-    -- ^ an unknown position (treated as negative)-  | Known Range (Seq Where)-    -- ^ The elements of the sequence, from left to right, explain how-    -- to get to the occurrence.+  = OccursWhere Range (Seq Where) (Seq Where)+    -- ^ The elements of the sequences, read from left to right,+    -- explain how to get to the occurrence. The second sequence+    -- includes the main information, and if the first sequence is+    -- non-empty, then it includes information about the context of+    -- the second sequence.   deriving (Show, Eq, Ord, Data)  -- | One part of the description of an occurrence.@@ -62,6 +64,7 @@   | IndArgType QName -- ^ in a datatype index of a constructor   | InClause Nat     -- ^ in the nth clause of a defined function   | Matched          -- ^ matched against in a clause of a defined function+  | IsIndex          -- ^ is an index of an inductive family   | InDefOf QName    -- ^ in the definition of a constant   deriving (Show, Eq, Ord, Data) @@ -78,7 +81,7 @@   | Unused    --  ^ No occurrence.   deriving (Data, Show, Eq, Ord, Enum, Bounded) --- * Pretty instances+-- Pretty instances.  instance Pretty Occurrence where   pretty = text . \case@@ -91,23 +94,24 @@  instance Pretty Where where   pretty = \case-    LeftOfArrow  -> text "LeftOfArrow"-    DefArg q i   -> text "DefArg"     <+> pretty q <+> pretty i-    UnderInf     -> text "UnderInf"-    VarArg       -> text "VarArg"-    MetaArg      -> text "MetaArg"-    ConArgType q -> text "ConArgType" <+> pretty q-    IndArgType q -> text "IndArgType" <+> pretty q-    InClause i   -> text "InClause"   <+> pretty i-    Matched      -> text "Matched"-    InDefOf q    -> text "InDefOf"    <+> pretty q+    LeftOfArrow  -> "LeftOfArrow"+    DefArg q i   -> "DefArg"     <+> pretty q <+> pretty i+    UnderInf     -> "UnderInf"+    VarArg       -> "VarArg"+    MetaArg      -> "MetaArg"+    ConArgType q -> "ConArgType" <+> pretty q+    IndArgType q -> "IndArgType" <+> pretty q+    InClause i   -> "InClause"   <+> pretty i+    Matched      -> "Matched"+    IsIndex      -> "IsIndex"+    InDefOf q    -> "InDefOf"    <+> pretty q  instance Pretty OccursWhere where   pretty = \case-    Unknown     -> text "Unknown"-    Known _r ws -> text "Known _" <+> pretty (toList ws)+    OccursWhere _r ws1 ws2 ->+      "OccursWhere _" <+> pretty (toList ws1) <+> pretty (toList ws2) --- * Instances for 'Occurrence'+-- Other instances for 'Occurrence'.  instance NFData Occurrence where rnf x = seq x () @@ -164,6 +168,14 @@ instance Null Occurrence where   empty = Unused +-- Other instances for 'OccursWhere'.++-- There is an orphan PrettyTCM instance for Seq OccursWhere in+-- Agda.TypeChecking.Positivity.++instance Sized OccursWhere where+  size (OccursWhere _ cs os) = 1 + size cs + size os+ -- | The map contains bindings of the form @bound |-> ess@, satisfying -- the following property: for every non-empty list @w@, -- @'foldr1' 'otimes' w '<=' bound@ iff@@ -195,7 +207,7 @@ -- belong to the domain of @boundToEverySome@.  -- There is a property for this function in--- Agda.Utils.Graph.AdjacencyMap.Unidirectional.Tests.+-- Internal.Utils.Graph.AdjacencyMap.Unidirectional.  productOfEdgesInBoundedWalk ::   (SemiRing e, Ord n) =>
src/full/Agda/TypeChecking/Pretty.hs view
@@ -47,6 +47,7 @@ import qualified Agda.Syntax.Info as A import Agda.Syntax.Scope.Monad (withContextPrecedence) +import Agda.TypeChecking.Coverage.SplitTree import Agda.TypeChecking.Monad import Agda.TypeChecking.Monad.Builtin (equalityUnview) import Agda.TypeChecking.Positivity.Occurrence@@ -191,9 +192,9 @@   instance (Pretty a, PrettyTCM a, Subst a a) => PrettyTCM (Substitution' a) where-  prettyTCM IdS        = text "idS"-  prettyTCM (Wk m IdS) = text "wkS" <+> pretty m-  prettyTCM (EmptyS _) = text "emptyS"+  prettyTCM IdS        = "idS"+  prettyTCM (Wk m IdS) = "wkS" <+> pretty m+  prettyTCM (EmptyS _) = "emptyS"   prettyTCM rho = prettyTCM u <+> comma <+> prettyTCM rho1     where       (rho1, rho2) = splitS 1 rho@@ -201,12 +202,12 @@  instance PrettyTCM Clause where   prettyTCM cl = do-    x <- qualify_ <$> freshName_ "<unnamedclause>"+    x <- qualify_ <$> freshName_ ("<unnamedclause>" :: String)     prettyTCM (QNamed x cl)  instance PrettyTCM a => PrettyTCM (Judgement a) where-  prettyTCM (HasType a t) = prettyTCM a <+> text ":" <+> prettyTCM t-  prettyTCM (IsSort  a t) = text "Sort" <+> prettyTCM a <+> text ":" <+> prettyTCM t+  prettyTCM (HasType a t) = prettyTCM a <+> ":" <+> prettyTCM t+  prettyTCM (IsSort  a t) = "Sort" <+> prettyTCM a <+> ":" <+> prettyTCM t  instance PrettyTCM MetaId where   prettyTCM x = do@@ -214,7 +215,7 @@     pretty $ NamedMeta mn x  instance PrettyTCM a => PrettyTCM (Blocked a) where-  prettyTCM (Blocked x a) = text "[" <+> prettyTCM a <+> text "]" <> text (P.prettyShow x)+  prettyTCM (Blocked x a) = "[" <+> prettyTCM a <+> "]" <> text (P.prettyShow x)   prettyTCM (NotBlocked _ x) = prettyTCM x  instance (Reify a e, ToConcrete e c, P.Pretty c) => PrettyTCM (Named_ a) where@@ -227,16 +228,17 @@   prettyTCM x = prettyA =<< reify x  instance (PrettyTCM k, PrettyTCM v) => PrettyTCM (Map k v) where-  prettyTCM m = text "Map" <> braces (sep $ punctuate comma-    [ hang (prettyTCM k <+> text "=") 2 (prettyTCM v) | (k, v) <- Map.toList m ])+  prettyTCM m = "Map" <> braces (sep $ punctuate comma+    [ hang (prettyTCM k <+> "=") 2 (prettyTCM v) | (k, v) <- Map.toList m ])  instance {-# OVERLAPPING #-} PrettyTCM ArgName where   prettyTCM = text . P.prettyShow  -- instance (Reify a e, ToConcrete e c, P.Pretty c, PrettyTCM a) => PrettyTCM (Elim' a) where instance PrettyTCM Elim where-  prettyTCM (Apply v) = text "$" <+> prettyTCM v-  prettyTCM (Proj _ f)= text "." <> prettyTCM f+  prettyTCM (IApply x y v) = "I$" <+> prettyTCM v+  prettyTCM (Apply v) = "$" <+> prettyTCM v+  prettyTCM (Proj _ f)= "." <> prettyTCM f  instance PrettyTCM a => PrettyTCM (MaybeReduced a) where   prettyTCM = prettyTCM . ignoreReduced@@ -251,8 +253,8 @@   prettyTCM = prettyA  instance PrettyTCM Relevance where-  prettyTCM Irrelevant = text "."-  prettyTCM NonStrict  = text ".."+  prettyTCM Irrelevant = "."+  prettyTCM NonStrict  = ".."   prettyTCM Relevant   = empty  instance PrettyTCM ProblemConstraint where@@ -262,22 +264,26 @@  instance PrettyTCM Constraint where     prettyTCM c = case c of-        ValueCmp cmp ty s t      -> prettyCmp (prettyTCM cmp) s t <?> (text ":" <+> prettyTCMCtx TopCtx ty)-        ElimCmp cmps fs t v us vs -> prettyCmp (text "~~") us vs   <?> (text ":" <+> prettyTCMCtx TopCtx t)+        ValueCmp cmp ty s t      -> prettyCmp (prettyTCM cmp) s t <?> (":" <+> prettyTCMCtx TopCtx ty)+        ValueCmpOnFace cmp p ty s t ->+            sep [ prettyTCM p <+> "|"+                , prettyCmp (prettyTCM cmp) s t ]+            <?> (":" <+> prettyTCMCtx TopCtx ty)+        ElimCmp cmps fs t v us vs -> prettyCmp "~~" us vs   <?> (":" <+> prettyTCMCtx TopCtx t)         LevelCmp cmp a b         -> prettyCmp (prettyTCM cmp) a b         TypeCmp cmp a b          -> prettyCmp (prettyTCM cmp) a b         TelCmp a b cmp tela telb -> prettyCmp (prettyTCM cmp) tela telb         SortCmp cmp s1 s2        -> prettyCmp (prettyTCM cmp) s1 s2-        Guarded c pid            -> prettyTCM c <?> (brackets $ text "blocked on problem" <+> prettyTCM pid)+        Guarded c pid            -> prettyTCM c <?> (brackets $ "blocked on problem" <+> prettyTCM pid)         UnBlock m   -> do             -- BlockedConst t <- mvInstantiation <$> lookupMeta m             mi <- mvInstantiation <$> lookupMeta m             case mi of-              BlockedConst t -> prettyCmp (text ":=") m t+              BlockedConst t -> prettyCmp ":=" m t               PostponedTypeCheckingProblem cl _ -> enterClosure cl $ \p ->-                prettyCmp (text ":=") m p+                prettyCmp ":=" m p               Open{}  -> __IMPOSSIBLE__-              OpenIFS{}  -> __IMPOSSIBLE__+              OpenInstance{} -> __IMPOSSIBLE__               InstV{} -> empty               -- Andreas, 2017-01-11, issue #2637:               -- The size solver instantiates some metas with infinity@@ -290,36 +296,39 @@               --     , show m ++ show args ++ " := " ++ show t               --     ]               --   __IMPOSSIBLE__-        FindInScope m mb mcands -> do+        FindInstance m mb mcands -> do             t <- getMetaType m-            sep [ text "Resolve instance argument" <+> blk-                    <?> prettyCmp (text ":") m t+            sep [ "Resolve instance argument" <+> blk+                    <?> prettyCmp ":" m t                 , cands                 ]           where             blk = case mb of                     Nothing -> empty-                    Just b  -> parens $ text "blocked on" <+> pretty b+                    Just b  -> parens $ "blocked on" <+> pretty b             cands =               case mcands of-                Nothing -> text "No candidates yet"+                Nothing -> "No candidates yet"                 Just cnds ->-                  hang (text "Candidates") 2 $-                    vcat [ hang (overlap c <+> prettyTCM (candidateTerm c) <+> text ":") 2 $+                  hang "Candidates" 2 $+                    vcat [ hang (overlap c <+> prettyTCM (candidateTerm c) <+> ":") 2 $                             prettyTCM (candidateType c) | c <- cnds ]-              where overlap c | candidateOverlappable c = text "overlap"+              where overlap c | candidateOverlappable c = "overlap"                               | otherwise               = empty         IsEmpty r t ->-            text "Is empty:" <?> prettyTCMCtx TopCtx t+            "Is empty:" <?> prettyTCMCtx TopCtx t         CheckSizeLtSat t ->-            text "Is not empty type of sizes:" <?> prettyTCMCtx TopCtx t+            "Is not empty type of sizes:" <?> prettyTCMCtx TopCtx t         CheckFunDef d i q cs -> do             t <- defType <$> getConstInfo q-            prettyTCM q <+> text ":" <+> prettyTCM t-        HasBiggerSort a -> text "Has bigger sort:" <+> prettyTCM a-        HasPTSRule a b -> text "Has PTS rule:" <+> case b of+            "Check definition of" <+> prettyTCM q <+> ":" <+> prettyTCM t+        HasBiggerSort a -> "Has bigger sort:" <+> prettyTCM a+        HasPTSRule a b -> "Has PTS rule:" <+> case b of           NoAbs _ b -> prettyTCM (a,b)-          Abs x b   -> text "(" <> prettyTCM a <+> text "," <+> addContext x (prettyTCM b) <> text ")"+          Abs x b   -> "(" <> prettyTCM a <+> "," <+> addContext x (prettyTCM b) <> ")"+        UnquoteTactic _ v _ _ -> do+          e <- reify v+          prettyTCM (A.App A.defaultAppInfo_ (A.Unquote A.exprNoRange) (defaultNamedArg e))        where         prettyCmp :: (PrettyTCM a, PrettyTCM b) => TCM Doc -> a -> b -> TCM Doc@@ -327,28 +336,29 @@   instance PrettyTCM TypeCheckingProblem where-  prettyTCM (CheckExpr e a) =-    sep [ prettyA e <+> text ":?", prettyTCM a ]+  prettyTCM (CheckExpr cmp e a) =+    sep [ prettyA e <+> ":?", prettyTCM a ]   prettyTCM (CheckArgs _ _ es t0 t1 _) =-    sep [ parens $ text "_ :" <+> prettyTCM t0+    sep [ parens $ "_ :" <+> prettyTCM t0         , nest 2 $ prettyList $ map prettyA es-        , nest 2 $ text ":?" <+> prettyTCM t1 ]-  prettyTCM (CheckLambda (Arg ai (xs, mt)) e t) =+        , nest 2 $ ":?" <+> prettyTCM t1 ]+  prettyTCM (CheckProjAppToKnownPrincipalArg cmp e _ _ _ t _ _ _) = prettyTCM (CheckExpr cmp e t)+  prettyTCM (CheckLambda cmp (Arg ai (xs, mt)) e t) =     sep [ return CP.lambda <+>           (CP.prettyRelevance ai .            CP.prettyHiding ai (if isNothing mt && length xs == 1 then id                                else P.parens) <$> do             fsep $               map prettyTCM xs ++-              caseMaybe mt [] (\ a -> [text ":", prettyTCM a])) <+>+              caseMaybe mt [] (\ a -> [":", prettyTCM a])) <+>           return CP.arrow <+>           prettyTCM e <+>-          text ":?"+          ":?"         , prettyTCM t         ]-  prettyTCM (UnquoteTactic v _ _) = do+  prettyTCM (DoQuoteTerm _ v _) = do     e <- reify v-    prettyTCM (A.App A.defaultAppInfo_ (A.Unquote A.exprNoRange) (defaultNamedArg e))+    prettyTCM (A.App A.defaultAppInfo_ (A.QuoteTerm A.exprNoRange) (defaultNamedArg e))  instance PrettyTCM a => PrettyTCM (WithHiding a) where   prettyTCM (WithHiding h a) = CP.prettyHiding h id <$> prettyTCM a@@ -368,7 +378,7 @@ instance PrettyTCM Telescope where   prettyTCM tel = P.fsep . map P.pretty <$> (do       tel <- reify tel-      runAbsToCon $ bindToConcrete tel (return . concat)+      runAbsToCon $ bindToConcrete tel return     )  newtype PrettyContext = PrettyContext Context@@ -380,21 +390,24 @@   prettyTCM = prettyTCM . var . dbPatVarIndex  instance PrettyTCM a => PrettyTCM (Pattern' a) where+  prettyTCM (IApplyP _ _ _ x)    = prettyTCM x   prettyTCM (VarP _ x)    = prettyTCM x-  prettyTCM (DotP _ t)    = text ".(" <> prettyTCM t <> text ")"+  prettyTCM (DotP _ t)    = ".(" <> prettyTCM t <> ")"+  prettyTCM (DefP o q ps) = parens $+        prettyTCM q <+> fsep (map (prettyTCM . namedArg) ps)   prettyTCM (ConP c i ps) = (if b then braces else parens) $ prTy $         prettyTCM c <+> fsep (map (prettyTCM . namedArg) ps)         where         b = maybe False (/= PatOCon) $ conPRecord i         showRec :: TCM Doc         showRec = sep-          [ text "record"+          [ "record"           , bracesAndSemicolons <$> zipWithM showField (conFields c) ps           ]-        showField x p =-          sep [ prettyTCM (A.qnameName x) <+> text "=" , nest 2 $ prettyTCM $ namedArg p ]+        showField (Arg ai x) p =+          sep [ prettyTCM (A.qnameName x) <+> "=" , nest 2 $ prettyTCM $ namedArg p ]         showCon = parens $ prTy $ prettyTCM c <+> fsep (map (prettyTCM . namedArg) ps)-        prTy d = d -- caseMaybe (conPType i) d $ \ t -> d  <+> text ":" <+> prettyTCM t+        prTy d = d -- caseMaybe (conPType i) d $ \ t -> d  <+> ":" <+> prettyTCM t   prettyTCM (LitP l)      = text (P.prettyShow l)   prettyTCM (ProjP _ q)   = text ("." ++ P.prettyShow q) @@ -406,8 +419,9 @@ prettyTCMPatternList = prettyList . map prettyA <=< reifyPatterns  instance PrettyTCM (Elim' DisplayTerm) where-  prettyTCM (Apply v) = text "$" <+> prettyTCM (unArg v)-  prettyTCM (Proj _ f)= text "." <> prettyTCM f+  prettyTCM (IApply x y v) = "$" <+> prettyTCM v+  prettyTCM (Apply v) = "$" <+> prettyTCM (unArg v)+  prettyTCM (Proj _ f)= "." <> prettyTCM f  instance PrettyTCM NLPat where   prettyTCM (PVar x bvs) = prettyTCM (Var x (map (Apply . fmap var) bvs))@@ -418,19 +432,20 @@     text ("λ " ++ absName u ++ " →") <+>     (addContext (absName u) $ prettyTCM $ absBody u)   prettyTCM (PPi a b)   = parens $-    text ("(" ++ absName b ++ " :") <+> prettyTCM (unDom a) <> text ") →" <+>+    text ("(" ++ absName b ++ " :") <+> prettyTCM (unDom a) <> ") →" <+>     (addContext (absName b) $ prettyTCM $ unAbs b)   prettyTCM (PBoundVar i []) = prettyTCM (var i)   prettyTCM (PBoundVar i es) = parens $ prettyTCM (var i) <+> fsep (map prettyTCM es)-  prettyTCM (PTerm t)   = text "." <> parens (prettyTCM t)+  prettyTCM (PTerm t)   = "." <> parens (prettyTCM t)  instance PrettyTCM NLPType where   prettyTCM (NLPType PWild a) = prettyTCM a-  prettyTCM (NLPType l     a) = text "{" <> prettyTCM l <> text "}" <> prettyTCM a+  prettyTCM (NLPType l     a) = "{" <> prettyTCM l <> "}" <> prettyTCM a  instance PrettyTCM (Elim' NLPat) where+  prettyTCM (IApply x y v) = prettyTCM v   prettyTCM (Apply v) = prettyTCM (unArg v)-  prettyTCM (Proj _ f)= text "." <> prettyTCM f+  prettyTCM (Proj _ f)= "." <> prettyTCM f  instance PrettyTCM (Type' NLPat) where   prettyTCM = prettyTCM . unEl@@ -438,12 +453,12 @@ instance PrettyTCM RewriteRule where   prettyTCM (RewriteRule q gamma f ps rhs b) = fsep     [ prettyTCM q-    , prettyTCM gamma <+> text " |- "+    , prettyTCM gamma <+> " |- "     , addContext gamma $ sep       [ prettyTCM (PDef f ps)-      , text " --> "+      , " --> "       , prettyTCM rhs-      , text " : "+      , " : "       , prettyTCM b       ]     ]@@ -464,3 +479,8 @@         [ prettyTCM n         , nest 2 $ vcat $ map (prettyTCM . uncurry WithNode) $ Map.assocs es         ]++instance PrettyTCM SplitTag where+  prettyTCM (SplitCon c)  = prettyTCM c+  prettyTCM (SplitLit l)  = prettyTCM l+  prettyTCM SplitCatchall = return underscore
src/full/Agda/TypeChecking/Primitive.hs view
@@ -1,822 +1,2116 @@ {-# LANGUAGE CPP                        #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE UndecidableInstances       #-}---- ASR (2017-04-10). TODO: Is this option required by the final--- version of GHC 8.2.1 (it was required by the RC 1)?-#if __GLASGOW_HASKELL__ >= 802-{-# OPTIONS -Wno-simplifiable-class-constraints #-}-#endif--{-| Primitive functions, such as addition on builtin integers.--}-module Agda.TypeChecking.Primitive where--import Control.Monad-import Control.Monad.Reader (asks)--import Data.Char-import Data.Map (Map)-import qualified Data.Map as Map-import Data.Maybe-import Data.Traversable (traverse)-import Data.Monoid (mempty)-import Data.Word--import Agda.Interaction.Options-import qualified Agda.Interaction.Options.Lenses as Lens--import Agda.Syntax.Position-import Agda.Syntax.Common hiding (Nat)-import Agda.Syntax.Internal-import Agda.Syntax.Internal.Generic (TermLike(..))-import Agda.Syntax.Literal-import Agda.Syntax.Concrete.Pretty ()-import Agda.Syntax.Fixity--import Agda.TypeChecking.Monad hiding (getConstInfo, typeOfConst)-import qualified Agda.TypeChecking.Monad as TCM-import Agda.TypeChecking.Monad.Builtin-import Agda.TypeChecking.Reduce-import Agda.TypeChecking.Reduce.Monad-import Agda.TypeChecking.Substitute-import Agda.TypeChecking.Telescope-import Agda.TypeChecking.Errors-import Agda.TypeChecking.Functions-import Agda.TypeChecking.Level-import Agda.TypeChecking.Quote (QuotingKit, quoteTermWithKit, quoteTypeWithKit, quoteClauseWithKit, quotingKit)-import Agda.TypeChecking.Pretty ()  -- instances only-import Agda.TypeChecking.Warnings--import Agda.Utils.Functor-import Agda.Utils.List-import Agda.Utils.Maybe-import Agda.Utils.Monad-import Agda.Utils.Pretty (pretty, prettyShow)-import Agda.Utils.Size-import Agda.Utils.String ( Str(Str), unStr )-import Agda.Utils.Float--#include "undefined.h"-import Agda.Utils.Impossible-import Debug.Trace-------------------------------------------------------------------------------- * Primitive functions------------------------------------------------------------------------------data PrimitiveImpl = PrimImpl Type PrimFun---- Haskell type to Agda type--newtype Nat = Nat { unNat :: Integer }-            deriving (Eq, Ord, Num, Enum, Real)---- In GHC > 7.8 deriving Integral causes an unnecessary toInteger--- warning.-instance Integral Nat where-  toInteger = unNat-  quotRem (Nat a) (Nat b) = (Nat q, Nat r)-    where (q, r) = quotRem a b--instance TermLike Nat where-  traverseTermM _ = pure-  foldTerm _      = mempty--instance Show Nat where-  show = show . toInteger--newtype Lvl = Lvl { unLvl :: Integer }-  deriving (Eq, Ord)--instance Show Lvl where-  show = show . unLvl--class PrimType a where-  primType :: a -> TCM Type--instance (PrimType a, PrimType b) => PrimTerm (a -> b) where-  primTerm _ = unEl <$> (primType (undefined :: a) --> primType (undefined :: b))--instance PrimTerm a => PrimType a where-  primType _ = el $ primTerm (undefined :: a)--class    PrimTerm a       where primTerm :: a -> TCM Term-instance PrimTerm Integer where primTerm _ = primInteger-instance PrimTerm Word64  where primTerm _ = primWord64-instance PrimTerm Bool    where primTerm _ = primBool-instance PrimTerm Char    where primTerm _ = primChar-instance PrimTerm Double  where primTerm _ = primFloat-instance PrimTerm Str     where primTerm _ = primString-instance PrimTerm Nat     where primTerm _ = primNat-instance PrimTerm Lvl     where primTerm _ = primLevel-instance PrimTerm QName   where primTerm _ = primQName-instance PrimTerm MetaId  where primTerm _ = primAgdaMeta-instance PrimTerm Type    where primTerm _ = primAgdaTerm--instance PrimTerm Fixity' where primTerm _ = primFixity--instance PrimTerm a => PrimTerm [a] where-  primTerm _ = list (primTerm (undefined :: a))--instance PrimTerm a => PrimTerm (IO a) where-  primTerm _ = io (primTerm (undefined :: a))---- From Agda term to Haskell value--class ToTerm a where-  toTerm  :: TCM (a -> Term)-  toTermR :: TCM (a -> ReduceM Term)--  toTermR = (pure .) <$> toTerm--instance ToTerm Nat     where toTerm = return $ Lit . LitNat noRange . toInteger-instance ToTerm Word64  where toTerm = return $ Lit . LitWord64 noRange-instance ToTerm Lvl     where toTerm = return $ Level . Max . (:[]) . ClosedLevel . unLvl-instance ToTerm Double  where toTerm = return $ Lit . LitFloat noRange-instance ToTerm Char    where toTerm = return $ Lit . LitChar noRange-instance ToTerm Str     where toTerm = return $ Lit . LitString noRange . unStr-instance ToTerm QName   where toTerm = return $ Lit . LitQName noRange-instance ToTerm MetaId  where-  toTerm = do-    file <- fromMaybe __IMPOSSIBLE__ <$> asks TCM.envCurrentPath-    return $ Lit . LitMeta noRange file--instance ToTerm Integer where-  toTerm = do-    pos     <- primIntegerPos-    negsuc  <- primIntegerNegSuc-    fromNat <- toTerm :: TCM (Nat -> Term)-    let intToTerm = fromNat . fromIntegral :: Integer -> Term-    let fromInt n | n >= 0    = apply pos    [defaultArg $ intToTerm n]-                  | otherwise = apply negsuc [defaultArg $ intToTerm (-n - 1)]-    return fromInt--instance ToTerm Bool where-  toTerm = do-    true  <- primTrue-    false <- primFalse-    return $ \b -> if b then true else false--instance ToTerm Term where-  toTerm  = do kit <- quotingKit; runReduceF (quoteTermWithKit kit)-  toTermR = do kit <- quotingKit; return (quoteTermWithKit kit)--instance ToTerm Type where-  toTerm  = do kit <- quotingKit; runReduceF (quoteTypeWithKit kit)-  toTermR = do kit <- quotingKit; return (quoteTypeWithKit kit)--instance ToTerm ArgInfo where-  toTerm = do-    info <- primArgArgInfo-    vis  <- primVisible-    hid  <- primHidden-    ins  <- primInstance-    rel  <- primRelevant-    irr  <- primIrrelevant-    return $ \ i -> info `applys`-      [ case getHiding i of-          NotHidden  -> vis-          Hidden     -> hid-          Instance{} -> ins-      , case getRelevance i of-          Relevant   -> rel-          Irrelevant -> irr-          NonStrict  -> rel-      ]--instance ToTerm Fixity' where-  toTerm = (. theFixity) <$> toTerm--instance ToTerm Fixity where-  toTerm = do-    lToTm  <- toTerm-    aToTm  <- toTerm-    fixity <- primFixityFixity-    return $ \ Fixity{fixityAssoc = a, fixityLevel = l} ->-      fixity `apply` [defaultArg (aToTm a), defaultArg (lToTm l)]--instance ToTerm Associativity where-  toTerm = do-    lassoc <- primAssocLeft-    rassoc <- primAssocRight-    nassoc <- primAssocNon-    return $ \ a ->-      case a of-        NonAssoc   -> nassoc-        LeftAssoc  -> lassoc-        RightAssoc -> rassoc--instance ToTerm PrecedenceLevel where-  toTerm = do-    (iToTm :: Integer -> Term) <- toTerm-    related   <- primPrecRelated-    unrelated <- primPrecUnrelated-    return $ \ p ->-      case p of-        Unrelated -> unrelated-        Related n -> related `apply` [defaultArg $ iToTm n]---- | @buildList A ts@ builds a list of type @List A@. Assumes that the terms---   @ts@ all have type @A@.-buildList :: TCM ([Term] -> Term)-buildList = do-    nil'  <- primNil-    cons' <- primCons-    let nil       = nil'-        cons x xs = cons' `applys` [x, xs]-    return $ foldr cons nil--instance ToTerm a => ToTerm [a] where-  toTerm = do-    mkList <- buildList-    fromA  <- toTerm-    return $ mkList . map fromA---- From Haskell value to Agda term--type FromTermFunction a = Arg Term ->-                          ReduceM (Reduced (MaybeReduced (Arg Term)) a)--class FromTerm a where-  fromTerm :: TCM (FromTermFunction a)--instance FromTerm Integer where-  fromTerm = do-    Con pos _    [] <- primIntegerPos-    Con negsuc _ [] <- primIntegerNegSuc-    toNat         <- fromTerm :: TCM (FromTermFunction Nat)-    return $ \ v -> do-      b <- reduceB' v-      let v'  = ignoreBlocking b-          arg = (<$ v')-      case unArg (ignoreBlocking b) of-        Con c ci [Apply u]-          | c == pos    ->-            redBind (toNat u)-              (\ u' -> notReduced $ arg $ Con c ci [Apply $ ignoreReduced u']) $ \ n ->-            redReturn $ fromIntegral n-          | c == negsuc ->-            redBind (toNat u)-              (\ u' -> notReduced $ arg $ Con c ci [Apply $ ignoreReduced u']) $ \ n ->-            redReturn $ fromIntegral $ -n - 1-        _ -> return $ NoReduction (reduced b)--instance FromTerm Nat where-  fromTerm = fromLiteral $ \l -> case l of-    LitNat _ n -> Just $ fromInteger n-    _          -> Nothing--instance FromTerm Word64 where-  fromTerm = fromLiteral $ \ case-    LitWord64 _ n -> Just n-    _             -> Nothing--instance FromTerm Lvl where-  fromTerm = fromReducedTerm $ \l -> case l of-    Level (Max [ClosedLevel n]) -> Just $ Lvl n-    _                           -> Nothing--instance FromTerm Double where-  fromTerm = fromLiteral $ \l -> case l of-    LitFloat _ x -> Just x-    _            -> Nothing--instance FromTerm Char where-  fromTerm = fromLiteral $ \l -> case l of-    LitChar _ c -> Just c-    _           -> Nothing--instance FromTerm Str where-  fromTerm = fromLiteral $ \l -> case l of-    LitString _ s -> Just $ Str s-    _             -> Nothing--instance FromTerm QName where-  fromTerm = fromLiteral $ \l -> case l of-    LitQName _ x -> Just x-    _             -> Nothing--instance FromTerm MetaId where-  fromTerm = fromLiteral $ \l -> case l of-    LitMeta _ _ x -> Just x-    _             -> Nothing--instance FromTerm Bool where-    fromTerm = do-        true  <- primTrue-        false <- primFalse-        fromReducedTerm $ \t -> case t of-            _   | t =?= true  -> Just True-                | t =?= false -> Just False-                | otherwise   -> Nothing-        where-            a =?= b = a === b-            Def x [] === Def y []   = x == y-            Con x _ [] === Con y _ [] = x == y-            Var n [] === Var m []   = n == m-            _        === _          = False--instance (ToTerm a, FromTerm a) => FromTerm [a] where-  fromTerm = do-    nil'  <- primNil-    cons' <- primCons-    nil   <- isCon nil'-    cons  <- isCon cons'-    toA   <- fromTerm-    fromA <- toTerm-    return $ mkList nil cons toA fromA-    where-      isCon (Lam _ b)  = isCon $ absBody b-      isCon (Con c _ _)= return c-      isCon v          = __IMPOSSIBLE__--      mkList nil cons toA fromA t = do-        b <- reduceB' t-        let t = ignoreBlocking b-        let arg = (<$ t)-        case unArg t of-          Con c ci []-            | c == nil  -> return $ YesReduction NoSimplification []-          Con c ci es-            | c == cons, Just [x,xs] <- allApplyElims es ->-              redBind (toA x)-                  (\x' -> notReduced $ arg $ Con c ci (map Apply [ignoreReduced x',xs])) $ \y ->-              redBind-                  (mkList nil cons toA fromA xs)-                  (fmap $ \xs' -> arg $ Con c ci (map Apply [defaultArg $ fromA y, xs'])) $ \ys ->-              redReturn (y : ys)-          _ -> return $ NoReduction (reduced b)---- | Conceptually: @redBind m f k = either (return . Left . f) k =<< m@-redBind :: ReduceM (Reduced a a') -> (a -> b) ->-           (a' -> ReduceM (Reduced b b')) -> ReduceM (Reduced b b')-redBind ma f k = do-    r <- ma-    case r of-        NoReduction x    -> return $ NoReduction $ f x-        YesReduction _ y -> k y--redReturn :: a -> ReduceM (Reduced a' a)-redReturn = return . YesReduction YesSimplification--fromReducedTerm :: (Term -> Maybe a) -> TCM (FromTermFunction a)-fromReducedTerm f = return $ \t -> do-    b <- reduceB' t-    case f $ unArg (ignoreBlocking b) of-        Just x  -> return $ YesReduction NoSimplification x-        Nothing -> return $ NoReduction (reduced b)--fromLiteral :: (Literal -> Maybe a) -> TCM (FromTermFunction a)-fromLiteral f = fromReducedTerm $ \t -> case t of-    Lit lit -> f lit-    _       -> Nothing---- | @trustMe : {a : Level} {A : Set a} {x y : A} -> x ≡ y@-primTrustMe :: TCM PrimitiveImpl-primTrustMe = do-  -- primTrustMe is not --safe-  whenM (Lens.getSafeMode <$> commandLineOptions) $ warning SafeFlagPrimTrustMe--  -- Get the name and type of BUILTIN EQUALITY-  eq   <- primEqualityName-  eqTy <- defType <$> getConstInfo eq-  -- E.g. @eqTy = eqTel → Set a@ where @eqTel = {a : Level} {A : Set a} (x y : A)@.-  TelV eqTel eqCore <- telView eqTy-  let eqSort = case unEl eqCore of-        Sort s -> s-        _      -> __IMPOSSIBLE__--  -- Construct the type of primTrustMe.-  -- E.g., type of @trustMe : {a : Level} {A : Set a} {x y : A} → eq {a} {A} x y@.-  let t = telePi_ (fmap hide eqTel) $ El eqSort $ Def eq $ map Apply $ teleArgs eqTel--  -- BUILTIN REFL maybe a constructor with one (the principal) argument or only parameters.-  -- Get the ArgInfo of the principal argument of refl.-  con@(Con rf ci []) <- primRefl-  minfo <- fmap (setOrigin Inserted) <$> getReflArgInfo rf-  let (refl :: Arg Term -> Term) = case minfo of-        Just ai -> Con rf ci . (:[]) . Apply . setArgInfo ai-        Nothing -> const con--  -- The implementation of primTrustMe:-  return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ (size eqTel) $ \ ts -> do-    let (u, v) = fromMaybe __IMPOSSIBLE__ $ last2 ts-    -- Andreas, 2013-07-22.-    -- Note that we cannot call the conversion checker here,-    -- because 'reduce' might be called in a context where-    -- some bound variables do not have a type (just 'Prop),-    -- and the conversion checker for eliminations does not-    -- like this.-    -- We can only do untyped equality, e.g., by normalisation.-    (u', v') <- normalise' (u, v)-    if u' == v' then redReturn $ refl u else-      return $ NoReduction $ map notReduced ts---- | Get the 'ArgInfo' of the principal argument of BUILTIN REFL.------   Returns @Nothing@ for e.g.---   @---     data Eq {a} {A : Set a} (x : A) : A → Set a where---       refl : Eq x x---   @------   Returns @Just ...@ for e.g.---   @---     data Eq {a} {A : Set a} : (x y : A) → Set a where---       refl : ∀ x → Eq x x---   @--getReflArgInfo :: ConHead -> TCM (Maybe ArgInfo)-getReflArgInfo rf = do-  def <- getConInfo rf-  TelV reflTel _ <- telView $ defType def-  return $ fmap getArgInfo $ headMaybe $ drop (conPars $ theDef def) $ telToList reflTel----- | Used for both @primForce@ and @primForceLemma@.-genPrimForce :: TCM Type -> (Term -> Arg Term -> Term) -> TCM PrimitiveImpl-genPrimForce b ret = do-  let varEl s a = El (varSort s) <$> a-      varT s a  = varEl s (varM a)-      varS s    = pure $ sort $ varSort s-  t <- hPi "a" (el primLevel) $-       hPi "b" (el primLevel) $-       hPi "A" (varS 1) $-       hPi "B" (varT 2 0 --> varS 1) b-  return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 6 $ \ ts ->-    case ts of-      [a, b, s, t, u, f] -> do-        u <- reduceB' u-        let isWHNF Blocked{} = return False-            isWHNF (NotBlocked _ u) =-              case unArg u of-                Lit{}      -> return True-                Con{}      -> return True-                Lam{}      -> return True-                Pi{}       -> return True-                Sort{}     -> return True  -- sorts and levels are considered whnf-                Level{}    -> return True-                DontCare{} -> return True-                Def q _    -> do-                  def <- theDef <$> getConstInfo q-                  return $ case def of-                    Datatype{} -> True-                    Record{}   -> True-                    _          -> False-                MetaV{}    -> return False-                Var{}      -> return False--        ifM (isWHNF u)-            (redReturn $ ret (unArg f) (ignoreBlocking u))-            (return $ NoReduction $ map notReduced [a, b, s, t] ++ [reduced u, notReduced f])-      _ -> __IMPOSSIBLE__--primForce :: TCM PrimitiveImpl-primForce = do-  let varEl s a = El (varSort s) <$> a-      varT s a  = varEl s (varM a)-      varS s    = pure $ sort $ varSort s-  genPrimForce (nPi "x" (varT 3 1) $-                (nPi "y" (varT 4 2) $ varEl 4 $ varM 2 <@> varM 0) -->-                varEl 3 (varM 1 <@> varM 0)) $-    \ f u -> apply f [u]--primForceLemma :: TCM PrimitiveImpl-primForceLemma = do-  let varEl s a = El (varSort s) <$> a-      varT s a  = varEl s (varM a)-      varS s    = pure $ sort $ varSort s-  refl  <- primRefl-  force <- primFunName <$> getPrimitive "primForce"-  genPrimForce (nPi "x" (varT 3 1) $-                nPi "f" (nPi "y" (varT 4 2) $ varEl 4 $ varM 2 <@> varM 0) $-                varEl 4 $ primEquality <#> varM 4 <#> (varM 2 <@> varM 1)-                                       <@> (pure (Def force []) <#> varM 5 <#> varM 4 <#> varM 3 <#> varM 2 <@> varM 1 <@> varM 0)-                                       <@> (varM 0 <@> varM 1)-               ) $ \ _ _ -> refl--mkPrimLevelZero :: TCM PrimitiveImpl-mkPrimLevelZero = do-  t <- primType (undefined :: Lvl)-  return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 0 $ \_ -> redReturn $ Level $ Max []--mkPrimLevelSuc :: TCM PrimitiveImpl-mkPrimLevelSuc = do-  t <- primType (id :: Lvl -> Lvl)-  return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 1 $ \ ~[a] -> do-    l <- levelView' $ unArg a-    redReturn $ Level $ levelSuc l--mkPrimLevelMax :: TCM PrimitiveImpl-mkPrimLevelMax = do-  t <- primType (max :: Op Lvl)-  return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 2 $ \ ~[a, b] -> do-    Max as <- levelView' $ unArg a-    Max bs <- levelView' $ unArg b-    redReturn $ Level $ levelMax $ as ++ bs--mkPrimFun1TCM :: (FromTerm a, ToTerm b, TermLike b) =>-                 TCM Type -> (a -> ReduceM b) -> TCM PrimitiveImpl-mkPrimFun1TCM mt f = do-    toA   <- fromTerm-    fromB <- toTermR-    t     <- mt-    return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 1 $ \ts ->-      case ts of-        [v] ->-          redBind (toA v) (\v' -> [v']) $ \x -> do-            b <- f x-            case allMetas b of-              (m:_) -> return $ NoReduction [reduced (Blocked m v)]-              []       -> redReturn =<< fromB b-        _ -> __IMPOSSIBLE__---- Tying the knot-mkPrimFun1 :: (PrimType a, FromTerm a, PrimType b, ToTerm b) =>-              (a -> b) -> TCM PrimitiveImpl-mkPrimFun1 f = do-    toA   <- fromTerm-    fromB <- toTerm-    t     <- primType f-    return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 1 $ \ts ->-      case ts of-        [v] ->-          redBind (toA v)-              (\v' -> [v']) $ \x ->-          redReturn $ fromB $ f x-        _ -> __IMPOSSIBLE__--mkPrimFun2 :: ( PrimType a, FromTerm a, ToTerm a-              , PrimType b, FromTerm b-              , PrimType c, ToTerm c ) =>-              (a -> b -> c) -> TCM PrimitiveImpl-mkPrimFun2 f = do-    toA   <- fromTerm-    fromA <- toTerm-    toB   <- fromTerm-    fromC <- toTerm-    t     <- primType f-    return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 2 $ \ts ->-      case ts of-        [v,w] ->-          redBind (toA v)-              (\v' -> [v', notReduced w]) $ \x ->-          redBind (toB w)-              (\w' -> [ reduced $ notBlocked $ Arg (argInfo v) (fromA x)-                      , w']) $ \y ->-          redReturn $ fromC $ f x y-        _ -> __IMPOSSIBLE__--mkPrimFun4 :: ( PrimType a, FromTerm a, ToTerm a-              , PrimType b, FromTerm b, ToTerm b-              , PrimType c, FromTerm c, ToTerm c-              , PrimType d, FromTerm d-              , PrimType e, ToTerm e ) =>-              (a -> b -> c -> d -> e) -> TCM PrimitiveImpl-mkPrimFun4 f = do-    (toA, fromA) <- (,) <$> fromTerm <*> toTerm-    (toB, fromB) <- (,) <$> fromTerm <*> toTerm-    (toC, fromC) <- (,) <$> fromTerm <*> toTerm-    toD          <- fromTerm-    fromE        <- toTerm-    t <- primType f-    return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 4 $ \ts ->-      let argFrom fromX a x =-            reduced $ notBlocked $ Arg (argInfo a) (fromX x)-      in case ts of-        [a,b,c,d] ->-          redBind (toA a)-              (\a' -> a' : map notReduced [b,c,d]) $ \x ->-          redBind (toB b)-              (\b' -> [argFrom fromA a x, b', notReduced c, notReduced d]) $ \y ->-          redBind (toC c)-              (\c' -> [ argFrom fromA a x-                      , argFrom fromB b y-                      , c', notReduced d]) $ \z ->-          redBind (toD d)-              (\d' -> [ argFrom fromA a x-                      , argFrom fromB b y-                      , argFrom fromC c z-                      , d']) $ \w ->--          redReturn $ fromE $ f x y z w-        _ -> __IMPOSSIBLE__---- Type combinators--infixr 4 -->-infixr 4 .-->-infixr 4 ..-->--(-->), (.-->), (..-->) :: TCM Type -> TCM Type -> TCM Type-a --> b = garr id a b-a .--> b = garr (const $ Irrelevant) a b-a ..--> b = garr (const $ NonStrict) a b--garr :: (Relevance -> Relevance) -> TCM Type -> TCM Type -> TCM Type-garr f a b = do-  a' <- a-  b' <- b-  return $ El (funSort (getSort a') (getSort b')) $-           Pi (Dom (mapRelevance f defaultArgInfo) a') (NoAbs "_" b')--gpi :: ArgInfo -> String -> TCM Type -> TCM Type -> TCM Type-gpi info name a b = do-  a <- a-  b <- addContext (name, Dom info a) b-  let y = stringToArgName name-  return $ El (piSort (getSort a) (Abs y (getSort b)))-              (Pi (Dom info a) (Abs y b))--hPi, nPi :: String -> TCM Type -> TCM Type -> TCM Type-hPi = gpi $ setHiding Hidden defaultArgInfo-nPi = gpi defaultArgInfo--varM :: Int -> TCM Term-varM = return . var--infixl 9 <@>, <#>--gApply :: Hiding -> TCM Term -> TCM Term -> TCM Term-gApply h a b = do-    x <- a-    y <- b-    return $ x `apply` [Arg (setHiding h defaultArgInfo) y]--(<@>),(<#>) :: TCM Term -> TCM Term -> TCM Term-(<@>) = gApply NotHidden-(<#>) = gApply Hidden--list :: TCM Term -> TCM Term-list t = primList <@> t--io :: TCM Term -> TCM Term-io t = primIO <@> t--el :: TCM Term -> TCM Type-el t = El (mkType 0) <$> t--tset :: TCM Type-tset = return $ sort (mkType 0)--sSizeUniv :: Sort-sSizeUniv = mkType 0--- Andreas, 2016-04-14 switching off SizeUniv, unfixing issue #1428--- sSizeUniv = SizeUniv--tSizeUniv :: TCM Type-tSizeUniv = tset--- Andreas, 2016-04-14 switching off SizeUniv, unfixing issue #1428--- tSizeUniv = return $ El sSizeUniv $ Sort sSizeUniv--- Andreas, 2015-03-16 Since equality checking for types--- includes equality checking for sorts, we cannot put--- SizeUniv in Setω.  (SizeUniv : Setω) == (_0 : suc _0)--- will first instantiate _0 := Setω, which is wrong.--- tSizeUniv = return $ El Inf $ Sort SizeUniv---- | Abbreviation: @argN = 'Arg' 'defaultArgInfo'@.-argN :: e -> Arg e-argN = Arg defaultArgInfo--domN :: e -> Dom e-domN = Dom defaultArgInfo---- | Abbreviation: @argH = 'hide' 'Arg' 'defaultArgInfo'@.-argH :: e -> Arg e-argH = Arg $ setHiding Hidden defaultArgInfo--domH :: e -> Dom e-domH = Dom $ setHiding Hidden defaultArgInfo-------------------------------------------------------------------------------- * The actual primitive functions------------------------------------------------------------------------------type Op   a = a -> a -> a-type Fun  a = a -> a-type Rel  a = a -> a -> Bool-type Pred a = a -> Bool--primitiveFunctions :: Map String (TCM PrimitiveImpl)-primitiveFunctions = Map.fromList--  -- Ulf, 2015-10-28: Builtin integers now map to a datatype, and since you-  -- can define these functions (reasonably) efficiently using the primitive-  -- functions on natural numbers there's no need for them anymore. Keeping the-  -- show function around for convenience, and as a test case for a primitive-  -- function taking an integer.-  -- -- Integer functions-  -- [ "primIntegerPlus"     |-> mkPrimFun2 ((+)        :: Op Integer)-  -- , "primIntegerMinus"    |-> mkPrimFun2 ((-)        :: Op Integer)-  -- , "primIntegerTimes"    |-> mkPrimFun2 ((*)        :: Op Integer)-  -- , "primIntegerDiv"      |-> mkPrimFun2 (div        :: Op Integer)    -- partial-  -- , "primIntegerMod"      |-> mkPrimFun2 (mod        :: Op Integer)    -- partial-  -- , "primIntegerEquality" |-> mkPrimFun2 ((==)       :: Rel Integer)-  -- , "primIntegerLess"     |-> mkPrimFun2 ((<)        :: Rel Integer)-  -- , "primIntegerAbs"      |-> mkPrimFun1 (Nat . abs  :: Integer -> Nat)-  -- , "primNatToInteger"    |-> mkPrimFun1 (toInteger  :: Nat -> Integer)-  [ "primShowInteger"     |-> mkPrimFun1 (Str . show :: Integer -> Str)--  -- Natural number functions-  , "primNatPlus"         |-> mkPrimFun2 ((+)                     :: Op Nat)-  , "primNatMinus"        |-> mkPrimFun2 ((\x y -> max 0 (x - y)) :: Op Nat)-  , "primNatTimes"        |-> mkPrimFun2 ((*)                     :: Op Nat)-  , "primNatDivSucAux"    |-> mkPrimFun4 ((\k m n j -> k + div (max 0 $ n + m - j) (m + 1)) :: Nat -> Nat -> Nat -> Nat -> Nat)-  , "primNatModSucAux"    |->-      let aux :: Nat -> Nat -> Nat -> Nat -> Nat-          aux k m n j | n > j     = mod (n - j - 1) (m + 1)-                      | otherwise = k + n-      in mkPrimFun4 aux-  , "primNatEquality"     |-> mkPrimFun2 ((==) :: Rel Nat)-  , "primNatLess"         |-> mkPrimFun2 ((<)  :: Rel Nat)--  -- Machine words-  , "primWord64ToNat"     |-> mkPrimFun1 (fromIntegral :: Word64 -> Nat)-  , "primWord64FromNat"   |-> mkPrimFun1 (fromIntegral :: Nat -> Word64)--  -- Level functions-  , "primLevelZero"       |-> mkPrimLevelZero-  , "primLevelSuc"        |-> mkPrimLevelSuc-  , "primLevelMax"        |-> mkPrimLevelMax--  -- Floating point functions-  , "primNatToFloat"      |-> mkPrimFun1 (fromIntegral    :: Nat -> Double)-  , "primFloatPlus"       |-> mkPrimFun2 ((+)             :: Op Double)-  , "primFloatMinus"      |-> mkPrimFun2 ((-)             :: Op Double)-  , "primFloatTimes"      |-> mkPrimFun2 ((*)             :: Op Double)-  , "primFloatNegate"     |-> mkPrimFun1 (negate          :: Fun Double)-  , "primFloatDiv"        |-> mkPrimFun2 ((/)             :: Op Double)-  -- ASR (2016-09-29). We use bitwise equality for comparing Double-  -- because Haskell's Eq, which equates 0.0 and -0.0, allows to prove-  -- a contradiction (see Issue #2169).-  , "primFloatEquality"   |-> mkPrimFun2 (floatEq         :: Rel Double)-  , "primFloatLess"       |-> mkPrimFun2 (floatLt         :: Rel Double)-  , "primFloatNumericalEquality" |-> mkPrimFun2 ((==)     :: Rel Double)-  , "primFloatNumericalLess"     |-> mkPrimFun2 ((<)      :: Rel Double)-  , "primFloatSqrt"       |-> mkPrimFun1 (sqrt            :: Double -> Double)-  , "primRound"           |-> mkPrimFun1 (round           :: Double -> Integer)-  , "primFloor"           |-> mkPrimFun1 (floor           :: Double -> Integer)-  , "primCeiling"         |-> mkPrimFun1 (ceiling         :: Double -> Integer)-  , "primExp"             |-> mkPrimFun1 (exp             :: Fun Double)-  , "primLog"             |-> mkPrimFun1 (log             :: Fun Double)-  , "primSin"             |-> mkPrimFun1 (sin             :: Fun Double)-  , "primCos"             |-> mkPrimFun1 (cos             :: Fun Double)-  , "primTan"             |-> mkPrimFun1 (tan             :: Fun Double)-  , "primASin"            |-> mkPrimFun1 (asin            :: Fun Double)-  , "primACos"            |-> mkPrimFun1 (acos            :: Fun Double)-  , "primATan"            |-> mkPrimFun1 (atan            :: Fun Double)-  , "primATan2"           |-> mkPrimFun2 (atan2           :: Double -> Double -> Double)-  , "primShowFloat"       |-> mkPrimFun1 (Str . show      :: Double -> Str)--  -- Character functions-  , "primCharEquality"    |-> mkPrimFun2 ((==) :: Rel Char)-  , "primIsLower"         |-> mkPrimFun1 isLower-  , "primIsDigit"         |-> mkPrimFun1 isDigit-  , "primIsAlpha"         |-> mkPrimFun1 isAlpha-  , "primIsSpace"         |-> mkPrimFun1 isSpace-  , "primIsAscii"         |-> mkPrimFun1 isAscii-  , "primIsLatin1"        |-> mkPrimFun1 isLatin1-  , "primIsPrint"         |-> mkPrimFun1 isPrint-  , "primIsHexDigit"      |-> mkPrimFun1 isHexDigit-  , "primToUpper"         |-> mkPrimFun1 toUpper-  , "primToLower"         |-> mkPrimFun1 toLower-  , "primCharToNat"       |-> mkPrimFun1 (fromIntegral . fromEnum :: Char -> Nat)-  , "primNatToChar"       |-> mkPrimFun1 (toEnum . fromIntegral . (`mod` 0x110000)  :: Nat -> Char)-  , "primShowChar"        |-> mkPrimFun1 (Str . show . pretty . LitChar noRange)--  -- String functions-  , "primStringToList"    |-> mkPrimFun1 unStr-  , "primStringFromList"  |-> mkPrimFun1 Str-  , "primStringAppend"    |-> mkPrimFun2 (\s1 s2 -> Str $ unStr s1 ++ unStr s2)-  , "primStringEquality"  |-> mkPrimFun2 ((==) :: Rel Str)-  , "primShowString"      |-> mkPrimFun1 (Str . show . pretty . LitString noRange . unStr)--  -- Other stuff-  , "primTrustMe"         |-> primTrustMe-    -- This needs to be force : A → ((x : A) → B x) → B x rather than seq because of call-by-name.-  , "primForce"           |-> primForce-  , "primForceLemma"      |-> primForceLemma-  , "primQNameEquality"   |-> mkPrimFun2 ((==) :: Rel QName)-  , "primQNameLess"       |-> mkPrimFun2 ((<) :: Rel QName)-  , "primShowQName"       |-> mkPrimFun1 (Str . show :: QName -> Str)-  , "primQNameFixity"     |-> mkPrimFun1 (nameFixity . qnameName)-  , "primMetaEquality"    |-> mkPrimFun2 ((==) :: Rel MetaId)-  , "primMetaLess"        |-> mkPrimFun2 ((<) :: Rel MetaId)-  , "primShowMeta"        |-> mkPrimFun1 (Str . show . pretty :: MetaId -> Str)-  ]-  where-    (|->) = (,)--lookupPrimitiveFunction :: String -> TCM PrimitiveImpl-lookupPrimitiveFunction x =-  fromMaybe (typeError $ NoSuchPrimitiveFunction x)-            (Map.lookup x primitiveFunctions)--lookupPrimitiveFunctionQ :: QName -> TCM (String, PrimitiveImpl)-lookupPrimitiveFunctionQ q = do-  let s = case qnameName q of-            Name _ x _ _ -> prettyShow x+{-# LANGUAGE DeriveFunctor              #-}+{-# LANGUAGE DeriveFoldable             #-}+{-# LANGUAGE DeriveTraversable          #-}+{-# LANGUAGE NondecreasingIndentation #-}++-- ASR (2017-04-10). TODO: Is this option required by the final+-- version of GHC 8.2.1 (it was required by the RC 1)?+#if __GLASGOW_HASKELL__ >= 802+{-# OPTIONS -Wno-simplifiable-class-constraints #-}+#endif++{-| Primitive functions, such as addition on builtin integers.+-}+module Agda.TypeChecking.Primitive where++import Control.Monad+import Control.Monad.Reader (asks)+import Control.Monad.Trans (lift)++import Data.Char+import Data.Either (partitionEithers)+import Data.List (nub)+import Data.Map (Map)+import qualified Data.Map as Map+import Data.Set (Set)+import qualified Data.Set as Set+import Data.Maybe+import Data.Traversable (traverse)+import Data.Monoid (mempty)+import Data.Word++import Agda.Interaction.Options+import qualified Agda.Interaction.Options.Lenses as Lens++import Agda.Syntax.Position+import Agda.Syntax.Common hiding (Nat)+import Agda.Syntax.Internal+import Agda.Syntax.Internal.Generic (TermLike(..))+import Agda.Syntax.Literal+import Agda.Syntax.Concrete.Pretty ()+import Agda.Syntax.Fixity++import Agda.TypeChecking.Monad hiding (getConstInfo, typeOfConst)+import qualified Agda.TypeChecking.Monad as TCM+import Agda.TypeChecking.Monad.Builtin+import Agda.TypeChecking.Records+import Agda.TypeChecking.Reduce+import Agda.TypeChecking.Reduce.Monad as Reduce+import Agda.TypeChecking.Substitute+import Agda.TypeChecking.Telescope+import Agda.TypeChecking.Errors+import Agda.TypeChecking.Functions+import Agda.TypeChecking.Level+import Agda.TypeChecking.Quote (QuotingKit, quoteTermWithKit, quoteTypeWithKit, quoteClauseWithKit, quotingKit)+import Agda.TypeChecking.Pretty ()  -- instances only+import Agda.TypeChecking.Names+import Agda.TypeChecking.Warnings++import Agda.Utils.Functor+import Agda.Utils.List+import Agda.Utils.Maybe+import Agda.Utils.Monad+import Agda.Utils.Pretty (pretty, prettyShow)+import Agda.Utils.Size+import Agda.Utils.String ( Str(Str), unStr )+import Agda.Utils.Tuple+import Agda.Utils.Float++#include "undefined.h"+import Agda.Utils.Impossible+import Debug.Trace++------------------------------------------------------------------------+-- * Builtin Sigma+------------------------------------------------------------------------++data SigmaKit = SigmaKit+  { sigmaName :: QName+  , sigmaCon  :: ConHead+  , sigmaFst  :: QName+  , sigmaSnd  :: QName+  }+  deriving (Eq,Show)++getSigmaKit :: (HasBuiltins m, HasConstInfo m) => m (Maybe SigmaKit)+getSigmaKit = do+  ms <- getBuiltinName' builtinSigma+  case ms of+    Nothing -> return Nothing+    Just sigma -> do+      def <- theDef <$> getConstInfo sigma+      case def of+        Record { recFields = [fst,snd], recConHead = con } -> do+          return . Just $ SigmaKit+            { sigmaName = sigma+            , sigmaCon  = con+            , sigmaFst  = unArg fst+            , sigmaSnd  = unArg snd+            }+        _ -> __IMPOSSIBLE__++---------------------------------------------------------------------------+-- * Primitive functions+---------------------------------------------------------------------------++data PrimitiveImpl = PrimImpl Type PrimFun++-- Haskell type to Agda type++newtype Nat = Nat { unNat :: Integer }+            deriving (Eq, Ord, Num, Enum, Real)++-- In GHC > 7.8 deriving Integral causes an unnecessary toInteger+-- warning.+instance Integral Nat where+  toInteger = unNat+  quotRem (Nat a) (Nat b) = (Nat q, Nat r)+    where (q, r) = quotRem a b++instance TermLike Nat where+  traverseTermM _ = pure+  foldTerm _      = mempty++instance Show Nat where+  show = show . toInteger++newtype Lvl = Lvl { unLvl :: Integer }+  deriving (Eq, Ord)++instance Show Lvl where+  show = show . unLvl++class PrimType a where+  primType :: a -> TCM Type++instance (PrimType a, PrimType b) => PrimTerm (a -> b) where+  primTerm _ = unEl <$> (primType (undefined :: a) --> primType (undefined :: b))++instance PrimTerm a => PrimType a where+  primType _ = el $ primTerm (undefined :: a)++class    PrimTerm a       where primTerm :: a -> TCM Term+instance PrimTerm Integer where primTerm _ = primInteger+instance PrimTerm Word64  where primTerm _ = primWord64+instance PrimTerm Bool    where primTerm _ = primBool+instance PrimTerm Char    where primTerm _ = primChar+instance PrimTerm Double  where primTerm _ = primFloat+instance PrimTerm Str     where primTerm _ = primString+instance PrimTerm Nat     where primTerm _ = primNat+instance PrimTerm Lvl     where primTerm _ = primLevel+instance PrimTerm QName   where primTerm _ = primQName+instance PrimTerm MetaId  where primTerm _ = primAgdaMeta+instance PrimTerm Type    where primTerm _ = primAgdaTerm++instance PrimTerm Fixity' where primTerm _ = primFixity++instance PrimTerm a => PrimTerm [a] where+  primTerm _ = list (primTerm (undefined :: a))++instance PrimTerm a => PrimTerm (IO a) where+  primTerm _ = io (primTerm (undefined :: a))++-- From Agda term to Haskell value++class ToTerm a where+  toTerm  :: TCM (a -> Term)+  toTermR :: TCM (a -> ReduceM Term)++  toTermR = (pure .) <$> toTerm++instance ToTerm Nat     where toTerm = return $ Lit . LitNat noRange . toInteger+instance ToTerm Word64  where toTerm = return $ Lit . LitWord64 noRange+instance ToTerm Lvl     where toTerm = return $ Level . Max . (:[]) . ClosedLevel . unLvl+instance ToTerm Double  where toTerm = return $ Lit . LitFloat noRange+instance ToTerm Char    where toTerm = return $ Lit . LitChar noRange+instance ToTerm Str     where toTerm = return $ Lit . LitString noRange . unStr+instance ToTerm QName   where toTerm = return $ Lit . LitQName noRange+instance ToTerm MetaId  where+  toTerm = do+    file <- getCurrentPath+    return $ Lit . LitMeta noRange file++instance ToTerm Integer where+  toTerm = do+    pos     <- primIntegerPos+    negsuc  <- primIntegerNegSuc+    fromNat <- toTerm :: TCM (Nat -> Term)+    let intToTerm = fromNat . fromIntegral :: Integer -> Term+    let fromInt n | n >= 0    = apply pos    [defaultArg $ intToTerm n]+                  | otherwise = apply negsuc [defaultArg $ intToTerm (-n - 1)]+    return fromInt++instance ToTerm Bool where+  toTerm = do+    true  <- primTrue+    false <- primFalse+    return $ \b -> if b then true else false++instance ToTerm Term where+  toTerm  = do kit <- quotingKit; runReduceF (quoteTermWithKit kit)+  toTermR = do kit <- quotingKit; return (quoteTermWithKit kit)++instance ToTerm Type where+  toTerm  = do kit <- quotingKit; runReduceF (quoteTypeWithKit kit)+  toTermR = do kit <- quotingKit; return (quoteTypeWithKit kit)++instance ToTerm ArgInfo where+  toTerm = do+    info <- primArgArgInfo+    vis  <- primVisible+    hid  <- primHidden+    ins  <- primInstance+    rel  <- primRelevant+    irr  <- primIrrelevant+    return $ \ i -> info `applys`+      [ case getHiding i of+          NotHidden  -> vis+          Hidden     -> hid+          Instance{} -> ins+      , case getRelevance i of+          Relevant   -> rel+          Irrelevant -> irr+          NonStrict  -> rel+      ]++instance ToTerm Fixity' where+  toTerm = (. theFixity) <$> toTerm++instance ToTerm Fixity where+  toTerm = do+    lToTm  <- toTerm+    aToTm  <- toTerm+    fixity <- primFixityFixity+    return $ \ Fixity{fixityAssoc = a, fixityLevel = l} ->+      fixity `apply` [defaultArg (aToTm a), defaultArg (lToTm l)]++instance ToTerm Associativity where+  toTerm = do+    lassoc <- primAssocLeft+    rassoc <- primAssocRight+    nassoc <- primAssocNon+    return $ \ a ->+      case a of+        NonAssoc   -> nassoc+        LeftAssoc  -> lassoc+        RightAssoc -> rassoc++instance ToTerm PrecedenceLevel where+  toTerm = do+    (iToTm :: Integer -> Term) <- toTerm+    related   <- primPrecRelated+    unrelated <- primPrecUnrelated+    return $ \ p ->+      case p of+        Unrelated -> unrelated+        Related n -> related `apply` [defaultArg $ iToTm n]++-- | @buildList A ts@ builds a list of type @List A@. Assumes that the terms+--   @ts@ all have type @A@.+buildList :: TCM ([Term] -> Term)+buildList = do+    nil'  <- primNil+    cons' <- primCons+    let nil       = nil'+        cons x xs = cons' `applys` [x, xs]+    return $ foldr cons nil++instance ToTerm a => ToTerm [a] where+  toTerm = do+    mkList <- buildList+    fromA  <- toTerm+    return $ mkList . map fromA++-- From Haskell value to Agda term++type FromTermFunction a = Arg Term ->+                          ReduceM (Reduced (MaybeReduced (Arg Term)) a)++class FromTerm a where+  fromTerm :: TCM (FromTermFunction a)++instance FromTerm Integer where+  fromTerm = do+    Con pos _    [] <- primIntegerPos+    Con negsuc _ [] <- primIntegerNegSuc+    toNat         <- fromTerm :: TCM (FromTermFunction Nat)+    return $ \ v -> do+      b <- reduceB' v+      let v'  = ignoreBlocking b+          arg = (<$ v')+      case unArg (ignoreBlocking b) of+        Con c ci [Apply u]+          | c == pos    ->+            redBind (toNat u)+              (\ u' -> notReduced $ arg $ Con c ci [Apply $ ignoreReduced u']) $ \ n ->+            redReturn $ fromIntegral n+          | c == negsuc ->+            redBind (toNat u)+              (\ u' -> notReduced $ arg $ Con c ci [Apply $ ignoreReduced u']) $ \ n ->+            redReturn $ fromIntegral $ -n - 1+        _ -> return $ NoReduction (reduced b)++instance FromTerm Nat where+  fromTerm = fromLiteral $ \l -> case l of+    LitNat _ n -> Just $ fromInteger n+    _          -> Nothing++instance FromTerm Word64 where+  fromTerm = fromLiteral $ \ case+    LitWord64 _ n -> Just n+    _             -> Nothing++instance FromTerm Lvl where+  fromTerm = fromReducedTerm $ \l -> case l of+    Level (Max [ClosedLevel n]) -> Just $ Lvl n+    _                           -> Nothing++instance FromTerm Double where+  fromTerm = fromLiteral $ \l -> case l of+    LitFloat _ x -> Just x+    _            -> Nothing++instance FromTerm Char where+  fromTerm = fromLiteral $ \l -> case l of+    LitChar _ c -> Just c+    _           -> Nothing++instance FromTerm Str where+  fromTerm = fromLiteral $ \l -> case l of+    LitString _ s -> Just $ Str s+    _             -> Nothing++instance FromTerm QName where+  fromTerm = fromLiteral $ \l -> case l of+    LitQName _ x -> Just x+    _             -> Nothing++instance FromTerm MetaId where+  fromTerm = fromLiteral $ \l -> case l of+    LitMeta _ _ x -> Just x+    _             -> Nothing++instance FromTerm Bool where+    fromTerm = do+        true  <- primTrue+        false <- primFalse+        fromReducedTerm $ \t -> case t of+            _   | t =?= true  -> Just True+                | t =?= false -> Just False+                | otherwise   -> Nothing+        where+            a =?= b = a === b+            Def x [] === Def y []   = x == y+            Con x _ [] === Con y _ [] = x == y+            Var n [] === Var m []   = n == m+            _        === _          = False++instance (ToTerm a, FromTerm a) => FromTerm [a] where+  fromTerm = do+    nil'  <- primNil+    cons' <- primCons+    nil   <- isCon nil'+    cons  <- isCon cons'+    toA   <- fromTerm+    fromA <- toTerm+    return $ mkList nil cons toA fromA+    where+      isCon (Lam _ b)  = isCon $ absBody b+      isCon (Con c _ _)= return c+      isCon v          = __IMPOSSIBLE__++      mkList nil cons toA fromA t = do+        b <- reduceB' t+        let t = ignoreBlocking b+        let arg = (<$ t)+        case unArg t of+          Con c ci []+            | c == nil  -> return $ YesReduction NoSimplification []+          Con c ci es+            | c == cons, Just [x,xs] <- allApplyElims es ->+              redBind (toA x)+                  (\x' -> notReduced $ arg $ Con c ci (map Apply [ignoreReduced x',xs])) $ \y ->+              redBind+                  (mkList nil cons toA fromA xs)+                  (fmap $ \xs' -> arg $ Con c ci (map Apply [defaultArg $ fromA y, xs'])) $ \ys ->+              redReturn (y : ys)+          _ -> return $ NoReduction (reduced b)++-- | Conceptually: @redBind m f k = either (return . Left . f) k =<< m@+redBind :: ReduceM (Reduced a a') -> (a -> b) ->+           (a' -> ReduceM (Reduced b b')) -> ReduceM (Reduced b b')+redBind ma f k = do+    r <- ma+    case r of+        NoReduction x    -> return $ NoReduction $ f x+        YesReduction _ y -> k y++redReturn :: a -> ReduceM (Reduced a' a)+redReturn = return . YesReduction YesSimplification++fromReducedTerm :: (Term -> Maybe a) -> TCM (FromTermFunction a)+fromReducedTerm f = return $ \t -> do+    b <- reduceB' t+    case f $ unArg (ignoreBlocking b) of+        Just x  -> return $ YesReduction NoSimplification x+        Nothing -> return $ NoReduction (reduced b)++fromLiteral :: (Literal -> Maybe a) -> TCM (FromTermFunction a)+fromLiteral f = fromReducedTerm $ \t -> case t of+    Lit lit -> f lit+    _       -> Nothing++requireCubical :: TCM ()+requireCubical = do+  cubical <- optCubical <$> pragmaOptions+  unless cubical $+    typeError $ GenericError "Missing option --cubical"++primINeg' :: TCM PrimitiveImpl+primINeg' = do+  requireCubical+  t <- elInf primInterval --> elInf primInterval+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 1 $ \ ts -> do+    case ts of+     [x] -> do+       unview <- intervalUnview'+       view <- intervalView'+       sx <- reduceB' x+       ix <- intervalView (unArg $ ignoreBlocking sx)+       let+         ineg :: Arg Term -> Arg Term+         ineg = fmap (unview . f . view)+         f ix = case ix of+           IZero -> IOne+           IOne  -> IZero+           IMin x y -> IMax (ineg x) (ineg y)+           IMax x y -> IMin (ineg x) (ineg y)+           INeg x -> OTerm (unArg x)+           OTerm t -> INeg (Arg defaultArgInfo t)+       case ix of+        OTerm t -> return $ NoReduction [reduced sx]+        _       -> redReturn (unview $ f ix)+     _ -> __IMPOSSIBLE__++primDepIMin' :: TCM PrimitiveImpl+primDepIMin' = do+  requireCubical+  t <- runNamesT [] $+       nPi' "φ" (elInf $ cl primInterval) $ \ φ ->+       (pPi' "o" φ $ \ o -> elInf $ cl primInterval) --> elInf (cl primInterval)+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 2 $ \ ts -> do+    case ts of+      [x,y] -> do+        sx <- reduceB' x+        ix <- intervalView (unArg $ ignoreBlocking sx)+        itisone <- getTerm "primDepIMin" builtinItIsOne+        case ix of+          IZero -> redReturn =<< intervalUnview IZero+          IOne  -> redReturn =<< (pure (unArg y) <@> pure itisone)+          _     -> do+            sy <- reduceB' y+            iy <- intervalView =<< reduce' =<< (pure (unArg $ ignoreBlocking sy) <@> pure itisone)+            case iy of+              IZero -> redReturn =<< intervalUnview IZero+              IOne  -> redReturn (unArg $ ignoreBlocking sx)+              _     -> return $ NoReduction [reduced sx, reduced sy]+      _      -> __IMPOSSIBLE__++primIBin :: IntervalView -> IntervalView -> TCM PrimitiveImpl+primIBin unit absorber = do+  requireCubical+  t <- elInf primInterval --> elInf primInterval --> elInf primInterval+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 2 $ \ ts -> do+    case ts of+     [x,y] -> do+       sx <- reduceB' x+       ix <- intervalView (unArg $ ignoreBlocking sx)+       case ix of+         ix | ix ==% absorber -> redReturn =<< intervalUnview absorber+         ix | ix ==% unit     -> return $ YesReduction YesSimplification (unArg y)+         _     -> do+           sy <- reduceB' y+           iy <- intervalView (unArg $ ignoreBlocking sy)+           case iy of+            iy | iy ==% absorber -> redReturn =<< intervalUnview absorber+            iy | iy ==% unit     -> return $ YesReduction YesSimplification (unArg x)+            _                   -> return $ NoReduction [reduced sx,reduced sy]+     _ -> __IMPOSSIBLE__+  where+    (==%) IZero IZero = True+    (==%) IOne IOne = True+    (==%) _ _ = False+++primIMin' :: TCM PrimitiveImpl+primIMin' = primIBin IOne IZero++primIMax' :: TCM PrimitiveImpl+primIMax' = primIBin IZero IOne++imax :: HasBuiltins m => m Term -> m Term -> m Term+imax x y = do+  x' <- x+  y' <- y+  intervalUnview (IMax (argN x') (argN y'))++imin :: HasBuiltins m => m Term -> m Term -> m Term+imin x y = do+  x' <- x+  y' <- y+  intervalUnview (IMin (argN x') (argN y'))++-- ∀ {a}{c}{A : Set a}{x : A}(C : ∀ y → Id x y → Set c) → C x (conid i1 (\ i → x)) → ∀ {y} (p : Id x y) → C y p+primIdJ :: TCM PrimitiveImpl+primIdJ = do+  requireCubical+  t <- runNamesT [] $+       hPi' "a" (el $ cl primLevel) $ \ a ->+       hPi' "c" (el $ cl primLevel) $ \ c ->+       hPi' "A" (sort . tmSort <$> a) $ \ bA ->+       hPi' "x" (el' a bA) $ \ x ->+       nPi' "C" (nPi' "y" (el' a bA) $ \ y ->+                 (el' a $ cl primId <#> a <#> bA <@> x <@> y) --> (sort . tmSort <$> c)) $ \ bC ->+       (el' c $ bC <@> x <@>+            (cl primConId <#> a <#> bA <#> x <#> x <@> cl primIOne+                       <@> lam "i" (\ _ -> x))) -->+       (hPi' "y" (el' a bA) $ \ y ->+        nPi' "p" (el' a $ cl primId <#> a <#> bA <@> x <@> y) $ \ p ->+        el' c $ bC <@> y <@> p)+  conidn <- getBuiltinName builtinConId+  conid  <- primConId+  -- TODO make a kit+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 8 $ \ ts -> do+    unview <- intervalUnview'+    let imax x y = do x' <- x; y' <- y; pure $ unview (IMax (argN x') (argN y'))+        imin x y = do x' <- x; y' <- y; pure $ unview (IMin (argN x') (argN y'))+        ineg x = unview . INeg . argN <$> x+    mcomp <- getTerm' "primComp"+    case ts of+     [la,lc,a,x,c,d,y,eq] -> do+       seq    <- reduceB' eq+       case unArg $ ignoreBlocking $ seq of+         (Def q [Apply la,Apply a,Apply x,Apply y,Apply phi,Apply p])+           | Just q == conidn, Just comp <- mcomp -> do+          redReturn $ runNames [] $ do+             [lc,c,d,la,a,x,y,phi,p] <- mapM (open . unArg) [lc,c,d,la,a,x,y,phi,p]+             let w i = do+                   [x,y,p,i] <- sequence [x,y,p,i]+                   pure $ p `applyE` [IApply x y i]+             pure comp <#> (lam "i" $ \ _ -> lc)+                       <@> (lam "i" $ \ i ->+                              c <@> (w i)+                                <@> (pure conid <#> la <#> a <#> x <#> (w i)+                                                <@> (phi `imax` ineg i)+                                                <@> (lam "j" $ \ j -> w $ imin i j)))+                       <@> phi+                       <@> (lam "i" $ \ _ -> nolam <$> d) -- TODO block+                       <@> d+         _ -> return $ NoReduction $ map notReduced [la,lc,a,x,c,d,y] ++ [reduced seq]+     _ -> __IMPOSSIBLE__++primIdElim' :: TCM PrimitiveImpl+primIdElim' = do+  requireCubical+  t <- runNamesT [] $+       hPi' "a" (el $ cl primLevel) $ \ a ->+       hPi' "c" (el $ cl primLevel) $ \ c ->+       hPi' "A" (sort . tmSort <$> a) $ \ bA ->+       hPi' "x" (el' a bA) $ \ x ->+       nPi' "C" (nPi' "y" (el' a bA) $ \ y ->+                 (el' a $ cl primId <#> a <#> bA <@> x <@> y) --> (sort . tmSort <$> c)) $ \ bC ->+       (nPi' "φ" (elInf $ cl primInterval) $ \ phi ->+        nPi' "y" (elInf $ cl primSub <#> a <@> bA <@> phi <@> (lam "o" $ const x)) $ \ y ->+        let pathxy = (cl primPath <#> a <@> bA <@> x <@> oucy)+            oucy = (cl primSubOut <#> a <#> bA <#> phi <#> (lam "o" $ const x) <@> y)+            reflx = (lam "o" $ \ _ -> lam "i" $ \ _ -> x) -- TODO Andrea, should block on o+        in+        nPi' "w" (elInf $ cl primSub <#> a <@> pathxy <@> phi <@> reflx) $ \ w ->+        let oucw = (cl primSubOut <#> a <#> pathxy <#> phi <#> reflx <@> w) in+        el' c $ bC <@> oucy <@> (cl primConId <#> a <#> bA <#> x <#> oucy <@> phi <@> oucw))+       -->+       (hPi' "y" (el' a bA) $ \ y ->+        nPi' "p" (el' a $ cl primId <#> a <#> bA <@> x <@> y) $ \ p ->+        el' c $ bC <@> y <@> p)+  conid <- primConId+  sin <- primSubIn+  path <- primPath+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 8 $ \ ts -> do+    case ts of+      [a,c,bA,x,bC,f,y,p] -> do+        sp <- reduceB' p+        case unArg $ ignoreBlocking sp of+          Def q [Apply _a, Apply _bA, Apply _x, Apply _y, Apply phi , Apply w] -> do+            y' <- return $ sin `apply` [a,bA                            ,phi,argN $ unArg y]+            w' <- return $ sin `apply` [a,argN $ path `apply` [a,bA,x,y],phi,argN $ unArg w]+            redReturn $ unArg f `apply` [phi, defaultArg y', defaultArg w']+          _ -> return $ NoReduction $ map notReduced [a,c,bA,x,bC,f,y] ++ [reduced sp]+      _ -> __IMPOSSIBLE__+++primPOr :: TCM PrimitiveImpl+primPOr = do+  requireCubical+  t    <- runNamesT [] $+          hPi' "a" (el $ cl primLevel)    $ \ a  ->+          nPi' "i" (elInf $ cl primInterval) $ \ i  ->+          nPi' "j" (elInf $ cl primInterval) $ \ j  ->+          hPi' "A" (pPi' "o" (imax i j) $ \o -> el' (cl primLevelSuc <@> a) (Sort . tmSort <$> a)) $ \ bA ->+          ((pPi' "i1" i $ \ i1 -> el' a $ bA <..> (cl primIsOne1 <@> i <@> j <@> i1))) -->+          ((pPi' "j1" j $ \ j1 -> el' a $ bA <..> (cl primIsOne2 <@> i <@> j <@> j1))) -->+          (pPi' "o" (imax i j) $ \ o -> el' a $ bA <..> o)+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 6 $ \ ts -> do+    case ts of+     [l,i,j,a,u,v] -> do+       si <- reduceB' i+       vi <- intervalView $ unArg $ ignoreBlocking si+       case vi of+        IOne -> redReturn (unArg u)+        IZero -> redReturn (unArg v)+        _ -> do+          sj <- reduceB' j+          vj <- intervalView $ unArg $ ignoreBlocking sj+          case vj of+            IOne -> redReturn (unArg v)+            IZero -> redReturn (unArg u)+            _ -> return $ NoReduction [notReduced l,reduced si,reduced sj,notReduced a,notReduced u,notReduced v]+++     _ -> __IMPOSSIBLE__++primPartial' :: TCM PrimitiveImpl+primPartial' = do+  requireCubical+  t <- runNamesT [] $+       (hPi' "a" (el $ cl primLevel) $ \ a ->+        nPi' "φ" (elInf (cl primInterval)) $ \ _ ->+        nPi' "A" (sort . tmSort <$> a) $ \ bA ->+        return (sort $ Inf))+  isOne <- primIsOne+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 3 $ \ ts -> do+    case ts of+      [l,phi,a] -> do+          (El s (Pi d b)) <- runNamesT [] $ do+                             [l,a,phi] <- mapM (open . unArg) [l,a,phi]+                             (elInf $ pure isOne <@> phi) --> el' l a+          redReturn $ Pi (setRelevance Irrelevant $ d { domFinite = True }) b+      _ -> __IMPOSSIBLE__++primPartialP' :: TCM PrimitiveImpl+primPartialP' = do+  requireCubical+  t <- runNamesT [] $+       (hPi' "a" (el $ cl primLevel) $ \ a ->+        nPi' "φ" (elInf (cl primInterval)) $ \ phi ->+        nPi' "A" (pPi' "o" phi $ \ _ -> el' (cl primLevelSuc <@> a) (Sort . tmSort <$> a)) $ \ bA ->+        return (sort $ Inf))+  let toFinitePi :: Type -> Term+      toFinitePi (El _ (Pi d b)) = Pi (setRelevance Irrelevant $ d { domFinite = True }) b+      toFinitePi _               = __IMPOSSIBLE__+  v <- runNamesT [] $+        lam "a" $ \ l ->+        lam "φ" $ \ phi ->+        lam "A" $ \ a ->+        toFinitePi <$> nPi' "p" (elInf $ cl primIsOne <@> phi) (\ p -> el' l (a <@> p))+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 0 $ \ _ -> redReturn v++primSubOut' :: TCM PrimitiveImpl+primSubOut' = do+  requireCubical+  t    <- runNamesT [] $+          hPi' "a" (el $ cl primLevel) $ \ a ->+          hPi' "A" (el' (cl primLevelSuc <@> a) (Sort . tmSort <$> a)) $ \ bA ->+          hPi' "φ" (elInf $ cl primInterval) $ \ phi ->+          hPi' "u" (elInf $ cl primPartial <#> a <@> phi <@> bA) $ \ u ->+          elInf (cl primSub <#> a <@> bA <@> phi <@> u) --> el' (Sort . tmSort <$> a) bA+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 5 $ \ ts -> do+    case ts of+      [a,bA,phi,u,x] -> do+        view <- intervalView'+        sphi <- reduceB' phi+        case view $ unArg $ ignoreBlocking sphi of+          IOne -> redReturn =<< (return (unArg u) <..> (getTerm builtinSubOut builtinItIsOne))+          _ -> do+            sx <- reduceB' x+            mSubIn <- getBuiltinName' builtinSubIn+            case unArg $ ignoreBlocking $ sx of+              Def q [_,_,_, Apply t] | Just q == mSubIn -> redReturn (unArg t)+              _ -> return $ NoReduction $ map notReduced [a,bA] ++ [reduced sphi, notReduced u, reduced sx]+      _ -> __IMPOSSIBLE__++primIdFace' :: TCM PrimitiveImpl+primIdFace' = do+  requireCubical+  t <- runNamesT [] $+       hPi' "a" (el $ cl primLevel) $ \ a ->+       hPi' "A" (sort . tmSort <$> a) $ \ bA ->+       hPi' "x" (el' a bA) $ \ x ->+       hPi' "y" (el' a bA) $ \ y ->+       (el' a $ cl primId <#> a <#> bA <@> x <@> y)+       --> elInf (cl primInterval)+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 5 $ \ ts -> do+    case ts of+      [l,bA,x,y,t] -> do+        st <- reduceB' t+        mConId <- getName' builtinConId+        case unArg (ignoreBlocking st) of+          Def q [_,_,_,_, Apply phi,_] | Just q == mConId -> redReturn (unArg phi)+          _ -> return $ NoReduction $ map notReduced [l,bA,x,y] ++ [reduced st]+      _ -> __IMPOSSIBLE__++primIdPath' :: TCM PrimitiveImpl+primIdPath' = do+  requireCubical+  t <- runNamesT [] $+       hPi' "a" (el $ cl primLevel) $ \ a ->+       hPi' "A" (sort . tmSort <$> a) $ \ bA ->+       hPi' "x" (el' a bA) $ \ x ->+       hPi' "y" (el' a bA) $ \ y ->+       (el' a $ cl primId <#> a <#> bA <@> x <@> y)+       --> (el' a $ cl primPath <#> a <#> bA <@> x <@> y)+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 5 $ \ ts -> do+    case ts of+      [l,bA,x,y,t] -> do+        st <- reduceB' t+        mConId <- getName' builtinConId+        case unArg (ignoreBlocking st) of+          Def q [_,_,_,_,_,Apply w] | Just q == mConId -> redReturn (unArg w)+          _ -> return $ NoReduction $ map notReduced [l,bA,x,y] ++ [reduced st]+      _ -> __IMPOSSIBLE__+++primTrans' :: TCM PrimitiveImpl+primTrans' = do+  requireCubical+  t    <- runNamesT [] $+          hPi' "a" (elInf (cl primInterval) --> (el $ cl primLevel)) $ \ a ->+          nPi' "A" (nPi' "i" (elInf (cl primInterval)) $ \ i -> (sort . tmSort <$> (a <@> i))) $ \ bA ->+          nPi' "φ" (elInf $ cl primInterval) $ \ phi ->+          (el' (a <@> cl primIZero) (bA <@> cl primIZero) --> el' (a <@> cl primIOne) (bA <@> cl primIOne))+  return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 4 $ \ ts nelims -> do+    primTransHComp DoTransp ts nelims++primHComp' :: TCM PrimitiveImpl+primHComp' = do+  requireCubical+  t    <- runNamesT [] $+          hPi' "a" (el $ cl primLevel) $ \ a ->+          hPi' "A" (sort . tmSort <$> a) $ \ bA ->+          hPi' "φ" (elInf $ cl primInterval) $ \ phi ->+          (nPi' "i" (elInf $ cl primInterval) $ \ i -> pPi' "o" phi $ \ _ -> el' a bA) -->+          (el' a bA --> el' a bA)+  return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 5 $ \ ts nelims -> do+    primTransHComp DoHComp ts nelims++data TranspOrHComp = DoTransp | DoHComp deriving (Eq,Show)++cmdToName :: TranspOrHComp -> String+cmdToName DoTransp = builtinTrans+cmdToName DoHComp  = builtinHComp++data FamilyOrNot a = IsFam {famThing :: a} | IsNot {famThing :: a} deriving (Eq,Show,Functor,Foldable,Traversable)++instance Reduce a => Reduce (FamilyOrNot a) where+  reduceB' x = traverse id <$> traverse reduceB' x+  reduce' x = traverse reduce' x++primTransHComp :: TranspOrHComp -> [Arg Term] -> Int -> ReduceM (Reduced MaybeReducedArgs Term)+primTransHComp cmd ts nelims = do+  (l,bA,phi,u,u0) <- case (cmd,ts) of+        (DoTransp, [l,bA,phi,  u0]) -> do+          -- u <- runNamesT [] $ do+          --       u0 <- open $ unArg u0+          --       defaultArg <$> (ilam "o" $ \ _ -> u0)+          return $ (IsFam l,IsFam bA,phi,Nothing,u0)+        (DoHComp, [l,bA,phi,u,u0]) -> do+          -- [l,bA] <- runNamesT [] $ do+          --   forM [l,bA] $ \ a -> do+          --     let info = argInfo a+          --     a <- open $ unArg a+          --     Arg info <$> (lam "i" $ \ _ -> a)+          return $ (IsNot l,IsNot bA,phi,Just u,u0)+        _                          -> __IMPOSSIBLE__+  sphi <- reduceB' phi+  vphi <- intervalView $ unArg $ ignoreBlocking sphi+  let clP s = getTerm (cmdToName cmd) s++  -- WORK+  case vphi of+     IOne -> redReturn =<< case u of+                            -- cmd == DoComp+                            Just u -> runNamesT [] $ do+                                       u <- open (unArg u)+                                       u <@> clP builtinIOne <..> clP builtinItIsOne+                            -- cmd == DoTransp+                            Nothing -> return $ unArg u0+     _    -> do+       let fallback' sc = do+             u' <- case u of+                            -- cmd == DoComp+                     Just u ->+                              (:[]) <$> case vphi of+                                          IZero -> fmap (reduced . notBlocked . argN) . runNamesT [] $ do+                                            [l,c] <- mapM (open . unArg) [famThing l, ignoreBlocking sc]+                                            lam "i" $ \ i -> clP builtinIsOneEmpty <#> l+                                                                   <#> (ilam "o" $ \ _ -> c)+                                          _     -> return (notReduced u)+                            -- cmd == DoTransp+                     Nothing -> return []+             return $ NoReduction $ [notReduced (famThing l), reduced sc, reduced sphi] ++ u' ++ [notReduced u0]+       sbA <- reduceB' bA+       t <- case unArg <$> ignoreBlocking sbA of+              IsFam (Lam _info t) -> Just . fmap IsFam <$> reduceB' (absBody t)+              IsFam _             -> return Nothing+              IsNot t             -> return . Just . fmap IsNot $ (t <$ sbA)+       case t of+         Nothing -> fallback' (famThing <$> sbA)+         Just st  -> do+               let+                   fallback = fallback' (fmap famThing $ st *> sbA)+                   t = ignoreBlocking st+               mGlue <- getPrimitiveName' builtinGlue+               mId   <- getBuiltinName' builtinId+               pathV <- pathView'+               case famThing t of+                 MetaV m _ -> fallback' (fmap famThing $ Blocked m () *> sbA)+                 -- absName t instead of "i"+                 Pi a b | nelims > 0  -> maybe fallback redReturn =<< compPi cmd "i" ((a,b) <$ t) (ignoreBlocking sphi) u u0+                        | otherwise -> fallback++                 Sort (Type l) -> compSort cmd fallback phi u u0 (l <$ t)++                 Def q [Apply la, Apply lb, Apply bA, Apply phi', Apply bT, Apply e] | Just q == mGlue -> do+                   compGlue cmd phi u u0 ((la, lb, bA, phi', bT, e) <$ t)++                 -- Path/PathP+                 d | PathType _ _ _ bA x y <- pathV (El __DUMMY_SORT__ d) -> do+                   if nelims > 0 then compPathP cmd sphi u u0 l ((bA, x, y) <$ t) else fallback++                 Def q [Apply _ , Apply bA , Apply x , Apply y] | Just q == mId -> do+                   maybe fallback return =<< compId cmd sphi u u0 l ((bA, x, y) <$ t)++                 Def q es -> do+                   info <- getConstInfo q+                   let   lam_i = Lam defaultArgInfo . Abs "i"++                   case theDef info of+                     r@Record{recComp = kit} | nelims > 0, Just as <- allApplyElims es, DoTransp <- cmd, Just transpR <- nameOfTransp kit+                                -> if recPars r == 0+                                   then redReturn $ unArg u0+                                   else redReturn $ (Def transpR []) `apply`+                                               (map (fmap lam_i) as ++ [ignoreBlocking sphi,u0])+                         | nelims > 0, Just as <- allApplyElims es, DoHComp <- cmd, Just hCompR <- nameOfHComp kit+                                -> redReturn $ (Def hCompR []) `apply`+                                               (as ++ [ignoreBlocking sphi,fromMaybe __IMPOSSIBLE__ u,u0])++                         | Just as <- allApplyElims es, [] <- recFields r -> compData False (recPars r) cmd l (as <$ t) sbA sphi u u0+                     Datatype{dataPars = pars, dataIxs = ixs, dataPathCons = pcons}+                       | and [null pcons | DoHComp  <- [cmd]], Just as <- allApplyElims es -> compData (not $ null $ pcons) (pars+ixs) cmd l (as <$ t) sbA sphi u u0+                     -- postulates with no arguments do not need to transport.+                     Axiom{} | [] <- es, DoTransp <- cmd -> redReturn $ unArg u0+                     _          -> fallback++                 _ -> fallback+  where+    compSort DoTransp fallback phi Nothing u0 (IsFam l) = do+      -- TODO should check l is constant+      redReturn $ unArg u0+    compSort DoHComp fallback phi (Just u) u0 (IsNot l) = do+      let getTermLocal = getTerm (builtinHComp ++ " for Set")+      checkPrims <- all isJust <$> sequence [getTerm' builtinPathToEquiv, getTerm' builtinGlue]+      if not checkPrims then fallback else (redReturn =<<) . runNamesT [] $ do+        p2equiv <- getTermLocal builtinPathToEquiv+        tGlue   <- getTermLocal builtinGlue+        tINeg   <- getTermLocal builtinINeg+        io      <- getTermLocal builtinIOne+        l <- open $ Level l+        [phi,e,u0] <- mapM (open . unArg) [phi,u,u0]+        let+          ineg r = pure tINeg <@> r+        pure tGlue <#> l <#> l+               <@> u0 <#> phi <@> (e <@> pure io)+               <@> ilam "o" (\ o -> pure p2equiv <#> (lam "i" $ \ i -> l) <@> (ilam "i" $ \ i -> e <@> ineg i <@> o))+    compSort _ fallback phi u u0 _ = __IMPOSSIBLE__+    compGlue DoHComp psi (Just u) u0 (IsNot (la, lb, bA, phi, bT, e)) = do+      let getTermLocal = getTerm $ (builtinHComp ++ " for " ++ builtinGlue)+      tPOr <- getTermLocal "primPOr"+      tIMax <- getTermLocal builtinIMax+      tIMin <- getTermLocal builtinIMin+      tINeg <- getTermLocal builtinINeg+      tHComp <- getTermLocal builtinHComp+      tEFun  <- getTermLocal builtinEquivFun+      tglue   <- getTermLocal builtin_glue+      tunglue <- getTermLocal builtin_unglue+      io      <- getTermLocal builtinIOne+      (redReturn =<<) . runNamesT [] $ do+        [psi, u, u0] <- mapM (open . unArg) [psi, u, u0]+        [la, lb, bA, phi, bT, e] <- mapM (open . unArg) [la, lb, bA, phi, bT, e]+        let+          hfill la bA phi u u0 i = pure tHComp <#> la+                                               <#> bA+                                               <#> (pure tIMax <@> phi <@> (pure tINeg <@> i))+                                               <@> (lam "j" $ \ j -> pure tPOr <#> la <@> phi <@> (pure tINeg <@> i) <@> (ilam "o" $ \ a -> bA)+                                                     <@> (ilam "o" $ \ o -> u <@> (pure tIMin <@> i <@> j) <..> o)+                                                     <@> (ilam "o" $ \ _ -> u0)+                                                   )+                                               <@> u0+          tf i o = hfill lb (bT <..> o) psi u u0 i+          unglue g = pure tunglue <#> la <#> lb <#> bA <#> phi <#> bT <#> e <@> g+          a1 = pure tHComp <#> la <#> bA <#> (pure tIMax <@> psi <@> phi)+                           <@> (lam "i" $ \ i -> pure tPOr <#> la <@> psi <@> phi <@> (ilam "_" $ \ _ -> bA)+                                 <@> (ilam "o" $ \ o -> unglue (u <@> i <..> o))+                                 <@> (ilam "o" $ \ o -> pure tEFun <#> lb <#> la <#> (bT <..> o) <#> bA <@> (e <..> o) <@> tf i o)+                               )+                           <@> (unglue u0)+          t1 = tf (pure io)+        pure tglue <#> la <#> lb <#> bA <#> phi <#> bT <#> e <@> (ilam "o" $ \ o -> t1 o) <@> a1+    compGlue DoTransp psi Nothing u0 (IsFam (la, lb, bA, phi, bT, e)) = do+      let getTermLocal = getTerm $ (builtinTrans ++ " for " ++ builtinGlue)+      tPOr <- getTermLocal "primPOr"+      tIMax <- getTermLocal builtinIMax+      tIMin <- getTermLocal builtinIMin+      tINeg <- getTermLocal builtinINeg+      tHComp <- getTermLocal builtinHComp+      tTrans <- getTermLocal builtinTrans+      tForall  <- getTermLocal builtinFaceForall+      tEFun  <- getTermLocal builtinEquivFun+      tEProof <- getTermLocal builtinEquivProof+      tglue   <- getTermLocal builtin_glue+      tunglue <- getTermLocal builtin_unglue+      io      <- getTermLocal builtinIOne+      iz      <- getTermLocal builtinIZero+      tLMax   <- getTermLocal builtinLevelMax+      tPath   <- getTermLocal builtinPath+      kit <- fromMaybe __IMPOSSIBLE__ <$> getSigmaKit+      (redReturn =<<) . runNamesT [] $ do+        let ineg j = pure tINeg <@> j+            imax i j = pure tIMax <@> i <@> j+            imin i j = pure tIMin <@> i <@> j++        -- First define a "ghcomp" version of gcomp. Normal comp looks like:+        --+        -- comp^i A [ phi -> u ] u0 = hcomp^i A(1/i) [ phi -> forward A i u ] (forward A 0 u0)+        --+        -- So for "gcomp" we compute:+        --+        -- gcomp^i A [ phi -> u ] u0 = hcomp^i A(1/i) [ phi -> forward A i u, ~ phi -> forward A 0 u0 ] (forward A 0 u0)+        --+        -- The point of this is that gcomp does not produce any empty+        -- systems (if phi = 0 it will reduce to "forward A 0 u".+        gcomp <- do+          let forward la bA r u = pure tTrans <#> (lam "i" $ \ i -> la <@> (i `imax` r))+                                              <@> (lam "i" $ \ i -> bA <@> (i `imax` r))+                                              <@> r+                                              <@> u+          return $ \ la bA phi u u0 ->+            pure tHComp <#> (la <@> pure io)+                        <#> (bA <@> pure io)+                        <#> imax phi (ineg phi)+                        <@> (lam "i" $ \ i ->+                              pure tPOr <#> (la <@> i)+                                        <@> phi+                                        <@> ineg phi+                                        <@> (ilam "o" $ \ a -> bA <@> i)+                                        <@> (ilam "o" $ \ o -> forward la bA i (u <@> i <..> o))+                                        <@> (ilam "o" $ \ o -> forward la bA (pure iz) u0))+                        <@> forward la bA (pure iz) u0++        let transpFill la bA phi u0 i =+              pure tTrans <#> (ilam "j" $ \ j -> la <@> imin i j)+                          <@> (ilam "j" $ \ j -> bA <@> imin i j)+                          <@> (imax phi (ineg i))+                          <@> u0+        [psi,u0] <- mapM (open . unArg) [psi,u0]+        glue1 <- do+          g <- open $ (tglue `apply`) . map (setHiding Hidden) . map (subst 0 io) $ [la, lb, bA, phi, bT, e]+          return $ \ t a -> g <@> t <@> a+        unglue0 <- do+          ug <- open $ (tunglue `apply`) . map (setHiding Hidden) . map (subst 0 iz) $ [la, lb, bA, phi, bT, e]+          return $ \ a -> ug <@> a+        [la, lb, bA, phi, bT, e] <- mapM (\ a -> open . runNames [] $ (lam "i" $ const (pure $ unArg a))) [la, lb, bA, phi, bT, e]+        let+          tf i o = transpFill lb (lam "i" $ \ i -> bT <@> i <..> o) psi u0 i+          t1 o = tf (pure io) o+          a0 = unglue0 u0++          -- compute "forall. phi"+          forallphi = pure tForall <@> phi++          -- a1 with gcomp+          a1 = gcomp la bA+                 (imax psi forallphi)+                 (lam "i" $ \ i -> pure tPOr <#> (la <@> i)+                                             <@> psi+                                             <@> forallphi+                                             <@> (ilam "o" $ \ a -> bA <@> i)+                                             <@> (ilam "o" $ \ _ -> a0)+                                             <@> (ilam "o" $ \ o -> pure tEFun <#> (lb <@> i)+                                                                               <#> (la <@> i)+                                                                               <#> (bT <@> i <..> o)+                                                                               <#> (bA <@> i)+                                                                               <@> (e <@> i <..> o)+                                                                               <@> (tf i o)))+                 a0++          max l l' = pure tLMax <@> l <@> l'+          sigCon x y = pure (Con (sigmaCon kit) ConOSystem []) <@> x <@> y+          w i o = pure tEFun <#> (lb <@> i)+                             <#> (la <@> i)+                             <#> (bT <@> i <..> o)+                             <#> (bA <@> i)+                             <@> (e <@> i <..> o)+          fiber la lb bA bB f b =+            (pure (Def (sigmaName kit) []) <#> la+                                           <#> lb+                                           <@> bA+                                           <@> (lam "a" $ \ a -> pure tPath <#> lb <#> bB <@> (f <@> a) <@> b))++          -- We don't have to do anything special for "~ forall. phi"+          -- here (to implement "ghcomp") as it is taken care off by+          -- tEProof in t1'alpha below+          pe o = -- o : [ φ 1 ]+            pure tPOr <#> max (la <@> pure io) (lb <@> pure io)+                      <@> psi+                      <@> forallphi+                      <@> (ilam "o" $ \ _ ->+                             fiber (lb <@> pure io) (la <@> pure io)+                                   (bT <@> (pure io) <..> o) (bA <@> pure io)+                                   (w (pure io) o) a1)+                      <@> (ilam "o" $ \ o -> sigCon u0 (lam "_" $ \ _ -> a1))+                      <@> (ilam "o" $ \ o -> sigCon (t1 o) (lam "_" $ \ _ -> a1))++          -- "ghcomp" is implemented in the proof of tEProof+          -- (see src/data/lib/prim/Agda/Builtin/Cubical/Glue.agda)+          t1'alpha o = -- o : [ φ 1 ]+             pure tEProof <#> (lb <@> pure io)+                          <#> (la <@> pure io)+                          <@> (bT <@> pure io <..> o)+                          <@> (bA <@> pure io)+                          <@> (e <@> pure io <..> o)+                          <@> a1+                          <@> forallphi+                          <@> pe o++          -- TODO: optimize?+          t1' o = t1'alpha o <&> (`applyE` [Proj ProjSystem (sigmaFst kit)])+          alpha o = t1'alpha o <&> (`applyE` [Proj ProjSystem (sigmaSnd kit)])+          a1' = pure tHComp+                  <#> (la <@> pure io)+                  <#> (bA <@> pure io)+                  <#> (imax (phi <@> pure io) psi)+                  <@> (lam "j" $ \ j ->+                         pure tPOr <#> (la <@> pure io) <@> (phi <@> pure io) <@> psi <@> (ilam "o" $ \ _ -> bA <@> pure io)+                                   <@> (ilam "o" $ \ o -> alpha o <@@> (w (pure io) o <@> t1' o,a1,j))+                                   <@> (ilam "o" $ \ _ -> a1)+                      )+                  <@> a1+        glue1 (ilam "o" t1') a1'+    compGlue cmd phi u u0 _ = __IMPOSSIBLE__+    compPi :: TranspOrHComp -> ArgName -> FamilyOrNot (Dom Type, Abs Type) -- Γ , i : I+            -> Arg Term -- Γ+            -> Maybe (Arg Term) -- Γ+            -> Arg Term -- Γ+            -> ReduceM (Maybe Term)+    compPi cmd t ab phi u u0 = do+     let getTermLocal = getTerm $ cmdToName cmd ++ " for function types"++     tTrans <- getTermLocal builtinTrans+     tHComp <- getTermLocal builtinHComp+     tINeg <- getTermLocal builtinINeg+     tIMax <- getTermLocal builtinIMax+     iz    <- getTermLocal builtinIZero+     let+      toLevel' t = do+        s <- reduce $ getSort t+        case s of+          (Type l) -> return (Just l)+          _        -> return Nothing+      toLevel t = fromMaybe __IMPOSSIBLE__ <$> toLevel' t+     -- make sure the codomain has a level.+     caseMaybeM (toLevel' . absBody . snd . famThing $ ab) (return Nothing) $ \ _ -> do+     runNamesT [] $ do+      labA <- do+        let (x,f) = case ab of+              IsFam (a,_) -> (a, \ a -> runNames [] $ (lam "i" $ const (pure a)))+              IsNot (a,_) -> (a, id)+        lx <- toLevel' x+        caseMaybe lx (return Nothing) $ \ lx -> Just <$>+          mapM (open . f) [Level lx, unEl . unDom $ x]+      caseMaybe labA (return Nothing) $ \ [la,bA] -> Just <$> do+      [phi, u0] <- mapM (open . unArg) [phi, u0]+      u <- traverse open (unArg <$> u)++      glam (getArgInfo (fst $ famThing ab)) (absName $ snd $ famThing ab) $ \ u1 -> do+        case (cmd, ab, u) of+          (DoHComp, IsNot (a , b), Just u) -> do+            bT <- (raise 1 b `absApp`) <$> u1+            let v = u1+            pure tHComp <#> (Level <$> toLevel bT)+                        <#> (pure $ unEl                      $ bT)+                        <#> phi+                        <@> (lam "i" $ \ i -> ilam "o" $ \ o -> gApply (getHiding a) (u <@> i <..> o) v)+                        <@> (gApply (getHiding a) u0 v)+          (DoTransp, IsFam (a , b), Nothing) -> do+            let v i = do+                       let+                         iOrNot j = pure tIMax <@> i <@> (pure tINeg <@> j)+                       pure tTrans <#> (lam "j" $ \ j -> la <@> iOrNot j)+                                 <@> (lam "j" $ \ j -> bA <@> iOrNot j)+                                 <@> (pure tIMax <@> phi <@> i)+                                 <@> u1+                -- Γ , u1 : A[i1] , i : I+                bB v = (consS v $ liftS 1 $ raiseS 1) `applySubst` (absBody b {- Γ , i : I , x : A[i] -})+                tLam = Lam defaultArgInfo+            bT <- bind "i" $ \ i -> bB <$> v i+            -- Γ , u1 : A[i1]+            (pure tTrans <#> (tLam <$> traverse (fmap Level . toLevel) bT)+                         <@> (pure . tLam $ unEl                      <$> bT)+                         <@> phi+                         <@> gApply (getHiding a) u0 (v (pure iz)))+          (_,_,_) -> __IMPOSSIBLE__+    compPathP cmd@DoHComp sphi (Just u) u0 (IsNot l) (IsNot (bA,x,y)) = do+      let getTermLocal = getTerm $ cmdToName cmd ++ " for path types"+      tHComp <- getTermLocal builtinHComp+      tINeg <- getTermLocal builtinINeg+      tIMax <- getTermLocal builtinIMax+      tOr   <- getTermLocal "primPOr"+      let+        ineg j = pure tINeg <@> j+        imax i j = pure tIMax <@> i <@> j++      redReturn . runNames [] $ do+         [l,u,u0] <- mapM (open . unArg) [l,u,u0]+         phi      <- open . unArg . ignoreBlocking $ sphi+         [bA, x, y] <- mapM (open . unArg) [bA, x, y]+         lam "j" $ \ j ->+           pure tHComp <#> l+                       <#> (bA <@> j)+                       <#> (phi `imax` (ineg j `imax` j))+                       <@> (lam "i'" $ \ i ->+                            let or f1 f2 = pure tOr <#> l <@> f1 <@> f2 <#> (lam "_" $ \ _ -> bA <@> i)+                            in or phi (ineg j `imax` j)+                                          <@> (ilam "o" $ \ o -> u <@> i <..> o <@@> (x, y, j)) -- a0 <@@> (x <@> i, y <@> i, j)+                                          <@> (or (ineg j) j <@> (ilam "_" $ const x)+                                                                  <@> (ilam "_" $ const y)))+                       <@> (u0 <@@> (x, y, j))+    compPathP cmd@DoTransp sphi Nothing u0 (IsFam l) (IsFam (bA,x,y)) = do+      -- Γ    ⊢ l+      -- Γ, i ⊢ bA, x, y+      let getTermLocal = getTerm $ cmdToName cmd ++ " for path types"+      tINeg <- getTermLocal builtinINeg+      tIMax <- getTermLocal builtinIMax+      tOr   <- getTermLocal "primPOr"+      iz <- getTermLocal builtinIZero+      io <- getTermLocal builtinIOne+      let+        ineg j = pure tINeg <@> j+        imax i j = pure tIMax <@> i <@> j+      comp <- do+        tHComp <- getTermLocal builtinHComp+        tTrans <- getTermLocal builtinTrans+        let forward la bA r u = pure tTrans <#> (lam "i" $ \ i -> la <@> (i `imax` r))+                                            <@> (lam "i" $ \ i -> bA <@> (i `imax` r))+                                            <@> r+                                            <@> u+        return $ \ la bA phi u u0 ->+          pure tHComp <#> (la <@> pure io)+                      <#> (bA <@> pure io)+                      <#> phi+                      <@> (lam "i" $ \ i -> ilam "o" $ \ o ->+                              forward la bA i (u <@> i <..> o))+                      <@> forward la bA (pure iz) u0+      redReturn . runNames [] $ do+        [l,u0] <- mapM (open . unArg) [l,u0]+        phi      <- open . unArg . ignoreBlocking $ sphi+        [bA, x, y] <- mapM (\ a -> open . runNames [] $ (lam "i" $ const (pure $ unArg a))) [bA, x, y]+        lam "j" $ \ j ->+          comp l (lam "i" $ \ i -> bA <@> i <@> j) (phi `imax` (ineg j `imax` j))+                      (lam "i'" $ \ i ->+                            let or f1 f2 = pure tOr <#> l <@> f1 <@> f2 <#> (lam "_" $ \ _ -> bA <@> i <@> j) in+                                       or phi (ineg j `imax` j)+                                          <@> (ilam "o" $ \ o -> u0 <@@> (x <@> pure iz, y <@> pure iz, j))+                                          <@> (or (ineg j) j <@> (ilam "_" $ const (x <@> i))+                                                                  <@> (ilam "_" $ const (y <@> i))))+                      (u0 <@@> (x <@> pure iz, y <@> pure iz, j))+    compPathP _ sphi u a0 _ _ = __IMPOSSIBLE__+    compId cmd sphi u a0 l bA_x_y = do+      let getTermLocal = getTerm $ cmdToName cmd ++ " for " ++ builtinId+      unview <- intervalUnview'+      mConId <- getBuiltinName' builtinConId+      let isConId (Def q _) = Just q == mConId+          isConId _         = False+      sa0 <- reduceB' a0+      -- wasteful to compute b even when cheaper checks might fail+      b <- case u of+             Nothing -> return True+             Just u  -> allComponents unview (unArg . ignoreBlocking $ sphi) (unArg u) isConId+      case mConId of+        Just conid | isConId (unArg . ignoreBlocking $ sa0) , b -> (Just <$>) . (redReturn =<<) $ do+          tHComp <- getTermLocal builtinHComp+          tTrans <- getTermLocal builtinTrans+          tIMin <- getTermLocal "primDepIMin"+          tFace <- getTermLocal "primIdFace"+          tPath <- getTermLocal "primIdPath"+          tPathType <- getTermLocal builtinPath+          runNamesT [] $ do+            let irrInfo = setRelevance Irrelevant defaultArgInfo+            let io = pure $ unview IOne+                iz = pure $ unview IZero+                conId = pure $ Def conid []+            l <- case l of+                   IsFam l -> open . unArg $ l+                   IsNot l -> do+                     open (Lam defaultArgInfo $ NoAbs "_" $ unArg l)+            [p0] <- mapM (open . unArg) [a0]+            p <- case u of+                   Just u -> do+                     u <- open . unArg $ u+                     return $ \ i o -> u <@> i <..> o+                   Nothing -> do+                     return $ \ i o -> p0+            phi      <- open . unArg . ignoreBlocking $ sphi+            [bA, x, y] <-+              case bA_x_y of+                IsFam (bA,x,y) -> mapM (\ a -> open . runNames [] $ (lam "i" $ const (pure $ unArg a))) [bA, x, y]+                IsNot (bA,x,y) -> forM [bA,x,y] $ \ a -> open (Lam defaultArgInfo $ NoAbs "_" $ unArg a)+            let+              eval DoTransp l bA phi _ u0 = pure tTrans <#> l <@> bA <@> phi <@> u0+              eval DoHComp l bA phi u u0 = pure tHComp <#> (l <@> io) <#> (bA <@> io) <#> phi+                                                       <@> u <@> u0+            conId <#> (l <@> io) <#> (bA <@> io) <#> (x <@> io) <#> (y <@> io)+                  <@> (pure tIMin <@> phi+                                  <@> (ilam "o" $ \ o -> pure tFace <#> (l <@> io) <#> (bA <@> io) <#> (x <@> io) <#> (y <@> io)+                                                                   <@> (p io o)))+                  <@> (eval cmd l+                                (lam "i" $ \ i -> pure tPathType <#> (l <@> i) <#> (bA <@> i) <@> (x <@> i) <@> (y <@> i))+                                phi+                                (lam "i" $ \ i -> ilam "o" $ \ o -> pure tPath <#> (l <@> i) <#> (bA <@> i)+                                                                                    <#> (x <@> i) <#> (y <@> i)+                                                                                    <@> (p i o)+                                      )+                                (pure tPath <#> (l <@> iz) <#> (bA <@> iz) <#> (x <@> iz) <#> (y <@> iz)+                                                  <@> p0)+                      )+        _ -> return $ Nothing+    allComponents unview phi u p = do+            let+              boolToI b = if b then unview IOne else unview IZero+            as <- decomposeInterval phi+            (and <$>) . forM as $ \ (bs,ts) -> do -- OPTIMIZE: stop at the first False+                 let u' = listS (Map.toAscList $ Map.map boolToI bs) `applySubst` u+                 t <- reduce2Lam u'+                 return $! p t+      where+        reduce2Lam t = do+          t <- reduce' t+          case lam2Abs t of+            t -> Reduce.underAbstraction_ t $ \ t -> do+               t <- reduce' t+               case lam2Abs t of+                 t -> Reduce.underAbstraction_ t reduce'+         where+           lam2Abs (Lam _ t) = t+           lam2Abs t         = Abs "y" (raise 1 t `apply` [argN $ var 0])++    compData False _ cmd@DoHComp (IsNot l) (IsNot ps) fsc sphi (Just u) a0 = do+      let getTermLocal = getTerm $ cmdToName cmd ++ " for data types"++      let sc = famThing <$> fsc+      tEmpty <- getTermLocal builtinIsOneEmpty+      constrForm <- do+        mz <- getTerm' builtinZero+        ms <- getTerm' builtinSuc+        return $ \ t -> fromMaybe t (constructorForm' mz ms t)+      su  <- reduceB' u+      sa0 <- reduceB' a0+      view   <- intervalView'+      unview <- intervalUnview'+      let f = unArg . ignoreBlocking+          phi = f sphi+          u = f su+          a0 = f sa0+          noRed = return $ NoReduction [notReduced l,reduced sc, reduced sphi, reduced su', reduced sa0]+            where+              su' = case view phi of+                     IZero -> notBlocked $ argN $ runNames [] $ do+                                 [l,c] <- mapM (open . unArg) [l,ignoreBlocking sc]+                                 lam "i" $ \ i -> pure tEmpty <#> l+                                                              <#> (ilam "o" $ \ _ -> c)+                     _     -> su+          sameConHead h u = allComponents unview phi u $ \ t ->+            case constrForm t of+              Con h' _ _ -> h == h'+              _        -> False++      case constrForm a0 of+        Con h _ args -> do+          ifM (not <$> sameConHead h u) noRed $ do+            Constructor{ conComp = (cm,_) } <- theDef <$> getConstInfo (conName h)+            case nameOfHComp cm of+              Just hcompD -> redReturn $ Def hcompD [] `apply`+                                          (ps ++ map argN [phi,u,a0])+              Nothing        -> noRed+        _ -> noRed+    compData _     0 DoTransp (IsFam l) (IsFam ps) fsc sphi Nothing a0 = redReturn $ unArg a0+    compData isHIT _ cmd@DoTransp (IsFam l) (IsFam ps) fsc sphi Nothing a0 = do+      let getTermLocal = getTerm $ cmdToName cmd ++ " for data types"+      let sc = famThing <$> fsc+      mhcompName <- getName' builtinHComp+      constrForm <- do+        mz <- getTerm' builtinZero+        ms <- getTerm' builtinSuc+        return $ \ t -> fromMaybe t (constructorForm' mz ms t)+      sa0 <- reduceB' a0+      let f = unArg . ignoreBlocking+          phi = f sphi+          a0 = f sa0+          noRed = return $ NoReduction [notReduced l,reduced sc, reduced sphi, reduced sa0]+      let lam_i = Lam defaultArgInfo . Abs "i"+      case constrForm a0 of+        Con h _ args -> do+          Constructor{ conComp = (cm,_) } <- theDef <$> getConstInfo (conName h)+          case nameOfTransp cm of+              Just transpD -> redReturn $ Def transpD [] `apply`+                                          (map (fmap lam_i) ps ++ map argN [phi,a0])+              Nothing        -> noRed+        Def q es | isHIT, Just q == mhcompName, Just [_l0,_c0,psi,u,u0] <- allApplyElims es -> do+           let bC = ignoreBlocking sc+           hcomp <- getTermLocal builtinHComp+           transp <- getTermLocal builtinTrans+           io <- getTermLocal builtinIOne+           iz <- getTermLocal builtinIZero+           (redReturn =<<) . runNamesT [] $ do+             [l,bC,phi,psi,u,u0] <- mapM (open . unArg) [l,bC,ignoreBlocking sphi,psi,u,u0]+             -- hcomp (sc 1) [psi |-> transp sc phi u] (transp sc phi u0)+             pure hcomp <#> (l <@> pure io) <#> (bC <@> pure io) <#> psi+                   <@> (lam "j" $ \ j -> ilam "o" $ \ o ->+                        pure transp <#> l <@> bC <@> phi <@> (u <@> j <..> o))+                   <@> (pure transp <#> l <@> bC <@> phi <@> u0)+        _ -> noRed+    compData _ _ _ _ _ _ _ _ _ = __IMPOSSIBLE__+    compPO = __IMPOSSIBLE__++primComp :: TCM PrimitiveImpl+primComp = do+  requireCubical+  t    <- runNamesT [] $+          hPi' "a" (elInf (cl primInterval) --> (el $ cl primLevel)) $ \ a ->+          nPi' "A" (nPi' "i" (elInf (cl primInterval)) $ \ i -> (sort . tmSort <$> (a <@> i))) $ \ bA ->+          nPi' "φ" (elInf $ cl primInterval) $ \ phi ->+          (nPi' "i" (elInf $ cl primInterval) $ \ i -> pPi' "o" phi $ \ _ -> el' (a <@> i) (bA <@> i)) -->+          (el' (a <@> cl primIZero) (bA <@> cl primIZero) --> el' (a <@> cl primIOne) (bA <@> cl primIOne))+  one <- primItIsOne+  io  <- primIOne+  return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 5 $ \ ts nelims -> do+    case ts of+      [l,c,phi,u,a0] -> do+        sphi <- reduceB' phi+        vphi <- intervalView $ unArg $ ignoreBlocking sphi+        case vphi of+          IOne -> redReturn (unArg u `apply` [argN io, argN one])+          _    -> do+            let getTermLocal = getTerm $ builtinComp+            tIMax <- getTermLocal builtinIMax+            tINeg <- getTermLocal builtinINeg+            tHComp <- getTermLocal builtinHComp+            tTrans <- getTermLocal builtinTrans+            iz      <- getTermLocal builtinIZero+            (redReturn =<<) . runNamesT [] $ do+              comp <- do+                let+                  ineg j = pure tINeg <@> j+                  imax i j = pure tIMax <@> i <@> j+                let forward la bA r u = pure tTrans <#> (lam "i" $ \ i -> la <@> (i `imax` r))+                                                    <@> (lam "i" $ \ i -> bA <@> (i `imax` r))+                                                    <@> r+                                                    <@> u+                return $ \ la bA phi u u0 ->+                  pure tHComp <#> (la <@> pure io) <#> (bA <@> pure io) <#> phi+                              <@> (lam "i" $ \ i -> ilam "o" $ \ o ->+                                      forward la bA i (u <@> i <..> o))+                              <@> forward la bA (pure iz) u0++              [l,c,phi,u,a0] <- mapM (open . unArg) [l,c,phi,u,a0]+              comp l c phi u a0++      _ -> __IMPOSSIBLE__++-- lookupS (listS [(x0,t0)..(xn,tn)]) xi = ti, assuming x0 < .. < xn.+listS :: [(Int,Term)] -> Substitution+listS ((i,t):ts) = singletonS i t `composeS` listS ts+listS []         = IdS+++primGlue' :: TCM PrimitiveImpl+primGlue' = do+  requireCubical+  -- Glue' : ∀ {l} (A : Set l) → ∀ φ → (T : Partial (Set a) φ) (f : (PartialP φ \ o → (T o) -> A))+  --            ([f] : PartialP φ \ o → isEquiv (T o) A (f o)) → Set l+  t <- runNamesT [] $+       (hPi' "la" (el $ cl primLevel) $ \ la ->+       hPi' "lb" (el $ cl primLevel) $ \ lb ->+       nPi' "A" (sort . tmSort <$> la) $ \ a ->+       hPi' "φ" (elInf $ cl primInterval) $ \ φ ->+       nPi' "T" (pPi' "o" φ $ \ o -> el' (cl primLevelSuc <@> lb) (Sort . tmSort <$> lb)) $ \ t ->+       (pPi' "o" φ $ \ o -> el' (cl primLevelMax <@> la <@> lb) $ cl primEquiv <#> lb <#> la <@> (t <@> o) <@> a)+       --> (sort . tmSort <$> lb))+  view <- intervalView'+  one <- primItIsOne+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 6 $ \ts ->+    case ts of+     [la,lb,a,phi,t,e] -> do+       sphi <- reduceB' phi+       case view $ unArg $ ignoreBlocking $ sphi of+         IOne -> redReturn $ unArg t `apply` [argN one]+         _    -> return (NoReduction $ map notReduced [la,lb,a] ++ [reduced sphi] ++ map notReduced [t,e])+     _ -> __IMPOSSIBLE__++prim_glue' :: TCM PrimitiveImpl+prim_glue' = do+  requireCubical+  t <- runNamesT [] $+       (hPi' "la" (el $ cl primLevel) $ \ la ->+       hPi' "lb" (el $ cl primLevel) $ \ lb ->+       hPi' "A" (sort . tmSort <$> la) $ \ a ->+       hPi' "φ" (elInf $ cl primInterval) $ \ φ ->+       hPi' "T" (pPi' "o" φ $ \ o ->  el' (cl primLevelSuc <@> lb) (Sort . tmSort <$> lb)) $ \ t ->+       hPi' "e" (pPi' "o" φ $ \ o -> el' (cl primLevelMax <@> la <@> lb) $ cl primEquiv <#> lb <#> la <@> (t <@> o) <@> a) $ \ e ->+       (pPi' "o" φ $ \ o -> el' lb (t <@> o)) --> (el' la a --> el' lb (cl primGlue <#> la <#> lb <@> a <#> φ <@> t <@> e)))+  view <- intervalView'+  one <- primItIsOne+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 8 $ \ts ->+    case ts of+      [la,lb,bA,phi,bT,e,t,a] -> do+       sphi <- reduceB' phi+       case view $ unArg $ ignoreBlocking $ sphi of+         IOne -> redReturn $ unArg t `apply` [argN one]+         _    -> return (NoReduction $ map notReduced [la,lb,bA] ++ [reduced sphi] ++ map notReduced [bT,e,t,a])+      _ -> __IMPOSSIBLE__++prim_unglue' :: TCM PrimitiveImpl+prim_unglue' = do+  requireCubical+  t <- runNamesT [] $+       (hPi' "la" (el $ cl primLevel) $ \ la ->+       hPi' "lb" (el $ cl primLevel) $ \ lb ->+       hPi' "A" (sort . tmSort <$> la) $ \ a ->+       hPi' "φ" (elInf $ cl primInterval) $ \ φ ->+       hPi' "T" (pPi' "o" φ $ \ o ->  el' (cl primLevelSuc <@> lb) (Sort . tmSort <$> lb)) $ \ t ->+       hPi' "e" (pPi' "o" φ $ \ o -> el' (cl primLevelMax <@> la <@> lb) $ cl primEquiv <#> lb <#> la <@> (t <@> o) <@> a) $ \ e ->+       (el' lb (cl primGlue <#> la <#> lb <@> a <#> φ <@> t <@> e)) --> el' la a)+  view <- intervalView'+  one <- primItIsOne+  mglue <- getPrimitiveName' builtin_glue+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 7 $ \ts ->+    case ts of+      [la,lb,bA,phi,bT,e,b] -> do+       sphi <- reduceB' phi+       case view $ unArg $ ignoreBlocking $ sphi of+         IOne -> do+           let argOne = setRelevance Irrelevant $ argN one+           tEFun <- getTerm builtin_unglue builtinEquivFun+           redReturn $ tEFun `apply` [lb,la,argH $ unArg bT `apply` [argOne],bA, argN $ unArg e `apply` [argOne],b]+         _    -> do+            sb <- reduceB' b+            case unArg $ ignoreBlocking $ sb of+               Def q [Apply _,Apply _,Apply _,Apply _,Apply _,Apply _,Apply _,Apply a]+                     | Just q == mglue -> redReturn $ unArg a+               _ -> return (NoReduction $ map notReduced [la,lb,bA] ++ [reduced sphi] ++ map notReduced [bT,e] ++ [reduced sb])+      _ -> __IMPOSSIBLE__+++-- TODO Andrea: keep reductions that happen under foralls?+primFaceForall' :: TCM PrimitiveImpl+primFaceForall' = do+  requireCubical+  t <- (elInf primInterval --> elInf primInterval) --> elInf primInterval+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 1 $ \ts ->+    case ts of+      [phi] -> do+        sphi <- reduceB' phi+        case unArg $ ignoreBlocking $ sphi of+          Lam _ t -> do+            t <- reduce' t+            case t of+              NoAbs _ t -> redReturn t+              Abs   _ t -> maybe (return $ NoReduction [reduced sphi]) redReturn =<< toFaceMapsPrim t+          _ -> return (NoReduction [reduced sphi])+      _     -> __IMPOSSIBLE__+ where+  toFaceMapsPrim t = do+     view   <- intervalView'+     unview <- intervalUnview'+     us'    <- decomposeInterval t+     fr     <- getTerm builtinFaceForall builtinFaceForall+     let+         v = view t+         us = [ map Left (Map.toList bsm) ++ map Right ts+              | (bsm,ts) <- us'+              , 0 `Map.notMember` bsm+              ]+         fm (i,b) = if b then var (i-1) else unview (INeg (argN (var $ i-1)))+         ffr t = fr `apply` [argN $ Lam defaultArgInfo $ Abs "i" t]+         r = Just $ foldr (\ x r -> unview (IMax (argN x) (argN r))) (unview IZero)+                                 (map (foldr (\ x r -> unview (IMin (argN (either fm ffr x)) (argN r))) (unview IOne)) us)+  --   traceSLn "cube.forall" 20 (unlines [show v, show us', show us, show r]) $+     return $+       case us' of+         [(m,[_])] | Map.null m -> Nothing+         v                      -> r++decomposeInterval :: HasBuiltins m => Term -> m [(Map Int Bool,[Term])]+decomposeInterval t = do+  xs <- decomposeInterval' t+  let isConsistent xs = all (\ xs -> Set.size xs == 1) . Map.elems $ xs  -- optimize by not doing generate + filter+  return [ (Map.map (head . Set.toList) bsm,ts)+            | (bsm,ts) <- xs+            , isConsistent bsm+            ]++decomposeInterval' :: HasBuiltins m => Term -> m [(Map Int (Set Bool),[Term])]+decomposeInterval' t = do+     view   <- intervalView'+     unview <- intervalUnview'+     let f :: IntervalView -> [[Either (Int,Bool) Term]]+         -- TODO handle primIMinDep+         -- TODO? handle forall+         f IZero = mzero+         f IOne  = return []+         f (IMin x y) = do xs <- (f . view . unArg) x; ys <- (f . view . unArg) y; return (xs ++ ys)+         f (IMax x y) = msum $ map (f . view . unArg) [x,y]+         f (INeg x)   = map (either (\ (x,y) -> Left (x,not y)) (Right . unview . INeg . argN)) <$> (f . view . unArg) x+         f (OTerm (Var i [])) = return [Left (i,True)]+         f (OTerm t)          = return [Right t]+         v = view t+     return [ (bsm,ts)+            | xs <- f v+            , let (bs,ts) = partitionEithers xs+            , let bsm     = (Map.fromListWith Set.union . map (id -*- Set.singleton)) bs+            ]++-- | @mkPrimInjective@ takes two Set0 @a@ and @b@ and a function @f@ of type+--   @a -> b@ and outputs a primitive internalizing the fact that @f@ is injective.+mkPrimInjective :: Type -> Type -> QName -> TCM PrimitiveImpl+mkPrimInjective a b qn = do+  -- Define the type+  eqName <- primEqualityName+  let lvl0     = Max []+  let eq a t u = El (Type lvl0) <$> pure (Def eqName []) <#> pure (Level lvl0)+                                <#> pure (unEl a) <@> t <@> u+  let f    = pure (Def qn [])+  ty <- nPi "t" (pure a) $ nPi "u" (pure a) $+              (eq b (f <@> varM 1) (f <@> varM 0))+          --> (eq a (      varM 1) (      varM 0))++    -- Get the constructor corresponding to BUILTIN REFL+  refl <- getRefl++  -- Implementation: when the equality argument reduces to refl so does the primitive.+  -- If the user want the primitive to reduce whenever the two values are equal (no+  -- matter whether the equality is refl), they can combine it with @eraseEquality@.+  return $ PrimImpl ty $ primFun __IMPOSSIBLE__ 3 $ \ ts -> do+    let t  = fromMaybe __IMPOSSIBLE__ $ headMaybe ts+    let eq = unArg $ fromMaybe __IMPOSSIBLE__ $ lastMaybe ts+    eq' <- normalise' eq+    case eq' of+      Con{} -> redReturn $ refl t+      _     -> return $ NoReduction $ map notReduced ts++primCharToNatInjective :: TCM PrimitiveImpl+primCharToNatInjective = do+  char  <- primType (undefined :: Char)+  nat   <- primType (undefined :: Nat)+  toNat <- primFunName <$> getPrimitive "primCharToNat"+  mkPrimInjective char nat toNat++primStringToListInjective :: TCM PrimitiveImpl+primStringToListInjective = do+  string <- primType (undefined :: Str)+  chars  <- primType (undefined :: String)+  toList <- primFunName <$> getPrimitive "primStringToList"+  mkPrimInjective string chars toList++getRefl :: TCM (Arg Term -> Term)+getRefl = do+  -- BUILTIN REFL maybe a constructor with one (the principal) argument or only parameters.+  -- Get the ArgInfo of the principal argument of refl.+  con@(Con rf ci []) <- primRefl+  minfo <- fmap (setOrigin Inserted) <$> getReflArgInfo rf+  pure $ case minfo of+    Just ai -> Con rf ci . (:[]) . Apply . setArgInfo ai+    Nothing -> const con++-- | @primEraseEquality : {a : Level} {A : Set a} {x y : A} -> x ≡ y -> x ≡ y@+primEraseEquality :: TCM PrimitiveImpl+primEraseEquality = do+  -- primEraseEquality is incompatible with --without-K+  -- We raise an error warning if --safe is set and a mere warning otherwise+  whenM withoutKOption $+    ifM (Lens.getSafeMode <$> commandLineOptions)+      {- then -} (warning SafeFlagWithoutKFlagPrimEraseEquality)+      {- else -} (warning WithoutKFlagPrimEraseEquality)+  -- Get the name and type of BUILTIN EQUALITY+  eq   <- primEqualityName+  eqTy <- defType <$> getConstInfo eq+  -- E.g. @eqTy = eqTel → Set a@ where @eqTel = {a : Level} {A : Set a} (x y : A)@.+  TelV eqTel eqCore <- telView eqTy+  let eqSort = case unEl eqCore of+        Sort s -> s+        _      -> __IMPOSSIBLE__++  -- Construct the type of primEraseEquality, e.g.+  -- @{a : Level} {A : Set a} {x y : A} → eq {a} {A} x y -> eq {a} {A} x y@.+  t <- let xeqy = pure $ El eqSort $ Def eq $ map Apply $ teleArgs eqTel in+       telePi_ (fmap hide eqTel) <$> (xeqy --> xeqy)++  -- Get the constructor corresponding to BUILTIN REFL+  refl <- getRefl++  -- The implementation of primEraseEquality:+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ (1 + size eqTel) $ \ ts -> do+    let (u, v) = fromMaybe __IMPOSSIBLE__ $ last2 =<< initMaybe ts+    -- Andreas, 2013-07-22.+    -- Note that we cannot call the conversion checker here,+    -- because 'reduce' might be called in a context where+    -- some bound variables do not have a type (just __DUMMY_TYPE__),+    -- and the conversion checker for eliminations does not+    -- like this.+    -- We can only do untyped equality, e.g., by normalisation.+    (u', v') <- normalise' (u, v)+    if u' == v' then redReturn $ refl u else+      return $ NoReduction $ map notReduced ts++-- | Get the 'ArgInfo' of the principal argument of BUILTIN REFL.+--+--   Returns @Nothing@ for e.g.+--   @+--     data Eq {a} {A : Set a} (x : A) : A → Set a where+--       refl : Eq x x+--   @+--+--   Returns @Just ...@ for e.g.+--   @+--     data Eq {a} {A : Set a} : (x y : A) → Set a where+--       refl : ∀ x → Eq x x+--   @++getReflArgInfo :: ConHead -> TCM (Maybe ArgInfo)+getReflArgInfo rf = do+  def <- getConInfo rf+  TelV reflTel _ <- telView $ defType def+  return $ fmap getArgInfo $ headMaybe $ drop (conPars $ theDef def) $ telToList reflTel+++-- | Used for both @primForce@ and @primForceLemma@.+genPrimForce :: TCM Type -> (Term -> Arg Term -> Term) -> TCM PrimitiveImpl+genPrimForce b ret = do+  let varEl s a = El (varSort s) <$> a+      varT s a  = varEl s (varM a)+      varS s    = pure $ sort $ varSort s+  t <- hPi "a" (el primLevel) $+       hPi "b" (el primLevel) $+       hPi "A" (varS 1) $+       hPi "B" (varT 2 0 --> varS 1) b+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 6 $ \ ts ->+    case ts of+      [a, b, s, t, u, f] -> do+        u <- reduceB' u+        let isWHNF Blocked{} = return False+            isWHNF (NotBlocked _ u) =+              case unArg u of+                Lit{}      -> return True+                Con{}      -> return True+                Lam{}      -> return True+                Pi{}       -> return True+                Sort{}     -> return True  -- sorts and levels are considered whnf+                Level{}    -> return True+                DontCare{} -> return True+                Def q _    -> do+                  def <- theDef <$> getConstInfo q+                  return $ case def of+                    Datatype{} -> True+                    Record{}   -> True+                    _          -> False+                MetaV{}    -> return False+                Var{}      -> return False+                Dummy s    -> __IMPOSSIBLE_VERBOSE__ s+        ifM (isWHNF u)+            (redReturn $ ret (unArg f) (ignoreBlocking u))+            (return $ NoReduction $ map notReduced [a, b, s, t] ++ [reduced u, notReduced f])+      _ -> __IMPOSSIBLE__++primForce :: TCM PrimitiveImpl+primForce = do+  let varEl s a = El (varSort s) <$> a+      varT s a  = varEl s (varM a)+      varS s    = pure $ sort $ varSort s+  genPrimForce (nPi "x" (varT 3 1) $+                (nPi "y" (varT 4 2) $ varEl 4 $ varM 2 <@> varM 0) -->+                varEl 3 (varM 1 <@> varM 0)) $+    \ f u -> apply f [u]++primForceLemma :: TCM PrimitiveImpl+primForceLemma = do+  let varEl s a = El (varSort s) <$> a+      varT s a  = varEl s (varM a)+      varS s    = pure $ sort $ varSort s+  refl  <- primRefl+  force <- primFunName <$> getPrimitive "primForce"+  genPrimForce (nPi "x" (varT 3 1) $+                nPi "f" (nPi "y" (varT 4 2) $ varEl 4 $ varM 2 <@> varM 0) $+                varEl 4 $ primEquality <#> varM 4 <#> (varM 2 <@> varM 1)+                                       <@> (pure (Def force []) <#> varM 5 <#> varM 4 <#> varM 3 <#> varM 2 <@> varM 1 <@> varM 0)+                                       <@> (varM 0 <@> varM 1)+               ) $ \ _ _ -> refl++mkPrimLevelZero :: TCM PrimitiveImpl+mkPrimLevelZero = do+  t <- primType (undefined :: Lvl)+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 0 $ \_ -> redReturn $ Level $ Max []++mkPrimLevelSuc :: TCM PrimitiveImpl+mkPrimLevelSuc = do+  t <- primType (id :: Lvl -> Lvl)+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 1 $ \ ~[a] -> do+    l <- levelView' $ unArg a+    redReturn $ Level $ levelSuc l++mkPrimLevelMax :: TCM PrimitiveImpl+mkPrimLevelMax = do+  t <- primType (max :: Op Lvl)+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 2 $ \ ~[a, b] -> do+    Max as <- levelView' $ unArg a+    Max bs <- levelView' $ unArg b+    redReturn $ Level $ levelMax $ as ++ bs++mkPrimSetOmega :: TCM PrimitiveImpl+mkPrimSetOmega = do+  let t = sort $ UnivSort Inf+  return $ PrimImpl t $ primFun __IMPOSSIBLE__ 0 $ \_ -> redReturn $ Sort Inf++mkPrimFun1TCM :: (FromTerm a, ToTerm b, TermLike b) =>+                 TCM Type -> (a -> ReduceM b) -> TCM PrimitiveImpl+mkPrimFun1TCM mt f = do+    toA   <- fromTerm+    fromB <- toTermR+    t     <- mt+    return $ PrimImpl t $ primFun __IMPOSSIBLE__ 1 $ \ts ->+      case ts of+        [v] ->+          redBind (toA v) (\v' -> [v']) $ \x -> do+            b <- f x+            case allMetas b of+              (m:_) -> return $ NoReduction [reduced (Blocked m v)]+              []       -> redReturn =<< fromB b+        _ -> __IMPOSSIBLE__++-- Tying the knot+mkPrimFun1 :: (PrimType a, FromTerm a, PrimType b, ToTerm b) =>+              (a -> b) -> TCM PrimitiveImpl+mkPrimFun1 f = do+    toA   <- fromTerm+    fromB <- toTerm+    t     <- primType f+    return $ PrimImpl t $ primFun __IMPOSSIBLE__ 1 $ \ts ->+      case ts of+        [v] ->+          redBind (toA v)+              (\v' -> [v']) $ \x ->+          redReturn $ fromB $ f x+        _ -> __IMPOSSIBLE__++mkPrimFun2 :: ( PrimType a, FromTerm a, ToTerm a+              , PrimType b, FromTerm b+              , PrimType c, ToTerm c ) =>+              (a -> b -> c) -> TCM PrimitiveImpl+mkPrimFun2 f = do+    toA   <- fromTerm+    fromA <- toTerm+    toB   <- fromTerm+    fromC <- toTerm+    t     <- primType f+    return $ PrimImpl t $ primFun __IMPOSSIBLE__ 2 $ \ts ->+      case ts of+        [v,w] ->+          redBind (toA v)+              (\v' -> [v', notReduced w]) $ \x ->+          redBind (toB w)+              (\w' -> [ reduced $ notBlocked $ Arg (argInfo v) (fromA x)+                      , w']) $ \y ->+          redReturn $ fromC $ f x y+        _ -> __IMPOSSIBLE__++mkPrimFun4 :: ( PrimType a, FromTerm a, ToTerm a+              , PrimType b, FromTerm b, ToTerm b+              , PrimType c, FromTerm c, ToTerm c+              , PrimType d, FromTerm d+              , PrimType e, ToTerm e ) =>+              (a -> b -> c -> d -> e) -> TCM PrimitiveImpl+mkPrimFun4 f = do+    (toA, fromA) <- (,) <$> fromTerm <*> toTerm+    (toB, fromB) <- (,) <$> fromTerm <*> toTerm+    (toC, fromC) <- (,) <$> fromTerm <*> toTerm+    toD          <- fromTerm+    fromE        <- toTerm+    t <- primType f+    return $ PrimImpl t $ primFun __IMPOSSIBLE__ 4 $ \ts ->+      let argFrom fromX a x =+            reduced $ notBlocked $ Arg (argInfo a) (fromX x)+      in case ts of+        [a,b,c,d] ->+          redBind (toA a)+              (\a' -> a' : map notReduced [b,c,d]) $ \x ->+          redBind (toB b)+              (\b' -> [argFrom fromA a x, b', notReduced c, notReduced d]) $ \y ->+          redBind (toC c)+              (\c' -> [ argFrom fromA a x+                      , argFrom fromB b y+                      , c', notReduced d]) $ \z ->+          redBind (toD d)+              (\d' -> [ argFrom fromA a x+                      , argFrom fromB b y+                      , argFrom fromC c z+                      , d']) $ \w ->++          redReturn $ fromE $ f x y z w+        _ -> __IMPOSSIBLE__++-- Type combinators++infixr 4 -->+infixr 4 .-->+infixr 4 ..-->++(-->), (.-->), (..-->) :: Monad tcm => tcm Type -> tcm Type -> tcm Type+a --> b = garr id a b+a .--> b = garr (const $ Irrelevant) a b+a ..--> b = garr (const $ NonStrict) a b++garr :: Monad tcm => (Relevance -> Relevance) -> tcm Type -> tcm Type -> tcm Type+garr f a b = do+  a' <- a+  b' <- b+  return $ El (funSort (getSort a') (getSort b')) $+    Pi (mapRelevance f $ defaultDom a') (NoAbs "_" b')++gpi :: (MonadTCM tcm, MonadDebug tcm)+    => ArgInfo -> String -> tcm Type -> tcm Type -> tcm Type+gpi info name a b = do+  a <- a+  let dom = defaultNamedArgDom info name a+  b <- addContext (name, dom) b+  let y = stringToArgName name+  return $ El (piSort (getSort a) (Abs y (getSort b)))+              (Pi dom (Abs y b))++hPi, nPi :: (MonadTCM tcm, MonadDebug tcm)+         => String -> tcm Type -> tcm Type -> tcm Type+hPi = gpi $ setHiding Hidden defaultArgInfo+nPi = gpi defaultArgInfo++hPi', nPi' :: (MonadTCM tcm, MonadDebug tcm)+           => String -> NamesT tcm Type -> (NamesT tcm Term -> NamesT tcm Type) -> NamesT tcm Type+hPi' s a b = hPi s a (bind' s b)+nPi' s a b = nPi s a (bind' s b)++pPi' :: (MonadTCM tcm, MonadDebug tcm)+     => String -> NamesT tcm Term -> (NamesT tcm Term -> NamesT tcm Type) -> NamesT tcm Type+pPi' n phi b = toFinitePi <$> nPi' n (elInf $ cl (liftTCM primIsOne) <@> phi) b+ where+   toFinitePi :: Type -> Type+   toFinitePi (El s (Pi d b)) = El s $ Pi (setRelevance Irrelevant $ d { domFinite = True }) b+   toFinitePi _               = __IMPOSSIBLE__++#if __GLASGOW_HASKELL__ <= 708+el' :: (Functor m, Applicative m, Monad m)+#else+el' :: Monad m+#endif+    => m Term -> m Term -> m Type+el' l a = El <$> (tmSort <$> l) <*> a++elInf :: Functor m => m Term -> m Type+elInf t = (El Inf <$> t)++nolam :: Term -> Term+nolam = Lam defaultArgInfo . NoAbs "_"++varM :: Monad tcm => Int -> tcm Term+varM = return . var++infixl 9 <@>, <#>++gApply :: Monad tcm => Hiding -> tcm Term -> tcm Term -> tcm Term+gApply h a b = gApply' (setHiding h defaultArgInfo) a b++gApply' :: Monad tcm => ArgInfo -> tcm Term -> tcm Term -> tcm Term+gApply' info a b = do+    x <- a+    y <- b+    return $ x `apply` [Arg info y]++(<@>),(<#>),(<..>) :: Monad tcm => tcm Term -> tcm Term -> tcm Term+(<@>) = gApply NotHidden+(<#>) = gApply Hidden+(<..>) = gApply' (setRelevance Irrelevant defaultArgInfo)++(<@@>) :: Monad tcm => tcm Term -> (tcm Term,tcm Term,tcm Term) -> tcm Term+t <@@> (x,y,r) = do+  t <- t+  x <- x+  y <- y+  r <- r+  return $ t `applyE` [IApply x y r]++list :: TCM Term -> TCM Term+list t = primList <@> t++io :: TCM Term -> TCM Term+io t = primIO <@> t++path :: TCM Term -> TCM Term+path t = primPath <@> t++el :: Functor tcm => tcm Term -> tcm Type+el t = El (mkType 0) <$> t++tset :: Monad tcm => tcm Type+tset = return $ sort (mkType 0)++sSizeUniv :: Sort+sSizeUniv = mkType 0+-- Andreas, 2016-04-14 switching off SizeUniv, unfixing issue #1428+-- sSizeUniv = SizeUniv++tSizeUniv :: Monad tcm => tcm Type+tSizeUniv = tset+-- Andreas, 2016-04-14 switching off SizeUniv, unfixing issue #1428+-- tSizeUniv = return $ El sSizeUniv $ Sort sSizeUniv+-- Andreas, 2015-03-16 Since equality checking for types+-- includes equality checking for sorts, we cannot put+-- SizeUniv in Setω.  (SizeUniv : Setω) == (_0 : suc _0)+-- will first instantiate _0 := Setω, which is wrong.+-- tSizeUniv = return $ El Inf $ Sort SizeUniv++-- | Abbreviation: @argN = 'Arg' 'defaultArgInfo'@.+argN :: e -> Arg e+argN = Arg defaultArgInfo++domN :: e -> Dom e+domN = defaultDom++-- | Abbreviation: @argH = 'hide' 'Arg' 'defaultArgInfo'@.+argH :: e -> Arg e+argH = Arg $ setHiding Hidden defaultArgInfo++domH :: e -> Dom e+domH = setHiding Hidden . defaultDom++---------------------------------------------------------------------------+-- * The actual primitive functions+---------------------------------------------------------------------------++type Op   a = a -> a -> a+type Fun  a = a -> a+type Rel  a = a -> a -> Bool+type Pred a = a -> Bool++primitiveFunctions :: Map String (TCM PrimitiveImpl)+primitiveFunctions = Map.fromList++  -- Ulf, 2015-10-28: Builtin integers now map to a datatype, and since you+  -- can define these functions (reasonably) efficiently using the primitive+  -- functions on natural numbers there's no need for them anymore. Keeping the+  -- show function around for convenience, and as a test case for a primitive+  -- function taking an integer.+  -- -- Integer functions+  -- [ "primIntegerPlus"     |-> mkPrimFun2 ((+)        :: Op Integer)+  -- , "primIntegerMinus"    |-> mkPrimFun2 ((-)        :: Op Integer)+  -- , "primIntegerTimes"    |-> mkPrimFun2 ((*)        :: Op Integer)+  -- , "primIntegerDiv"      |-> mkPrimFun2 (div        :: Op Integer)    -- partial+  -- , "primIntegerMod"      |-> mkPrimFun2 (mod        :: Op Integer)    -- partial+  -- , "primIntegerEquality" |-> mkPrimFun2 ((==)       :: Rel Integer)+  -- , "primIntegerLess"     |-> mkPrimFun2 ((<)        :: Rel Integer)+  -- , "primIntegerAbs"      |-> mkPrimFun1 (Nat . abs  :: Integer -> Nat)+  -- , "primNatToInteger"    |-> mkPrimFun1 (toInteger  :: Nat -> Integer)+  [ "primShowInteger"     |-> mkPrimFun1 (Str . show :: Integer -> Str)++  -- Natural number functions+  , "primNatPlus"         |-> mkPrimFun2 ((+)                     :: Op Nat)+  , "primNatMinus"        |-> mkPrimFun2 ((\x y -> max 0 (x - y)) :: Op Nat)+  , "primNatTimes"        |-> mkPrimFun2 ((*)                     :: Op Nat)+  , "primNatDivSucAux"    |-> mkPrimFun4 ((\k m n j -> k + div (max 0 $ n + m - j) (m + 1)) :: Nat -> Nat -> Nat -> Nat -> Nat)+  , "primNatModSucAux"    |->+      let aux :: Nat -> Nat -> Nat -> Nat -> Nat+          aux k m n j | n > j     = mod (n - j - 1) (m + 1)+                      | otherwise = k + n+      in mkPrimFun4 aux+  , "primNatEquality"     |-> mkPrimFun2 ((==) :: Rel Nat)+  , "primNatLess"         |-> mkPrimFun2 ((<)  :: Rel Nat)++  -- Machine words+  , "primWord64ToNat"     |-> mkPrimFun1 (fromIntegral :: Word64 -> Nat)+  , "primWord64FromNat"   |-> mkPrimFun1 (fromIntegral :: Nat -> Word64)++  -- Level functions+  , "primLevelZero"       |-> mkPrimLevelZero+  , "primLevelSuc"        |-> mkPrimLevelSuc+  , "primLevelMax"        |-> mkPrimLevelMax++  -- Sorts+  , "primSetOmega"        |-> mkPrimSetOmega++  -- Floating point functions+  , "primNatToFloat"      |-> mkPrimFun1 (fromIntegral    :: Nat -> Double)+  , "primFloatPlus"       |-> mkPrimFun2 ((+)             :: Op Double)+  , "primFloatMinus"      |-> mkPrimFun2 ((-)             :: Op Double)+  , "primFloatTimes"      |-> mkPrimFun2 ((*)             :: Op Double)+  , "primFloatNegate"     |-> mkPrimFun1 (negate          :: Fun Double)+  , "primFloatDiv"        |-> mkPrimFun2 ((/)             :: Op Double)+  -- ASR (2016-09-29). We use bitwise equality for comparing Double+  -- because Haskell's Eq, which equates 0.0 and -0.0, allows to prove+  -- a contradiction (see Issue #2169).+  , "primFloatEquality"   |-> mkPrimFun2 (floatEq         :: Rel Double)+  , "primFloatLess"       |-> mkPrimFun2 (floatLt         :: Rel Double)+  , "primFloatNumericalEquality" |-> mkPrimFun2 ((==)     :: Rel Double)+  , "primFloatNumericalLess"     |-> mkPrimFun2 ((<)      :: Rel Double)+  , "primFloatSqrt"       |-> mkPrimFun1 (sqrt            :: Double -> Double)+  , "primRound"           |-> mkPrimFun1 (round           :: Double -> Integer)+  , "primFloor"           |-> mkPrimFun1 (floor           :: Double -> Integer)+  , "primCeiling"         |-> mkPrimFun1 (ceiling         :: Double -> Integer)+  , "primExp"             |-> mkPrimFun1 (exp             :: Fun Double)+  , "primLog"             |-> mkPrimFun1 (log             :: Fun Double)+  , "primSin"             |-> mkPrimFun1 (sin             :: Fun Double)+  , "primCos"             |-> mkPrimFun1 (cos             :: Fun Double)+  , "primTan"             |-> mkPrimFun1 (tan             :: Fun Double)+  , "primASin"            |-> mkPrimFun1 (asin            :: Fun Double)+  , "primACos"            |-> mkPrimFun1 (acos            :: Fun Double)+  , "primATan"            |-> mkPrimFun1 (atan            :: Fun Double)+  , "primATan2"           |-> mkPrimFun2 (atan2           :: Double -> Double -> Double)+  , "primShowFloat"       |-> mkPrimFun1 (Str . show      :: Double -> Str)++  -- Character functions+  , "primCharEquality"       |-> mkPrimFun2 ((==) :: Rel Char)+  , "primIsLower"            |-> mkPrimFun1 isLower+  , "primIsDigit"            |-> mkPrimFun1 isDigit+  , "primIsAlpha"            |-> mkPrimFun1 isAlpha+  , "primIsSpace"            |-> mkPrimFun1 isSpace+  , "primIsAscii"            |-> mkPrimFun1 isAscii+  , "primIsLatin1"           |-> mkPrimFun1 isLatin1+  , "primIsPrint"            |-> mkPrimFun1 isPrint+  , "primIsHexDigit"         |-> mkPrimFun1 isHexDigit+  , "primToUpper"            |-> mkPrimFun1 toUpper+  , "primToLower"            |-> mkPrimFun1 toLower+  , "primCharToNat"          |-> mkPrimFun1 (fromIntegral . fromEnum :: Char -> Nat)+  , "primCharToNatInjective" |-> primCharToNatInjective+  , "primNatToChar"          |-> mkPrimFun1 (toEnum . fromIntegral . (`mod` 0x110000)  :: Nat -> Char)+  , "primShowChar"           |-> mkPrimFun1 (Str . show . pretty . LitChar noRange)++  -- String functions+  , "primStringToList"          |-> mkPrimFun1 unStr+  , "primStringToListInjective" |-> primStringToListInjective+  , "primStringFromList"        |-> mkPrimFun1 Str+  , "primStringAppend"          |-> mkPrimFun2 (\s1 s2 -> Str $ unStr s1 ++ unStr s2)+  , "primStringEquality"        |-> mkPrimFun2 ((==) :: Rel Str)+  , "primShowString"            |-> mkPrimFun1 (Str . show . pretty . LitString noRange . unStr)++  -- Other stuff+  , "primEraseEquality"   |-> primEraseEquality+    -- This needs to be force : A → ((x : A) → B x) → B x rather than seq because of call-by-name.+  , "primForce"           |-> primForce+  , "primForceLemma"      |-> primForceLemma+  , "primQNameEquality"   |-> mkPrimFun2 ((==) :: Rel QName)+  , "primQNameLess"       |-> mkPrimFun2 ((<) :: Rel QName)+  , "primShowQName"       |-> mkPrimFun1 (Str . prettyShow :: QName -> Str)+  , "primQNameFixity"     |-> mkPrimFun1 (nameFixity . qnameName)+  , "primMetaEquality"    |-> mkPrimFun2 ((==) :: Rel MetaId)+  , "primMetaLess"        |-> mkPrimFun2 ((<) :: Rel MetaId)+  , "primShowMeta"        |-> mkPrimFun1 (Str . prettyShow :: MetaId -> Str)+  , "primIMin"            |-> primIMin'+  , "primIMax"            |-> primIMax'+  , "primINeg"            |-> primINeg'+  , "primPOr"             |-> primPOr+  , "primComp"            |-> primComp+  , builtinTrans          |-> primTrans'+  , builtinHComp          |-> primHComp'+  , "primIdJ"             |-> primIdJ+  , "primPartial"         |-> primPartial'+  , "primPartialP"        |-> primPartialP'+  , builtinGlue           |-> primGlue'+  , builtin_glue          |-> prim_glue'+  , builtin_unglue        |-> prim_unglue'+  , builtinFaceForall     |-> primFaceForall'+  , "primDepIMin"         |-> primDepIMin'+  , "primIdFace"          |-> primIdFace'+  , "primIdPath"          |-> primIdPath'+  , builtinIdElim         |-> primIdElim'+  , builtinSubOut         |-> primSubOut'+  ]+  where+    (|->) = (,)++lookupPrimitiveFunction :: String -> TCM PrimitiveImpl+lookupPrimitiveFunction x =+  fromMaybe (typeError $ NoSuchPrimitiveFunction x)+            (Map.lookup x primitiveFunctions)++lookupPrimitiveFunctionQ :: QName -> TCM (String, PrimitiveImpl)+lookupPrimitiveFunctionQ q = do+  let s = case qnameName q of+            Name _ x _ _ _ -> prettyShow x   PrimImpl t pf <- lookupPrimitiveFunction s   return (s, PrimImpl t $ pf { primFunName = q }) 
+ src/full/Agda/TypeChecking/Primitive/Cubical.hs view
@@ -0,0 +1,124 @@+{-# LANGUAGE CPP                      #-}+{-# LANGUAGE NondecreasingIndentation #-}++module Agda.TypeChecking.Primitive.Cubical where+import Prelude hiding (null, (!!))++import Agda.Syntax.Common+import Agda.Syntax.Position+import Agda.Syntax.Literal+import Agda.Syntax.Internal++import Control.Monad+import Control.Monad.Reader+import Control.Monad.Trans ( lift )++import Agda.TypeChecking.Names+import Agda.TypeChecking.Primitive hiding (Nat)+import Agda.TypeChecking.Monad+import Agda.TypeChecking.Monad.Builtin+++import Agda.TypeChecking.Free+import Agda.TypeChecking.Substitute+import Agda.TypeChecking.Reduce+import Agda.TypeChecking.Telescope++import Agda.Utils.Except++#include "undefined.h"+import Agda.Utils.Impossible+++-- | Tries to @primTransp@ a whole telescope of arguments, following the rule for Σ types.+--   If a type in the telescope does not support transp, @transpTel@ throws it as an exception.+transpTel :: Abs Telescope -- Γ ⊢ i.Δ+          -> Term          -- Γ ⊢ φ : F  -- i.Δ const on φ+          -> Args          -- Γ ⊢ δ : Δ[0]+          -> ExceptT (Closure (Abs Type)) TCM Args      -- Γ ⊢ Δ[1]+transpTel delta phi args = do+  tTransp <- liftTCM primTrans+  imin <- liftTCM primIMin+  imax <- liftTCM primIMax+  ineg <- liftTCM primINeg+  let+    noTranspError t = lift . throwError =<< liftTCM (buildClosure t)+    bapp :: (Applicative m, Subst t a) => m (Abs a) -> m t -> m a+    bapp t u = lazyAbsApp <$> t <*> u+    gTransp (Just l) t phi a = pure tTransp <#> l <@> (Lam defaultArgInfo . fmap unEl <$> t) <@> phi <@> a+    gTransp Nothing  t phi a = do+      -- Γ ⊢ i.Ξ+      xi <- (open =<<) $ do+        bind "i" $ \ i -> do+          TelV xi _ <- (liftTCM . telView =<<) $ t `bapp` i+          return xi+      argnames <- do+        teleArgNames . unAbs <$> xi+      glamN argnames $ \ xi_args -> do+        b' <- bind "i" $ \ i -> do+          ti <- t `bapp` i+          xin <- bind "i" $ \ i -> xi `bapp` (pure ineg <@> i)+          xi_args <- xi_args+          ni <- pure ineg <@> i+          phi <- phi+          lift $ piApplyM ti =<< trFillTel xin phi xi_args ni+        axi <- do+          a <- a+          xif <- bind "i" $ \ i -> xi `bapp` (pure ineg <@> i)+          phi <- phi+          xi_args <- xi_args+          lift $ apply a <$> transpTel xif phi xi_args+        s <- reduce $ getSort (absBody b')+        case s of+          Type l -> do+            l <- open $ lam_i (Level l)+            b' <- open b'+            axi <- open axi+            gTransp (Just l) b' phi axi+          Inf    ->+            case 0 `freeIn` (raise 1 b' `lazyAbsApp` var 0) of+              False -> return axi+              True -> noTranspError b'+          _ -> noTranspError b'+    lam_i = Lam defaultArgInfo . Abs "i"+    go :: Telescope -> Term -> Args -> ExceptT (Closure (Abs Type)) TCM Args+    go EmptyTel            _   []       = return []+    go (ExtendTel t delta) phi (a:args) = do+      -- Γ,i ⊢ t+      -- Γ,i ⊢ (x : t). delta+      -- Γ ⊢ a : t[0]+      s <- reduce $ getSort t+      -- Γ ⊢ b : t[1], Γ,i ⊢ b : t[i]+      (b,bf) <- runNamesT [] $ do+        l <- case s of+               Inf -> return Nothing+               Type l -> Just <$> open (lam_i (Level l))+               _ -> noTranspError (Abs "i" (unDom t))+        t <- open $ Abs "i" (unDom t)+        [phi,a] <- mapM open [phi, unArg a]+        b <- gTransp l t phi a+        bf <- bind "i" $ \ i -> do+                            gTransp ((<$> l) $ \ l -> lam "j" $ \ j -> l <@> (pure imin <@> i <@> j))+                                    (bind "j" $ \ j -> t `bapp` (pure imin <@> i <@> j))+                                    (pure imax <@> (pure ineg <@> i) <@> phi)+                                    a+        return (b, absBody bf)+      (:) (b <$ a) <$> go (lazyAbsApp delta bf) phi args+    go (ExtendTel t delta) phi []    = __IMPOSSIBLE__+    go EmptyTel            _   (_:_) = __IMPOSSIBLE__+  go (absBody delta) phi args++-- | Like @transpTel@ but performing a transpFill.+trFillTel :: Abs Telescope -- Γ ⊢ i.Δ+          -> Term+          -> Args          -- Γ ⊢ δ : Δ[0]+          -> Term          -- Γ ⊢ r : I+          -> ExceptT (Closure (Abs Type)) TCM Args      -- Γ ⊢ Δ[r]+trFillTel delta phi args r = do+  imin <- liftTCM primIMin+  imax <- liftTCM primIMax+  ineg <- liftTCM primINeg+  transpTel (Abs "j" $ raise 1 delta `lazyAbsApp` (imin `apply` (map argN [var 0, raise 1 r])))+            (imax `apply` [argN $ ineg `apply` [argN r], argN phi])+            args+
src/full/Agda/TypeChecking/ProjectionLike.hs view
@@ -124,6 +124,9 @@           Apply a : es -> return $ ProjectionView f a es           -- Since a projection is a function, it cannot be projected itself.           Proj{}  : _  -> __IMPOSSIBLE__+          -- The principal argument of a projection-like cannot be the interval?+          IApply{} : _ -> __IMPOSSIBLE__+     _ -> fallback  -- | Reduce away top-level projection like functions.@@ -155,11 +158,11 @@ --   on (applications of) projection-like functions. elimView :: Bool -> Term -> TCM Term elimView loneProjToLambda v = do-  reportSDoc "tc.conv.elim" 30 $ text "elimView of " <+> prettyTCM v+  reportSDoc "tc.conv.elim" 30 $ "elimView of " <+> prettyTCM v   reportSLn  "tc.conv.elim" 50 $ "v = " ++ show v   v <- reduceProjectionLike v   reportSDoc "tc.conv.elim" 40 $-    text "elimView (projections reduced) of " <+> prettyTCM v+    "elimView (projections reduced) of " <+> prettyTCM v   pv <- projView v   case pv of     NoProjection{}        -> return v@@ -170,13 +173,15 @@  -- | Which @Def@types are eligible for the principle argument --   of a projection-like function?-eligibleForProjectionLike :: QName -> TCM Bool+eligibleForProjectionLike :: (HasConstInfo m) => QName -> m Bool eligibleForProjectionLike d = eligible . theDef <$> getConstInfo d   where   eligible = \case     Datatype{} -> True     Record{}   -> True     Axiom{}    -> True+    DataOrRecSig{}     -> True+    GeneralizableVar{} -> False     Function{}    -> False     Primitive{}   -> False     Constructor{} -> __IMPOSSIBLE__@@ -227,8 +232,8 @@   defn <- getConstInfo x   let t = defType defn   reportSDoc "tc.proj.like" 20 $ sep-    [ text "Checking for projection likeness "-    , prettyTCM x <+> text " : " <+> prettyTCM t+    [ "Checking for projection likeness "+    , prettyTCM x <+> " : " <+> prettyTCM t     ]   case theDef defn of     Function{funClauses = cls}@@ -239,7 +244,8 @@     -- the dropped arguments.     -- Nor can abstract definitions be projection-like since they won't reduce     -- outside the abstract block.-    def@Function{funProjection = Nothing, funClauses = cls, funCompiled = cc0, funInv = NotInjective,+    def@Function{funProjection = Nothing, funClauses = cls,+                 funSplitTree = st0, funCompiled = cc0, funInv = NotInjective,                  funMutual = Just [], -- Andreas, 2012-09-28: only consider non-mutual funs (or those whose recursion status has not yet been determined)                  funAbstr = ConcreteDef} -> do       ps0 <- filterM validProj $ candidateArgs [] t@@ -252,18 +258,19 @@           {- else -}           case lastMaybe (filter (checkOccurs cls . snd) ps0) of             Nothing -> reportSDoc "tc.proj.like" 50 $ nest 2 $ vcat-              [ text "occurs check failed"-              , nest 2 $ text "clauses =" <?> vcat (map pretty cls) ]+              [ "occurs check failed"+              , nest 2 $ "clauses =" <?> vcat (map pretty cls) ]             Just (d, n) -> do               -- Yes, we are projection-like!               reportSDoc "tc.proj.like" 10 $ sep-                [ prettyTCM x <+> text " : " <+> prettyTCM t+                [ prettyTCM x <+> " : " <+> prettyTCM t                 , text $ " is projection like in argument " ++ show n ++ " for type " ++ show d                 ]               __CRASH_WHEN__ "tc.proj.like.crash" 1000                let cls' = map (dropArgs n) cls                   cc   = dropArgs n cc0+                  st   = dropArgs n st0               reportSLn "tc.proj.like" 60 $ "  rewrote clauses to\n    " ++ show cc                -- Andreas, 2013-10-20 build parameter dropping function@@ -275,11 +282,12 @@                     , projOrig     = x                     , projFromType = d                     , projIndex    = pIndex-                    , projLams     = ProjLams $ map (\ (Dom ai (y, _)) -> Arg ai y) tel+                    , projLams     = ProjLams $ map (argFromDom . fmap fst) tel                     }               let newDef = def                            { funProjection     = Just projection                            , funClauses        = cls'+                           , funSplitTree      = st                            , funCompiled       = cc                            , funInv            = dropArgs n $ funInv def                            }@@ -299,6 +307,8 @@     Function{funMutual = Nothing} ->       reportSLn "tc.proj.like" 30 $ "  mutuality check has not run yet"     Axiom          -> reportSLn "tc.proj.like" 30 $ "  not a function, but Axiom"+    DataOrRecSig{} -> reportSLn "tc.proj.like" 30 $ "  not a function, but DataOrRecSig"+    GeneralizableVar{} -> reportSLn "tc.proj.like" 30 $ "  not a function, but GeneralizableVar"     AbstractDefn{} -> reportSLn "tc.proj.like" 30 $ "  not a function, but AbstractDefn"     Constructor{}  -> reportSLn "tc.proj.like" 30 $ "  not a function, but Constructor"     Datatype{}     -> reportSLn "tc.proj.like" 30 $ "  not a function, but Datatype"@@ -316,10 +326,9 @@     -- and/or positivity checkers.     recursive = do       occs <- computeOccurrences x-      let xocc = Map.lookup (ADef x) occs-      case xocc of-        Just (_ : _) -> return True -- recursive occurrence-        _            -> return False+      case Map.lookup (ADef x) occs of+        Just n | n >= 1 -> return True -- recursive occurrence+        _               -> return False      checkOccurs cls n = all (nonOccur n) cls @@ -345,10 +354,12 @@         shallowMatch _             = True         noMatches = all (noMatch . namedArg)         noMatch ConP{} = False+        noMatch DefP{} = False         noMatch LitP{} = False         noMatch ProjP{}= False         noMatch VarP{} = True         noMatch DotP{} = True+        noMatch IApplyP{} = True      -- Make sure non of the parameters occurs in the body of the function.     checkBody m n b = not . getAny $ runFree badVar IgnoreNot b
src/full/Agda/TypeChecking/ProjectionLike.hs-boot view
@@ -2,6 +2,7 @@  import Agda.Syntax.Abstract.Name (QName) import Agda.TypeChecking.Monad.Base+import {-# SOURCE #-} Agda.TypeChecking.Monad.Signature (HasConstInfo)  makeProjection :: QName -> TCM ()-eligibleForProjectionLike :: QName -> TCM Bool+eligibleForProjectionLike :: (HasConstInfo m) => QName -> m Bool
src/full/Agda/TypeChecking/Quote.hs view
@@ -36,7 +36,6 @@ import Agda.Utils.Impossible import Agda.Utils.Monad ( ifM ) import Agda.Utils.Permutation ( Permutation(Perm), compactP, reverseP )-import Agda.Utils.String ( Str(Str), unStr ) import Agda.Utils.VarSet (VarSet) import qualified Agda.Utils.VarSet as Set import Agda.Utils.FileName@@ -55,7 +54,7 @@  quotingKit :: TCM QuotingKit quotingKit = do-  currentFile     <- fromMaybe __IMPOSSIBLE__ <$> asks envCurrentPath+  currentFile     <- fromMaybe __IMPOSSIBLE__ <$> asksTC envCurrentPath   hidden          <- primHidden   instanceH       <- primInstance   visible         <- primVisible@@ -149,12 +148,14 @@        quoteSort :: Sort -> ReduceM Term       quoteSort (Type t) = quoteSortLevelTerm t-      quoteSort Prop     = pure unsupportedSort+      quoteSort Prop{}   = pure unsupportedSort       quoteSort Inf      = pure unsupportedSort       quoteSort SizeUniv = pure unsupportedSort       quoteSort PiSort{} = pure unsupportedSort       quoteSort UnivSort{} = pure unsupportedSort       quoteSort (MetaS x es) = quoteTerm $ MetaV x es+      quoteSort (DefS d es) = quoteTerm $ Def d es+      quoteSort (DummyS s) =__IMPOSSIBLE_VERBOSE__ s        quoteType :: Type -> ReduceM Term       quoteType (El _ t) = quoteTerm t@@ -173,6 +174,8 @@       quotePat (ConP c _ ps)     = conP !@ quoteQName (conName c) @@ quotePats ps       quotePat (LitP l)          = litP !@ quoteLit l       quotePat (ProjP _ x)       = projP !@ quoteQName x+      quotePat (IApplyP o t u x)  = pure unsupported+      quotePat DefP{}             = pure unsupported        quoteClause :: Clause -> ReduceM Term       quoteClause cl@Clause{namedClausePats = ps, clauseBody = body} =@@ -191,7 +194,7 @@       quoteList q xs = list (map q xs)        quoteDom :: (Type -> ReduceM Term) -> Dom Type -> ReduceM Term-      quoteDom q (Dom info t) = arg !@ quoteArgInfo info @@ q t+      quoteDom q (Dom{domInfo = info, unDom = t}) = arg !@ quoteArgInfo info @@ q t        quoteAbs :: Subst t a => (a -> ReduceM Term) -> Abs a -> ReduceM Term       quoteAbs q (Abs s t)   = abs !@! quoteString s @@ q t@@ -212,20 +215,27 @@           Lam info t -> lam !@ quoteHiding (getHiding info) @@ quoteAbs quoteTerm t           Def x es   -> do             defn <- getConstInfo x-            n <- getDefFreeVars x             -- #2220: remember to restore dropped parameters             let               conOrProjPars = defParameters defn               ts = fromMaybe __IMPOSSIBLE__ $ allApplyElims es-              qx Function{ funExtLam = Just (ExtLamInfo m), funClauses = cs } = do+              qx Function{ funExtLam = Just (ExtLamInfo m _), funClauses = cs } = do                     -- An extended lambda should not have any extra parameters!                     unless (null conOrProjPars) __IMPOSSIBLE__                     n <- size <$> lookupSection m-                    extlam !@ list (map (quoteClause . (`apply` (take n ts))) cs)-              qx Function{ funCompiled = Just Fail, funClauses = [cl] } =-                    extlam !@ list [quoteClause $ dropArgs (length (namedClausePats cl) - 1) cl]-              qx _ = def !@! quoteName x-            qx (theDef defn) @@ list (drop n $ conOrProjPars ++ map (quoteArg quoteTerm) ts)+                    let (pars, args) = splitAt n ts+                    extlam !@ list (map (quoteClause . (`apply` pars)) cs)+                           @@ list (map (quoteArg quoteTerm) args)+              qx df@Function{ funCompiled = Just Fail, funClauses = [cl] } = do+                    -- See also corresponding code in InternalToAbstract+                    let n = length (namedClausePats cl) - 1+                    extlam !@ list [quoteClause $ dropArgs n cl]+                           @@ list (drop n $ map (quoteArg quoteTerm) ts)+              qx _ = do+                n <- getDefFreeVars x+                def !@! quoteName x+                     @@ list (drop n $ conOrProjPars ++ map (quoteArg quoteTerm) ts)+            qx (theDef defn)           Con x ci es | Just ts <- allApplyElims es -> do             cDef <- getConstInfo (conName x)             n    <- getDefFreeVars (conName x)@@ -240,6 +250,7 @@           MetaV x es -> meta !@! quoteMeta currentFile x @@ quoteArgs vs             where vs = fromMaybe __IMPOSSIBLE__ $ allApplyElims es           DontCare{} -> pure unsupported -- could be exposed at some point but we have to take care+          Dummy s    -> __IMPOSSIBLE_VERBOSE__ s        defParameters :: Definition -> [ReduceM Term]       defParameters def = map par hiding@@ -264,6 +275,8 @@               !@! quoteName (conName c)               @@ quoteList (quoteArg (pure . quoteName)) fs           Axiom{}       -> pure agdaDefinitionPostulate+          DataOrRecSig{} -> pure agdaDefinitionPostulate+          GeneralizableVar{} -> pure agdaDefinitionPostulate  -- TODO: reflect generalizable vars           AbstractDefn{}-> pure agdaDefinitionPostulate           Primitive{primClauses = cs} | not $ null cs ->             agdaDefinitionFunDef !@ quoteList quoteClause cs
src/full/Agda/TypeChecking/ReconstructParameters.hs view
@@ -46,11 +46,11 @@ reconstructParameters :: Type -> Term -> TCM Term reconstructParameters a v = do   reportSDoc "tc.with.reconstruct" 30 $-    sep [ text "reconstructing parameters in"-        , nest 2 $ sep [ prettyTCM v <+> text ":", nest 2 $ prettyTCM a ] ]+    sep [ "reconstructing parameters in"+        , nest 2 $ sep [ prettyTCM v <+> ":", nest 2 $ prettyTCM a ] ]   v <- checkInternal' (defaultAction{ postAction = reconstruct }) v a   reportSDoc "tc.with.reconstruct" 30 $-    nest 2 $ text "-->" <+> prettyTCM v+    nest 2 $ "-->" <+> prettyTCM v   return v   where     reconstruct a v = do@@ -59,8 +59,8 @@           TelV tel a <- telView a           let under = size tel  -- under-applied when under > 0           reportSDoc "tc.with.reconstruct" 50 $-            sep [ text "reconstructing"-                , nest 2 $ sep [ prettyTCM v <+> text ":"+            sep [ "reconstructing"+                , nest 2 $ sep [ prettyTCM v <+> ":"                                , nest 2 $ prettyTCM a ] ]           case (unEl a) of             Def d es -> do
src/full/Agda/TypeChecking/RecordPatterns.hs view
@@ -73,13 +73,15 @@         typeError $ ShouldBeRecordPattern p       let t = unArg $ fromMaybe __IMPOSSIBLE__ $ conPType ci       reportSDoc "tc.rec" 45 $ vcat-        [ text "recordPatternToProjections: "-        , nest 2 $ text "constructor pattern " <+> prettyTCM p <+> text " has type " <+> prettyTCM t+        [ "recordPatternToProjections: "+        , nest 2 $ "constructor pattern " <+> prettyTCM p <+> " has type " <+> prettyTCM t         ]       reportSLn "tc.rec" 70 $ "  type raw: " ++ show t       fields <- getRecordTypeFields t       concat <$> zipWithM comb (map proj fields) (map namedArg ps)     ProjP{}      -> __IMPOSSIBLE__ -- copattern cannot appear here+    IApplyP{}    -> typeError $ ShouldBeRecordPattern p+    DefP{}       -> typeError $ ShouldBeRecordPattern p   where     proj p = (`applyE` [Proj ProjSystem $ unArg p])     comb :: (Term -> Term) -> DeBruijnPattern -> TCM [Term -> Term]@@ -132,17 +134,17 @@ translateCompiledClauses :: CompiledClauses -> TCM CompiledClauses translateCompiledClauses cc = do   reportSDoc "tc.cc.record" 20 $ vcat-    [ text "translate record patterns in compiled clauses"+    [ "translate record patterns in compiled clauses"     , nest 2 $ return $ pretty cc     ]   cc <- loop cc   reportSDoc "tc.cc.record" 20 $ vcat-    [ text "translated compiled clauses (no eta record patterns):"+    [ "translated compiled clauses (no eta record patterns):"     , nest 2 $ return $ pretty cc     ]   cc <- recordExpressionsToCopatterns cc   reportSDoc "tc.cc.record" 20 $ vcat-    [ text "translated compiled clauses (record expressions to copatterns):"+    [ "translated compiled clauses (record expressions to copatterns):"     , nest 2 $ return $ pretty cc     ]   return cc@@ -161,6 +163,7 @@                        , conBranches    = conMap                        , etaBranch      = eta                        , litBranches    = litMap+                       , fallThrough    = fT                        , catchAllBranch = catchAll                        , lazyMatch      = lazy } = do @@ -178,13 +181,14 @@           [(c, b)] | not comatch -> -- possible eta-match             getConstructorInfo c >>= \ case               RecordCon YesEta fs ->-                let ch = ConHead c Inductive $ map unArg fs in+                let ch = ConHead c Inductive fs in                 yesEtaCase ch b               _ -> noEtaCase           _ -> noEtaCase       return $ Case i cs{ conBranches    = conMap                         , etaBranch      = eta                         , litBranches    = litMap+                        , fallThrough    = fT                         , catchAllBranch = catchAll                         } @@ -223,7 +227,7 @@               let body (Apply v) = WithArity 0 $ Done xs (unArg v)                   body _ = __IMPOSSIBLE__                   bs     = Branches True (Map.fromList $ zip (map unArg fs) (map body es))-                                    Nothing Map.empty Nothing False+                                    Nothing Map.empty Nothing Nothing False               -- translate new cases recursively (there might be nested record expressions)               Case (defaultArg $ length xs) <$> traverse recordExpressionsToCopatterns bs         _ -> return cc@@ -493,8 +497,8 @@       -- Permutation taking the new variable and dot patterns to the       -- new telescope.       newPerm = adjustForDotPatterns $-                  reorderTel_ $ map (maybe dummyDom snd) newTel'-        -- It is important that dummyDom does not mention any variable+                  reorderTel_ $ map (maybe __DUMMY_DOM__ snd) newTel'+        -- It is important that __DUMMY_DOM__ does not mention any variable         -- (see the definition of reorderTel).         where         isDotP n = case List.genericIndex cs n of@@ -528,36 +532,36 @@             }    reportSDoc "tc.lhs.recpat" 20 $ vcat-      [ text "Original clause:"+      [ "Original clause:"       , nest 2 $ inTopContext $ vcat-        [ text "delta =" <+> prettyTCM (clauseTel clause)-        , text "pats  =" <+> text (show $ clausePats clause)+        [ "delta =" <+> prettyTCM (clauseTel clause)+        , "pats  =" <+> text (show $ clausePats clause)         ]-      , text "Intermediate results:"+      , "Intermediate results:"       , nest 2 $ vcat-        [ text "ps        =" <+> text (show ps)-        , text "s         =" <+> prettyTCM s-        , text "cs        =" <+> prettyTCM cs-        , text "flattenedOldTel =" <+> (text . show) flattenedOldTel-        , text "newTel'   =" <+> (text . show) newTel'-        , text "newPerm   =" <+> prettyTCM newPerm+        [ "ps        =" <+> text (show ps)+        , "s         =" <+> prettyTCM s+        , "cs        =" <+> prettyTCM cs+        , "flattenedOldTel =" <+> (text . show) flattenedOldTel+        , "newTel'   =" <+> (text . show) newTel'+        , "newPerm   =" <+> prettyTCM newPerm         ]       ]    reportSDoc "tc.lhs.recpat" 20 $ vcat-        [ text "lhsSubst' =" <+> (text . show) lhsSubst'-        , text "lhsSubst  =" <+> (text . show) lhsSubst-        , text "newTel  =" <+> prettyTCM newTel+        [ "lhsSubst' =" <+> (text . show) lhsSubst'+        , "lhsSubst  =" <+> (text . show) lhsSubst+        , "newTel  =" <+> prettyTCM newTel         ]    reportSDoc "tc.lhs.recpat" 10 $     escapeContext (size $ clauseTel clause) $ vcat-      [ text "Translated clause:"+      [ "Translated clause:"       , nest 2 $ vcat-        [ text "delta =" <+> prettyTCM (clauseTel c)-        , text "ps    =" <+> text (show $ clausePats c)-        , text "body  =" <+> text (show $ clauseBody c)-        , text "body  =" <+> addContext (clauseTel c) (maybe (text "_|_") prettyTCM (clauseBody c))+        [ "delta =" <+> prettyTCM (clauseTel c)+        , "ps    =" <+> text (show $ clausePats c)+        , "body  =" <+> text (show $ clauseBody c)+        , "body  =" <+> addContext (clauseTel c) (maybe "_|_" prettyTCM (clauseBody c))         ]       ] @@ -576,7 +580,7 @@ newtype RecPatM a = RecPatM (TCMT (ReaderT Nat (StateT Nat IO)) a)   deriving (Functor, Applicative, Monad,             MonadIO, MonadTCM, HasOptions, MonadDebug,-            MonadReader TCEnv, MonadState TCState)+            MonadTCEnv, MonadTCState)  -- | Runs a computation in the 'RecPatM' monad. @@ -617,15 +621,15 @@  instance Pretty (Kind -> Nat) where   pretty f =-    P.text "(VarPat:" P.<+> P.text (show $ f VarPat) P.<+>-    P.text "DotPat:"  P.<+> P.text (show $ f DotPat) P.<> P.text ")"+    "(VarPat:" P.<+> P.text (show $ f VarPat) P.<+>+    "DotPat:"  P.<+> P.text (show $ f DotPat) P.<> ")"  instance PrettyTCM (Kind -> Nat) where   prettyTCM = return . pretty  instance PrettyTCM Change where   prettyTCM (Left  p) = prettyTCM p-  prettyTCM (Right (f, x, t)) = text "Change" <+> prettyTCM f <+> text x <+> prettyTCM t+  prettyTCM (Right (f, x, t)) = "Change" <+> prettyTCM f <+> text x <+> prettyTCM t  -- | Record pattern trees. @@ -708,10 +712,14 @@   | otherwise = do       (ps, s, cs) <- translatePatterns ps       return (ConP c ci ps, s, cs)+translatePattern p@(DefP o q ps) = do+      (ps, s, cs) <- translatePatterns ps+      return (DefP o q ps, s, cs) translatePattern p@VarP{} = removeTree (Leaf p) translatePattern p@DotP{} = removeTree (Leaf p) translatePattern p@LitP{} = return (p, [], []) translatePattern p@ProjP{}= return (p, [], [])+translatePattern p@IApplyP{}= return (p, [], [])  translatePatterns :: [NamedArg Pattern] -> RecPatM ([NamedArg Pattern], [Term], Changes) translatePatterns ps = do@@ -748,8 +756,8 @@     Just ts -> liftTCM $ do       t <- reduce t       reportSDoc "tc.rec" 45 $ vcat-        [ text "recordTree: "-        , nest 2 $ text "constructor pattern " <+> prettyTCM p <+> text " has type " <+> prettyTCM t+        [ "recordTree: "+        , nest 2 $ "constructor pattern " <+> prettyTCM p <+> " has type " <+> prettyTCM t         ]       -- Andreas, 2018-03-03, see #2989:       -- The content of an @Arg@ might not be reduced (if @Arg@ is @Irrelevant@).@@ -758,10 +766,12 @@       let proj p = (`applyE` [Proj ProjSystem $ unArg p])       return $ Right $ RecCon t $ zip (map proj fields) ts recordTree p@(ConP _ ci _) = return $ Left $ translatePattern p+recordTree p@DefP{} = return $ Left $ translatePattern p recordTree p@VarP{} = return (Right (Leaf p)) recordTree p@DotP{} = return (Right (Leaf p)) recordTree p@LitP{} = return $ Left $ translatePattern p recordTree p@ProjP{}= return $ Left $ translatePattern p+recordTree p@IApplyP{}= return $ Left $ translatePattern p  ------------------------------------------------------------------------ -- Translation of the clause telescope and body
src/full/Agda/TypeChecking/Records.hs view
@@ -8,6 +8,7 @@ #endif  import Control.Monad+import Control.Monad.Reader import Control.Monad.Trans.Maybe  import Data.Function@@ -23,11 +24,12 @@ import Agda.Syntax.Internal as I import Agda.Syntax.Position +import Agda.TypeChecking.Irrelevance import Agda.TypeChecking.Monad-import Agda.TypeChecking.Substitute import Agda.TypeChecking.Pretty import Agda.TypeChecking.Reduce import Agda.TypeChecking.Reduce.Monad ()+import Agda.TypeChecking.Substitute import Agda.TypeChecking.Telescope  import {-# SOURCE #-} Agda.TypeChecking.ProjectionLike (eligibleForProjectionLike)@@ -115,9 +117,9 @@  -- | Get the definition for a record. Throws an exception if the name --   does not refer to a record or the record is abstract.-getRecordDef :: QName -> TCM Defn+getRecordDef :: (MonadTCM m, HasConstInfo m) => QName -> m Defn getRecordDef r = maybe err return =<< isRecord r-  where err = typeError $ ShouldBeRecordType (El Prop $ Def r [])+  where err = typeError $ ShouldBeRecordType (El __DUMMY_SORT__ $ Def r [])  -- | Get the record name belonging to a field name. getRecordOfField :: QName -> TCM (Maybe QName)@@ -135,8 +137,8 @@ -- | Find all records with at least the given fields. findPossibleRecords :: [C.Name] -> TCM [QName] findPossibleRecords fields = do-  defs  <- HMap.elems <$> use (stSignature . sigDefinitions)-  idefs <- HMap.elems <$> use (stImports   . sigDefinitions)+  defs  <- HMap.elems <$> useTC (stSignature . sigDefinitions)+  idefs <- HMap.elems <$> useTC (stImports   . sigDefinitions)   return $ cands defs ++ cands idefs   where     cands defs = [ defName d | d <- defs, possible d ]@@ -186,14 +188,16 @@ -- | Reduce a type and check whether it is a record type. --   Succeeds only if type is not blocked by a meta var. --   If yes, return its name, parameters, and definition.-isRecordType :: Type -> TCM (Maybe (QName, Args, Defn))+isRecordType :: (MonadReduce m, HasConstInfo m)+             => Type -> m (Maybe (QName, Args, Defn)) isRecordType t = either (const Nothing) Just <$> tryRecordType t  -- | Reduce a type and check whether it is a record type. --   Succeeds only if type is not blocked by a meta var. --   If yes, return its name, parameters, and definition. --   If no, return the reduced type (unless it is blocked).-tryRecordType :: Type -> TCM (Either (Blocked Type) (QName, Args, Defn))+tryRecordType :: (MonadReduce m, HasConstInfo m)+              => Type -> m (Either (Blocked Type) (QName, Args, Defn)) tryRecordType t = ifBlockedType t (\ m a -> return $ Left $ Blocked m a) $ \ nb t -> do   let no = return $ Left $ NotBlocked nb t   case unEl t of@@ -224,7 +228,8 @@ --   Precondition: @t@ is reduced. -- --   See also: 'Agda.TypeChecking.Datatypes.getConType'-getDefType :: QName -> Type -> TCM (Maybe Type)+getDefType :: (HasConstInfo m, MonadReduce m, MonadDebug m)+           => QName -> Type -> m (Maybe Type) getDefType f t = do   -- Andreas, Issue #1973: we need to take the original projection   -- since the parameters from the reduced type t are correct for@@ -237,9 +242,9 @@   -- if @f@ is not a projection (like) function, @a@ is the correct type       fallback = return $ Just a   reportSDoc "tc.deftype" 20 $ vcat-    [ text "definition f = " <> prettyTCM f <+> text ("  -- raw: " ++ prettyShow f)-    , text "has type   a = " <> prettyTCM a-    , text "principal  t = " <> prettyTCM t+    [ "definition f = " <> prettyTCM f <+> text ("  -- raw: " ++ prettyShow f)+    , "has type   a = " <> prettyTCM a+    , "principal  t = " <> prettyTCM t     ]   caseMaybe mp fallback $     \ (Projection{ projIndex = n }) -> if n <= 0 then fallback else do@@ -260,7 +265,7 @@             let pars = fromMaybe __IMPOSSIBLE__ $ allApplyElims $ take npars es             reportSDoc "tc.deftype" 20 $ vcat               [ text $ "head d     = " ++ prettyShow d-              , text "parameters =" <+> sep (map prettyTCM pars)+              , "parameters =" <+> sep (map prettyTCM pars)               ]             reportSLn "tc.deftype" 60 $ "parameters = " ++ show pars             if length pars < npars then failure "does not supply enough parameters"@@ -271,8 +276,8 @@     failNotDef  = failure "is not a Def."     failure reason = do       reportSDoc "tc.deftype" 25 $ sep-        [ text "Def. " <+> prettyTCM f <+> text " is projection(like)"-        , text "but the type "+        [ "Def. " <+> prettyTCM f <+> " is projection(like)"+        , "but the type "         , prettyTCM t         , text $ "of its argument " ++ reason         ]@@ -310,7 +315,7 @@ instance PrettyTCM ElimType where   prettyTCM (ArgT a)    = prettyTCM a   prettyTCM (ProjT a b) =-    text "." <> parens (prettyTCM a <+> text "->" <+> prettyTCM b)+    "." <> parens (prettyTCM a <+> "->" <+> prettyTCM b)  -- | Given a head and its type, compute the types of the eliminations. @@ -318,13 +323,16 @@ typeElims a _ [] = return [] typeElims a self (e : es) = do   case e of-    Apply v -> ifNotPiType a __IMPOSSIBLE__ {- else -} $ \ a b -> do+    -- Andrea 02/08/2017: when going from patterns to elims we+    -- generate an Apply elim even for Path types, because we use VarP+    -- for both, so we have to allow for a Path type here.+    Apply v -> ifNotPiOrPathType a __IMPOSSIBLE__ {- else -} $ \ a b -> do       (ArgT a :) <$> typeElims (absApp b $ unArg v) (self `applyE` [e]) es     Proj o f -> do       a <- reduce a       (dom, self, a) <- fromMaybe __IMPOSSIBLE__ <$> projectTyped self a o f       (ProjT dom a :) <$> typeElims a self es-+    IApply{} -> __IMPOSSIBLE__  -- | Check if a name refers to an eta expandable record. {-# SPECIALIZE isEtaRecord :: QName -> TCM Bool #-}@@ -345,7 +353,8 @@ isInductiveRecord r = maybe False (\ d -> recInduction d /= Just CoInductive) <$> isRecord r  -- | Check if a type is an eta expandable record and return the record identifier and the parameters.-isEtaRecordType :: Type -> TCM (Maybe (QName, Args))+isEtaRecordType :: (HasConstInfo m)+                => Type -> m (Maybe (QName, Args)) isEtaRecordType a = case unEl a of   Def d es -> do     let vs = fromMaybe __IMPOSSIBLE__ $ allApplyElims es@@ -439,13 +448,13 @@       l     = size gamma - 1 - i   -- Extract type of @i@th de Bruijn index.   -- Γ = Γ₁, x:a, Γ₂-  let (gamma1, dom@(Dom ai (x, a)) : gamma2) = splitAt l gamma+  let (gamma1, dom@(Dom{domInfo = ai, unDom = (x, a)}) : gamma2) = splitAt l gamma   -- This must be a eta-expandable record type.   let failure = do         reportSDoc "tc.meta.assign.proj" 25 $-          text "failed to eta-expand variable " <+> pretty x <+>-          text " since its type " <+> prettyTCM a <+>-          text " is not a record type"+          "failed to eta-expand variable " <+> pretty x <+>+          " since its type " <+> prettyTCM a <+>+          " is not a record type"         return Nothing   caseMaybeM (isRecordType a) failure $ \ (r, pars, def) -> do     if recEtaEquality def == NoEta then return Nothing else Just <$> do@@ -510,7 +519,7 @@   TelV gamma core <- telViewUpTo n t   case unEl core of     -- There should be at least one domain left-    Pi (Dom ai a) b -> do+    Pi (dom@Dom{domInfo = ai, unDom = a}) b -> do       -- Eta-expand @dom@ along @qs@ into a telescope @tel@, computing a substitution.       -- For now, we only eta-expand once.       -- This might trigger another call to @etaExpandProjectedVar@ later.@@ -530,7 +539,7 @@           curry v = teleLam gamma $ teleLam tel $                       raise (n+m) v `apply` (xs ++ [Arg ai u])           zs  = for fs $ fmap $ \ f -> Var 0 [Proj ProjSystem f]-          atel = sgTel $ Dom ai (absName b, a)+          atel = sgTel $ (,) (absName b) <$> dom           uncurry v = teleLam gamma $ teleLam atel $                         raise (n + 1) v `apply` (xs ++ zs)       return (curry, uncurry, t')@@ -550,23 +559,28 @@      where @tel@ is the record telescope instantiated at the parameters @pars@. -}-etaExpandRecord :: QName -> Args -> Term -> TCM (Telescope, Args)+etaExpandRecord :: (MonadTCM m, HasConstInfo m, MonadDebug m)+                => QName -> Args -> Term -> m (Telescope, Args) etaExpandRecord = etaExpandRecord' False  -- | Eta expand a record regardless of whether it's an eta-record or not.-forceEtaExpandRecord :: QName -> Args -> Term -> TCM (Telescope, Args)+forceEtaExpandRecord :: (MonadTCM m, HasConstInfo m, MonadDebug m)+                     => QName -> Args -> Term -> m (Telescope, Args) forceEtaExpandRecord = etaExpandRecord' True -etaExpandRecord' :: Bool -> QName -> Args -> Term -> TCM (Telescope, Args)+etaExpandRecord' :: (MonadTCM m, HasConstInfo m, MonadDebug m)+                 => Bool -> QName -> Args -> Term -> m (Telescope, Args) etaExpandRecord' forceEta r pars u = do   def <- getRecordDef r   (tel, _, _, args) <- etaExpandRecord'_ forceEta r pars def u   return (tel, args) -etaExpandRecord_ :: QName -> Args -> Defn -> Term -> TCM (Telescope, ConHead, ConInfo, Args)+etaExpandRecord_ :: (MonadTCEnv m, HasOptions m, MonadDebug m)+                 => QName -> Args -> Defn -> Term -> m (Telescope, ConHead, ConInfo, Args) etaExpandRecord_ = etaExpandRecord'_ False -etaExpandRecord'_ :: Bool -> QName -> Args -> Defn -> Term -> TCM (Telescope, ConHead, ConInfo, Args)+etaExpandRecord'_ :: (MonadTCEnv m, HasOptions m, MonadDebug m)+                  => Bool -> QName -> Args -> Defn -> Term -> m (Telescope, ConHead, ConInfo, Args) etaExpandRecord'_ forceEta r pars def u = do   let Record{ recConHead     = con             , recFields      = xs@@ -582,7 +596,7 @@       let args = fromMaybe __IMPOSSIBLE__ $ allApplyElims es       when (con /= con_) $ do         reportSDoc "impossible" 10 $ vcat-          [ text "etaExpandRecord_: the following two constructors should be identical"+          [ "etaExpandRecord_: the following two constructors should be identical"           , nest 2 $ text $ "con  = " ++ prettyShow con           , nest 2 $ text $ "con_ = " ++ prettyShow con_           ]@@ -595,10 +609,10 @@       -- thus, we can use them in Proj directly.       let xs' = for xs $ fmap $ \ x -> u `applyE` [Proj ProjSystem x]       reportSDoc "tc.record.eta" 20 $ vcat-        [ text "eta expanding" <+> prettyTCM u <+> text ":" <+> prettyTCM r+        [ "eta expanding" <+> prettyTCM u <+> ":" <+> prettyTCM r         , nest 2 $ vcat-          [ text "tel' =" <+> prettyTCM tel'-          , text "args =" <+> prettyTCM xs'+          [ "tel' =" <+> prettyTCM tel'+          , "args =" <+> prettyTCM xs'           ]         ]       return (tel', con, ConOSystem, xs')@@ -664,7 +678,7 @@  -- | Return the unique (closed) inhabitant if exists. --   In case of counting irrelevance in, the returned inhabitant---   contains garbage.+--   contains dummy terms. isSingletonRecord' :: Bool -> QName -> Args -> TCM (Either MetaId (Maybe Term)) isSingletonRecord' regardIrrelevance r ps = do   reportSLn "tc.meta.eta" 30 $ "Is " ++ prettyShow r ++ " a singleton record type?"@@ -674,22 +688,20 @@   check :: Telescope -> TCM (Either MetaId (Maybe [Arg Term]))   check tel = do     reportSDoc "tc.meta.eta" 30 $-      text "isSingletonRecord' checking telescope " <+> prettyTCM tel+      "isSingletonRecord' checking telescope " <+> prettyTCM tel     case tel of       EmptyTel -> return $ Right $ Just []-      ExtendTel dom tel-        | isIrrelevant dom && regardIrrelevance -> do-          underAbstraction dom tel $ \ tel ->-            emap (Arg (domInfo dom) garbage :) <$> check tel-        | otherwise -> do+      ExtendTel dom tel -> ifM (return regardIrrelevance `and2M` isIrrelevantOrPropM dom)+        {-then-}+          (underAbstraction dom tel $ \ tel ->+            emap (Arg (domInfo dom) __DUMMY_TERM__ :) <$> check tel)+        {-else-} $ do           isSing <- isSingletonType' regardIrrelevance $ unDom dom           case isSing of             Left mid       -> return $ Left mid             Right Nothing  -> return $ Right Nothing             Right (Just v) -> underAbstraction dom tel $ \ tel ->               emap (Arg (domInfo dom) v :) <$> check tel-  garbage :: Term-  garbage = Sort Prop  -- | Check whether a type has a unique inhabitant and return it. --   Can be blocked by a metavar.@@ -724,11 +736,11 @@     isEtaVarG :: Term -> Type -> Maybe Int -> [Elim' Int] -> MaybeT TCM Int     isEtaVarG u a mi es = do       (u, a) <- liftTCM $ reduce (u, a)-      liftTCM $ reportSDoc "tc.lhs" 80 $ text "isEtaVarG" <+> nest 2 (vcat-        [ text "u  = " <+> text (show u)-        , text "a  = " <+> prettyTCM a-        , text "mi = " <+> text (show mi)-        , text "es = " <+> prettyList (map (text . show) es)+      liftTCM $ reportSDoc "tc.lhs" 80 $ "isEtaVarG" <+> nest 2 (vcat+        [ "u  = " <+> text (show u)+        , "a  = " <+> prettyTCM a+        , "mi = " <+> text (show mi)+        , "es = " <+> prettyList (map (text . show) es)         ])       case (u, unEl a) of         (Var i' es', _) -> do@@ -773,6 +785,11 @@     -- Jedi mind tricks on us)     areEtaVarElims u a (Proj{}  : _ ) (Apply _ : _  ) = mzero     areEtaVarElims u a (Apply _ : _ ) (Proj{}  : _  ) = mzero+    areEtaVarElims u a (Proj{} : _ ) (IApply{} : _  ) = mzero+    areEtaVarElims u a (IApply{} : _ ) (Proj{} : _  ) = mzero+    areEtaVarElims u a (Apply  _ : _ ) (IApply{} : _  ) = mzero+    areEtaVarElims u a (IApply{} : _ ) (Apply  _ : _  ) = mzero+    areEtaVarElims u a (IApply{} : _) (IApply{} : _) = __IMPOSSIBLE__ -- TODO Andrea: not actually impossible, should be done like Apply     areEtaVarElims u a (Apply v : es) (Apply i : es') = do       ifNotPiType a (const mzero) $ \dom cod -> do       _ <- isEtaVarG (unArg v) (unDom dom) (Just $ unArg i) []@@ -806,5 +823,7 @@   normaliseProjP p@VarP{}        = return p   normaliseProjP p@DotP{}        = return p   normaliseProjP (ConP c cpi ps) = ConP c cpi <$> normaliseProjP ps+  normaliseProjP (DefP o q ps) = DefP o q <$> normaliseProjP ps   normaliseProjP p@LitP{}        = return p   normaliseProjP (ProjP o d0)    = ProjP o <$> getOriginalProjection d0+  normaliseProjP p@IApplyP{}     = return p
src/full/Agda/TypeChecking/Reduce.hs view
@@ -43,6 +43,7 @@ import Agda.Utils.Function import Agda.Utils.Functor import Agda.Utils.Lens+import Agda.Utils.Maybe import Agda.Utils.Monad import Agda.Utils.HashMap (HashMap) import Agda.Utils.Size@@ -51,24 +52,29 @@ #include "undefined.h" import Agda.Utils.Impossible -instantiate :: Instantiate a => a -> TCM a-instantiate = runReduceM . instantiate'+instantiate :: (Instantiate a, MonadReduce m) => a -> m a+instantiate = liftReduce . instantiate' -instantiateFull :: InstantiateFull a => a -> TCM a-instantiateFull = runReduceM . instantiateFull'+instantiateFull :: (InstantiateFull a, MonadReduce m) => a -> m a+instantiateFull = liftReduce . instantiateFull' -reduce :: Reduce a => a -> TCM a-reduce = runReduceM . reduce'+reduce :: (Reduce a, MonadReduce m) => a -> m a+reduce = liftReduce . reduce' -reduceB :: Reduce a => a -> TCM (Blocked a)-reduceB = runReduceM . reduceB'+reduceB :: (Reduce a, MonadReduce m) => a -> m (Blocked a)+reduceB = liftReduce . reduceB' -normalise :: Normalise a => a -> TCM a-normalise = runReduceM . normalise'+normalise :: (Normalise a, MonadReduce m) => a -> m a+normalise = liftReduce . normalise' -simplify :: Simplify a => a -> TCM a-simplify = runReduceM . simplify'+-- | Normalise the given term but also preserve blocking tags+--   TODO: implement a more efficient version of this.+normaliseB :: (MonadReduce m, Reduce t, Normalise t) => t -> m (Blocked t)+normaliseB = normalise >=> reduceB +simplify :: (Simplify a, MonadReduce m) => a -> m a+simplify = liftReduce . simplify'+ -- | Meaning no metas left in the instantiation. isFullyInstantiatedMeta :: MetaId -> TCM Bool isFullyInstantiatedMeta m = do@@ -102,7 +108,7 @@           -- specification: inst == foldr mkLam v tel `applyE` es           inst = applySubst rho (foldr mkLam v $ drop (length es1) tel) `applyE` es2       Open                             -> return t-      OpenIFS                          -> return t+      OpenInstance                     -> return t       BlockedConst _                   -> return t       PostponedTypeCheckingProblem _ _ -> return t   instantiate' (Level l) = levelTm <$> instantiate' l@@ -133,7 +139,7 @@     case mi of       InstV{}                        -> notBlocked <$> instantiate' u       Open                           -> return v-      OpenIFS                        -> return v+      OpenInstance                   -> return v       BlockedConst{}                 -> return v       PostponedTypeCheckingProblem{} -> return v @@ -145,12 +151,14 @@     MetaS x es -> instantiate' (MetaV x es) >>= \case       Sort s'      -> return s'       MetaV x' es' -> return $ MetaS x' es'+      Def d es'     -> return $ DefS d es'       _            -> __IMPOSSIBLE__     _ -> return s  instance Instantiate Elim where   instantiate' (Apply v) = Apply <$> instantiate' v   instantiate' (Proj o f)= pure $ Proj o f+  instantiate' (IApply x y v) = IApply <$> instantiate' x <*> instantiate' y <*> instantiate' v  instance Instantiate t => Instantiate (Abs t) where   instantiate' = traverse instantiate'@@ -161,6 +169,9 @@ instance Instantiate t => Instantiate (Dom t) where     instantiate' = traverse instantiate' +instance Instantiate t => Instantiate (Maybe t) where+  instantiate' = traverse instantiate'+ instance Instantiate t => Instantiate [t] where     instantiate' = traverse instantiate' @@ -185,6 +196,9 @@   instantiate' (ValueCmp cmp t u v) = do     (t,u,v) <- instantiate' (t,u,v)     return $ ValueCmp cmp t u v+  instantiate' (ValueCmpOnFace cmp p t u v) = do+    ((p,t),u,v) <- instantiate' ((p,t),u,v)+    return $ ValueCmpOnFace cmp p t u v   instantiate' (ElimCmp cmp fs t v as bs) =     ElimCmp cmp fs <$> instantiate' t <*> instantiate' v <*> instantiate' as <*> instantiate' bs   instantiate' (LevelCmp cmp u v)   = uncurry (LevelCmp cmp) <$> instantiate' (u,v)@@ -193,18 +207,19 @@   instantiate' (SortCmp cmp a b)    = uncurry (SortCmp cmp) <$> instantiate' (a,b)   instantiate' (Guarded c pid)      = Guarded <$> instantiate' c <*> pure pid   instantiate' (UnBlock m)          = return $ UnBlock m-  instantiate' (FindInScope m b args) = FindInScope m b <$> mapM instantiate' args+  instantiate' (FindInstance m b args) = FindInstance m b <$> mapM instantiate' args   instantiate' (IsEmpty r t)        = IsEmpty r <$> instantiate' t   instantiate' (CheckSizeLtSat t)   = CheckSizeLtSat <$> instantiate' t   instantiate' c@CheckFunDef{}      = return c   instantiate' (HasBiggerSort a)    = HasBiggerSort <$> instantiate' a   instantiate' (HasPTSRule a b)     = uncurry HasPTSRule <$> instantiate' (a,b)+  instantiate' (UnquoteTactic m t h g) = UnquoteTactic m <$> instantiate' t <*> instantiate' h <*> instantiate' g  instance Instantiate e => Instantiate (Map k e) where     instantiate' = traverse instantiate'  instance Instantiate Candidate where-  instantiate' (Candidate u t eti ov) = Candidate <$> instantiate' u <*> instantiate' t <*> pure eti <*> pure ov+  instantiate' (Candidate u t ov) = Candidate <$> instantiate' u <*> instantiate' t <*> pure ov  instance Instantiate EqualityView where   instantiate' (OtherType t)            = OtherType@@ -223,23 +238,23 @@  -- | Case on whether a term is blocked on a meta (or is a meta). --   That means it can change its shape when the meta is instantiated.-ifBlocked :: MonadTCM tcm =>  Term -> (MetaId -> Term -> tcm a) -> (NotBlocked -> Term -> tcm a) -> tcm a+ifBlocked :: (MonadReduce m) =>  Term -> (MetaId -> Term -> m a) -> (NotBlocked -> Term -> m a) -> m a ifBlocked t blocked unblocked = do-  t <- liftTCM $ reduceB t+  t <- reduceB t   case t of     Blocked m _              -> blocked m (ignoreBlocking t)     NotBlocked _ (MetaV m _) -> blocked m (ignoreBlocking t)     NotBlocked nb _          -> unblocked nb (ignoreBlocking t) -isBlocked :: MonadTCM tcm => Term -> tcm (Maybe MetaId)+isBlocked :: MonadReduce m => Term -> m (Maybe MetaId) isBlocked t = ifBlocked t (\m _ -> return $ Just m) (\_ _ -> return Nothing)  -- | Case on whether a type is blocked on a meta (or is a meta).-ifBlockedType :: MonadTCM tcm => Type -> (MetaId -> Type -> tcm a) -> (NotBlocked -> Type -> tcm a) -> tcm a+ifBlockedType :: MonadReduce m => Type -> (MetaId -> Type -> m a) -> (NotBlocked -> Type -> m a) -> m a ifBlockedType (El s t) blocked unblocked =   ifBlocked t (\ m v -> blocked m $ El s v) (\ nb v -> unblocked nb $ El s v) -isBlockedType :: MonadTCM tcm => Type -> tcm (Maybe MetaId)+isBlockedType :: MonadReduce m => Type -> m (Maybe MetaId) isBlockedType t = ifBlockedType t (\m _ -> return $ Just m) (\_ _ -> return Nothing)  class Reduce t where@@ -254,27 +269,28 @@     reduceB' (El s t) = fmap (El s) <$> reduceB' t  instance Reduce Sort where-    reduce' s = {-# SCC "reduce'<Sort>" #-}-      ifNotM hasUniversePolymorphism (red s) $ {- else -} red =<< instantiateFull' s-      where-        red s = do-          s <- instantiate' s-          case s of-            PiSort s1 s2 -> do-              (s1,s2) <- reduce' (s1,s2)-              maybe (return $ PiSort s1 s2) reduce' $ piSort' s1 s2-            UnivSort s' -> do-              s' <- reduce' s'-              maybe (return $ UnivSort s') reduce' $ univSort' s'-            Prop       -> return s-            Type s'    -> Type <$> reduce' s'-            Inf        -> return Inf-            SizeUniv   -> return SizeUniv-            MetaS x es -> return s+    reduce' s = do+      s <- instantiate' s+      case s of+        PiSort s1 s2 -> do+          (s1,s2) <- reduce' (s1,s2)+          maybe (return $ PiSort s1 s2) reduce' $ piSort' s1 s2+        UnivSort s' -> do+          s' <- reduce' s'+          ui <- univInf+          caseMaybe (univSort' ui s') (return $ UnivSort s') reduce'+        Prop s'    -> Prop <$> reduce' s'+        Type s'    -> Type <$> reduce' s'+        Inf        -> return Inf+        SizeUniv   -> return SizeUniv+        MetaS x es -> return s+        DefS d es  -> return s -- postulated sorts do not reduce+        DummyS{}   -> return s  instance Reduce Elim where   reduce' (Apply v) = Apply <$> reduce' v   reduce' (Proj o f)= pure $ Proj o f+  reduce' (IApply x y v) = IApply <$> reduce' x <*> reduce' y <*> reduce' v  instance Reduce Level where   reduce'  (Max as) = levelMax <$> mapM reduce' as@@ -321,19 +337,56 @@     reduce' = traverse reduce'     reduceB' t = traverse id <$> traverse reduceB' t --- Tuples are never blocked instance (Reduce a, Reduce b) => Reduce (a,b) where     reduce' (x,y)  = (,) <$> reduce' x <*> reduce' y+    reduceB' (x,y) = do+      x <- reduceB' x+      y <- reduceB' y+      let blk = void x `mappend` void y+          xy  = (ignoreBlocking x , ignoreBlocking y)+      return $ blk $> xy  instance (Reduce a, Reduce b,Reduce c) => Reduce (a,b,c) where     reduce' (x,y,z) = (,,) <$> reduce' x <*> reduce' y <*> reduce' z+    reduceB' (x,y,z) = do+      x <- reduceB' x+      y <- reduceB' y+      z <- reduceB' z+      let blk = void x `mappend` void y `mappend` void z+          xyz = (ignoreBlocking x , ignoreBlocking y , ignoreBlocking z)+      return $ blk $> xyz +reduceIApply :: ReduceM (Blocked Term) -> [Elim] -> ReduceM (Blocked Term)+reduceIApply = reduceIApply' reduceB'++blockedOrMeta :: Blocked Term -> Blocked ()+blockedOrMeta r =+  case r of+    Blocked m _              -> Blocked m ()+    NotBlocked _ (MetaV m _) -> Blocked m ()+    NotBlocked i _           -> NotBlocked i ()++reduceIApply' :: (Term -> ReduceM (Blocked Term)) -> ReduceM (Blocked Term) -> [Elim] -> ReduceM (Blocked Term)+reduceIApply' reduceB' d (IApply x y r : es) = do+  view <- intervalView'+  r <- reduceB' r+  -- We need to propagate the blocking information so that e.g.+  -- we postpone "someNeutralPath ?0 = a" rather than fail.+  let blockedInfo = blockedOrMeta r++  case view (ignoreBlocking r) of+   IZero -> reduceB' (applyE x es)+   IOne  -> reduceB' (applyE y es)+   _     -> fmap (<* blockedInfo) (reduceIApply d es)+reduceIApply' reduceB' d (_ : es) = reduceIApply d es+reduceIApply' reduceB' d [] = d+ instance Reduce Term where   reduceB' = {-# SCC "reduce'<Term>" #-} maybeFastReduceTerm  shouldTryFastReduce :: ReduceM Bool-shouldTryFastReduce = do-  allowed <- asks envAllowedReductions+shouldTryFastReduce = (optFastReduce <$> pragmaOptions) `and2M` do+  allowed <- asksTC envAllowedReductions   let optionalReductions = [NonTerminatingReductions, UnconfirmedReductions]       requiredReductions = allReductions \\ optionalReductions   return $ (allowed \\ optionalReductions) == requiredReductions@@ -358,27 +411,30 @@ slowReduceTerm v = do     v <- instantiate' v     let done = return $ notBlocked v+        iapp = reduceIApply done     case v of --    Andreas, 2012-11-05 not reducing meta args does not destroy anything --    and seems to save 2% sec on the standard library --      MetaV x args -> notBlocked . MetaV x <$> reduce' args-      MetaV x es -> done-      Def f es   -> unfoldDefinitionE False reduceB' (Def f []) f es+      MetaV x es -> iapp es+      Def f es   -> flip reduceIApply es $ unfoldDefinitionE False reduceB' (Def f []) f es       Con c ci es -> do-          let args = fromMaybe __IMPOSSIBLE__ $ allApplyElims es           -- Constructors can reduce' when they come from an           -- instantiated module.-          v <- unfoldDefinition False reduceB' (Con c ci []) (conName c) args+          -- also reduce when they are path constructors+          v <- flip reduceIApply es+                 $ unfoldDefinitionE False reduceB' (Con c ci []) (conName c) es           traverse reduceNat v       Sort s   -> fmap Sort <$> reduceB' s-      Level l  -> ifM (elem LevelReductions <$> asks envAllowedReductions)+      Level l  -> ifM (elem LevelReductions <$> asksTC envAllowedReductions)                     {- then -} (fmap levelTm <$> reduceB' l)                     {- else -} done       Pi _ _   -> done       Lit _    -> done-      Var _ _  -> done+      Var _ es  -> iapp es       Lam _ _  -> done       DontCare _ -> done+      Dummy{}    -> done     where       -- NOTE: reduceNat can traverse the entire term.       reduceNat v@(Con c ci []) = do@@ -403,6 +459,9 @@ unfoldCorecursionE (Proj o p)           = notBlocked . Proj o <$> getOriginalProjection p unfoldCorecursionE (Apply (Arg info v)) = fmap (Apply . Arg info) <$>   unfoldCorecursion v+unfoldCorecursionE (IApply x y r) = do -- TODO check if this makes sense+   [x,y,r] <- mapM unfoldCorecursion [x,y,r]+   return $ IApply <$> x <*> y <*> r  unfoldCorecursion :: Term -> ReduceM (Blocked Term) unfoldCorecursion v = do@@ -442,7 +501,7 @@   {-# SCC "reduceDef" #-} do   info <- getConstInfo f   rewr <- instantiateRewriteRules =<< getRewriteRulesFor f-  allowed <- asks envAllowedReductions+  allowed <- asksTC envAllowedReductions   let def = theDef info       v   = v0 `applyE` es       -- Non-terminating functions@@ -486,11 +545,11 @@       | otherwise = {-# SCC "reducePrimitive" #-} do           let (es1,es2) = splitAt ar es               args1     = fromMaybe __IMPOSSIBLE__ $ mapM isApplyElim es1-          r <- primFunImplementation pf args1+          r <- primFunImplementation pf args1 (length es2)           case r of             NoReduction args1' -> do               let es1' = map (fmap Apply) args1'-              if null cls then do+              if null cls && null rewr then do                 noReduction $ applyE (Def f []) <$> do                   traverse id $                     map mredToBlocked es1' ++ map notBlocked es2@@ -519,15 +578,15 @@         case ev of           NoReduction v -> do             reportSDoc "tc.reduce" 90 $ vcat-              [ text "*** tried to reduce " <+> prettyTCM f-              , text "    es =  " <+> sep (map (prettyTCM . ignoreReduced) es)-              -- , text "*** tried to reduce " <+> prettyTCM vfull-              , text "    stuck on" <+> prettyTCM (ignoreBlocking v)+              [ "*** tried to reduce " <+> prettyTCM f+              , "    es =  " <+> sep (map (prettyTCM . ignoreReduced) es)+              -- , "*** tried to reduce " <+> prettyTCM vfull+              , "    stuck on" <+> prettyTCM (ignoreBlocking v)               ]           YesReduction _simpl v -> do-            reportSDoc "tc.reduce"  90 $ text "*** reduced definition: " <+> prettyTCM f-            reportSDoc "tc.reduce"  95 $ text "    result" <+> prettyTCM v-            reportSDoc "tc.reduce" 100 $ text "    raw   " <+> text (show v)+            reportSDoc "tc.reduce"  90 $ "*** reduced definition: " <+> prettyTCM f+            reportSDoc "tc.reduce"  95 $ "    result" <+> prettyTCM v+            reportSDoc "tc.reduce" 100 $ "    raw   " <+> text (show v)  -- | Reduce a non-primitive definition if it is a copy linking to another def. reduceDefCopy :: QName -> Elims -> TCM (Reduced () Term)@@ -550,28 +609,26 @@             NoReduction{}        -> return $ NoReduction ()  -- | Reduce simple (single clause) definitions.-reduceHead :: Term -> TCM (Blocked Term)-reduceHead = runReduceM . reduceHead'--reduceHead' :: Term -> ReduceM (Blocked Term)-reduceHead' v = do -- ignoreAbstractMode $ do+reduceHead :: (HasBuiltins m, HasConstInfo m, MonadReduce m, MonadDebug m)+           => Term -> m (Blocked Term)+reduceHead v = do -- ignoreAbstractMode $ do   -- Andreas, 2013-02-18 ignoreAbstractMode leads to information leakage   -- see Issue 796    -- first, possibly rewrite literal v to constructor form   v <- constructorForm v-  traceSDoc "tc.inj.reduce" 30 (text "reduceHead" <+> prettyTCM v) $ do+  traceSDoc "tc.inj.reduce" 30 ("reduceHead" <+> prettyTCM v) $ do   case v of     Def f es -> do -      abstractMode <- envAbstractMode <$> ask+      abstractMode <- envAbstractMode <$> askTC       isAbstract <- treatAbstractly f       traceSLn "tc.inj.reduce" 50 (         "reduceHead: we are in " ++ show abstractMode++ "; " ++ show f ++         " is treated " ++ if isAbstract then "abstractly" else "concretely"         ) $ do       let v0  = Def f []-          red = unfoldDefinitionE False reduceHead' v0 f es+          red = liftReduce $ unfoldDefinitionE False reduceHead v0 f es       def <- theDef <$> getConstInfo f       case def of         -- Andreas, 2012-11-06 unfold aliases (single clause terminating functions)@@ -588,19 +645,16 @@     _ -> return $ notBlocked v  -- | Unfold a single inlined function.-unfoldInlined :: Term -> TCM Term-unfoldInlined = runReduceM . unfoldInlined'--unfoldInlined' :: Term -> ReduceM Term-unfoldInlined' v = do-  inTypes <- view eWorkingOnTypes+unfoldInlined :: (HasConstInfo m, MonadReduce m) => Term -> m Term+unfoldInlined v = do+  inTypes <- viewTC eWorkingOnTypes   case v of     _ | inTypes -> return v -- Don't inline in types (to avoid unfolding of goals)     Def f es -> do       def <- theDef <$> getConstInfo f       case def of   -- Only for simple definitions with no pattern matching (TODO: maybe copatterns?)         Function{ funCompiled = Just Done{}, funDelayed = NotDelayed }-          | def ^. funInline ->+          | def ^. funInline -> liftReduce $           ignoreBlocking <$> unfoldDefinitionE False (return . notBlocked) (Def f []) f es         _ -> return v     _ -> return v@@ -612,7 +666,7 @@  appDefE_ :: QName -> Term -> [Clause] -> Maybe CompiledClauses -> RewriteRules -> MaybeReducedElims -> ReduceM (Reduced (Blocked Term) Term) appDefE_ f v0 cls mcc rewr args =-  local (\ e -> e { envAppDef = Just f }) $+  localTC (\ e -> e { envAppDef = Just f }) $   maybe (appDefE' v0 cls rewr args)         (\cc -> appDefE v0 cc rewr args) mcc @@ -681,6 +735,9 @@   reduce' (ValueCmp cmp t u v) = do     (t,u,v) <- reduce' (t,u,v)     return $ ValueCmp cmp t u v+  reduce' (ValueCmpOnFace cmp p t u v) = do+    ((p,t),u,v) <- reduce' ((p,t),u,v)+    return $ ValueCmpOnFace cmp p t u v   reduce' (ElimCmp cmp fs t v as bs) =     ElimCmp cmp fs <$> reduce' t <*> reduce' v <*> reduce' as <*> reduce' bs   reduce' (LevelCmp cmp u v)    = uncurry (LevelCmp cmp) <$> reduce' (u,v)@@ -689,18 +746,19 @@   reduce' (SortCmp cmp a b)     = uncurry (SortCmp cmp) <$> reduce' (a,b)   reduce' (Guarded c pid)       = Guarded <$> reduce' c <*> pure pid   reduce' (UnBlock m)           = return $ UnBlock m-  reduce' (FindInScope m b cands) = FindInScope m b <$> mapM reduce' cands+  reduce' (FindInstance m b cands) = FindInstance m b <$> mapM reduce' cands   reduce' (IsEmpty r t)         = IsEmpty r <$> reduce' t   reduce' (CheckSizeLtSat t)    = CheckSizeLtSat <$> reduce' t   reduce' c@CheckFunDef{}       = return c   reduce' (HasBiggerSort a)     = HasBiggerSort <$> reduce' a   reduce' (HasPTSRule a b)      = uncurry HasPTSRule <$> reduce' (a,b)+  reduce' (UnquoteTactic m t h g) = UnquoteTactic m <$> reduce' t <*> reduce' h <*> reduce' g  instance Reduce e => Reduce (Map k e) where     reduce' = traverse reduce'  instance Reduce Candidate where-  reduce' (Candidate u t eti ov) = Candidate <$> reduce' u <*> reduce' t <*> pure eti <*> pure ov+  reduce' (Candidate u t ov) = Candidate <$> reduce' u <*> reduce' t <*> pure ov  instance Reduce EqualityView where   reduce' (OtherType t)            = OtherType@@ -744,6 +802,7 @@       Var i vs   -> Var i    <$> simplify' vs       Lam h v    -> Lam h    <$> simplify' v       DontCare v -> dontCare <$> simplify' v+      Dummy{}    -> return v  simplifyBlocked' :: Simplify t => Blocked t -> ReduceM t simplifyBlocked' (Blocked _ t) = return t@@ -755,17 +814,22 @@ instance Simplify Elim where   simplify' (Apply v) = Apply <$> simplify' v   simplify' (Proj o f)= pure $ Proj o f+  simplify' (IApply x y v) = IApply <$> simplify' x <*> simplify' y <*> simplify' v  instance Simplify Sort where     simplify' s = do       case s of         PiSort s1 s2 -> piSort <$> simplify' s1 <*> simplify' s2-        UnivSort s -> univSort <$> simplify' s+        UnivSort s -> do+          ui <- univInf+          univSort ui <$> simplify' s         Type s     -> Type <$> simplify' s-        Prop       -> return s+        Prop s     -> Prop <$> simplify' s         Inf        -> return s         SizeUniv   -> return s         MetaS x es -> MetaS x <$> simplify' es+        DefS d es  -> DefS d <$> simplify' es+        DummyS{}   -> return s  instance Simplify Level where   simplify' (Max as) = levelMax <$> simplify' as@@ -829,6 +893,9 @@   simplify' (ValueCmp cmp t u v) = do     (t,u,v) <- simplify' (t,u,v)     return $ ValueCmp cmp t u v+  simplify' (ValueCmpOnFace cmp p t u v) = do+    ((p,t),u,v) <- simplify' ((p,t),u,v)+    return $ ValueCmp cmp t u v   simplify' (ElimCmp cmp fs t v as bs) =     ElimCmp cmp fs <$> simplify' t <*> simplify' v <*> simplify' as <*> simplify' bs   simplify' (LevelCmp cmp u v)    = uncurry (LevelCmp cmp) <$> simplify' (u,v)@@ -837,12 +904,13 @@   simplify' (SortCmp cmp a b)     = uncurry (SortCmp cmp) <$> simplify' (a,b)   simplify' (Guarded c pid)       = Guarded <$> simplify' c <*> pure pid   simplify' (UnBlock m)           = return $ UnBlock m-  simplify' (FindInScope m b cands) = FindInScope m b <$> mapM simplify' cands+  simplify' (FindInstance m b cands) = FindInstance m b <$> mapM simplify' cands   simplify' (IsEmpty r t)         = IsEmpty r <$> simplify' t   simplify' (CheckSizeLtSat t)    = CheckSizeLtSat <$> simplify' t   simplify' c@CheckFunDef{}       = return c   simplify' (HasBiggerSort a)     = HasBiggerSort <$> simplify' a   simplify' (HasPTSRule a b)      = uncurry HasPTSRule <$> simplify' (a,b)+  simplify' (UnquoteTactic m t h g) = UnquoteTactic m <$> simplify' t <*> simplify' h <*> simplify' g  instance Simplify Bool where   simplify' = return@@ -864,7 +932,7 @@   simplify' (Display n ps v) = Display n <$> simplify' ps <*> return v  instance Simplify Candidate where-  simplify' (Candidate u t eti ov) = Candidate <$> simplify' u <*> simplify' t <*> pure eti <*> pure ov+  simplify' (Candidate u t ov) = Candidate <$> simplify' u <*> simplify' t <*> pure ov  instance Simplify EqualityView where   simplify' (OtherType t)            = OtherType@@ -889,12 +957,16 @@       s <- reduce' s       case s of         PiSort s1 s2 -> piSort <$> normalise' s1 <*> normalise' s2-        UnivSort s -> univSort <$> normalise' s-        Prop       -> return s+        UnivSort s -> do+          ui <- univInf+          univSort ui <$> normalise' s+        Prop s     -> Prop <$> normalise' s         Type s     -> Type <$> normalise' s         Inf        -> return Inf         SizeUniv   -> return SizeUniv         MetaS x es -> return s+        DefS d es  -> return s+        DummyS{}   -> return s  instance Normalise Type where     normalise' (El s t) = El <$> normalise' s <*> normalise' t@@ -914,10 +986,12 @@   Sort s      -> Sort       <$> normalise' s   Pi a b      -> uncurry Pi <$> normalise' (a, b)   DontCare _  -> return v+  Dummy{}     -> return v  instance Normalise Elim where   normalise' (Apply v) = Apply <$> normalise' v   normalise' (Proj o f)= pure $ Proj o f+  normalise' (IApply x y v) = IApply <$> normalise' x <*> normalise' y <*> normalise' v  instance Normalise Level where   normalise' (Max as) = levelMax <$> normalise' as@@ -976,6 +1050,9 @@   normalise' (ValueCmp cmp t u v) = do     (t,u,v) <- normalise' (t,u,v)     return $ ValueCmp cmp t u v+  normalise' (ValueCmpOnFace cmp p t u v) = do+    ((p,t),u,v) <- normalise' ((p,t),u,v)+    return $ ValueCmpOnFace cmp p t u v   normalise' (ElimCmp cmp fs t v as bs) =     ElimCmp cmp fs <$> normalise' t <*> normalise' v <*> normalise' as <*> normalise' bs   normalise' (LevelCmp cmp u v)    = uncurry (LevelCmp cmp) <$> normalise' (u,v)@@ -984,12 +1061,13 @@   normalise' (SortCmp cmp a b)     = uncurry (SortCmp cmp) <$> normalise' (a,b)   normalise' (Guarded c pid)       = Guarded <$> normalise' c <*> pure pid   normalise' (UnBlock m)           = return $ UnBlock m-  normalise' (FindInScope m b cands) = FindInScope m b <$> mapM normalise' cands+  normalise' (FindInstance m b cands) = FindInstance m b <$> mapM normalise' cands   normalise' (IsEmpty r t)         = IsEmpty r <$> normalise' t   normalise' (CheckSizeLtSat t)    = CheckSizeLtSat <$> normalise' t   normalise' c@CheckFunDef{}       = return c   normalise' (HasBiggerSort a)     = HasBiggerSort <$> normalise' a   normalise' (HasPTSRule a b)      = uncurry HasPTSRule <$> normalise' (a,b)+  normalise' (UnquoteTactic m t h g) = UnquoteTactic m <$> normalise' t <*> normalise' h <*> normalise' g  instance Normalise Bool where   normalise' = return@@ -1011,8 +1089,10 @@     VarP o x     -> VarP o <$> normalise' x     LitP _       -> return p     ConP c mt ps -> ConP c <$> normalise' mt <*> normalise' ps+    DefP o q ps  -> DefP o q <$> normalise' ps     DotP o v     -> DotP o <$> normalise' v     ProjP{}      -> return p+    IApplyP o t u x -> IApplyP o <$> normalise' t <*> normalise' u <*> normalise' x  instance Normalise DisplayForm where   normalise' (Display n ps v) = Display n <$> normalise' ps <*> return v@@ -1024,7 +1104,7 @@     normalise' = traverse normalise'  instance Normalise Candidate where-  normalise' (Candidate u t eti ov) = Candidate <$> normalise' u <*> normalise' t <*> pure eti <*> pure ov+  normalise' (Candidate u t ov) = Candidate <$> normalise' u <*> normalise' t <*> pure ov  instance Normalise EqualityView where   normalise' (OtherType t)            = OtherType@@ -1054,19 +1134,23 @@         s <- instantiate' s         case s of             Type n     -> Type <$> instantiateFull' n-            Prop       -> return s+            Prop n     -> Prop <$> instantiateFull' n             PiSort s1 s2 -> piSort <$> instantiateFull' s1 <*> instantiateFull' s2-            UnivSort s -> univSort <$> instantiateFull' s+            UnivSort s -> do+              ui <- univInf+              univSort ui <$> instantiateFull' s             Inf        -> return s             SizeUniv   -> return s             MetaS x es -> MetaS x <$> instantiateFull' es+            DefS d es  -> DefS d <$> instantiateFull' es+            DummyS{}   -> return s  instance (InstantiateFull a) => InstantiateFull (Type' a) where     instantiateFull' (El s t) =       El <$> instantiateFull' s <*> instantiateFull' t  instance InstantiateFull Term where-    instantiateFull' v = etaOnce =<< do -- Andreas, 2010-11-12 DONT ETA!! eta-reduction breaks subject reduction+    instantiateFull' v = etaOnce =<< do -- Andreas, 2010-11-12 DONT ETA!? eta-reduction breaks subject reduction -- but removing etaOnce now breaks everything       v <- instantiate' v       case v of@@ -1080,6 +1164,7 @@           Sort s      -> Sort <$> instantiateFull' s           Pi a b      -> uncurry Pi <$> instantiateFull' (a,b)           DontCare v  -> dontCare <$> instantiateFull' v+          Dummy{}     -> return v  instance InstantiateFull Level where   instantiateFull' (Max as) = levelMax <$> instantiateFull' as@@ -1129,8 +1214,10 @@     instantiateFull' (VarP o x)     = VarP o <$> instantiateFull' x     instantiateFull' (DotP o t)     = DotP o <$> instantiateFull' t     instantiateFull' (ConP n mt ps) = ConP n <$> instantiateFull' mt <*> instantiateFull' ps+    instantiateFull' (DefP o q ps) = DefP o q <$> instantiateFull' ps     instantiateFull' l@LitP{}       = return l     instantiateFull' p@ProjP{}      = return p+    instantiateFull' (IApplyP o t u x) = IApplyP o <$> instantiateFull' t <*> instantiateFull' u <*> instantiateFull' x  instance (Subst t a, InstantiateFull a) => InstantiateFull (Abs a) where     instantiateFull' a@(Abs x _) = Abs x <$> underAbstraction_ a instantiateFull'@@ -1169,6 +1256,9 @@     ValueCmp cmp t u v -> do       (t,u,v) <- instantiateFull' (t,u,v)       return $ ValueCmp cmp t u v+    ValueCmpOnFace cmp p t u v -> do+      ((p,t),u,v) <- instantiateFull' ((p,t),u,v)+      return $ ValueCmpOnFace cmp p t u v     ElimCmp cmp fs t v as bs ->       ElimCmp cmp fs <$> instantiateFull' t <*> instantiateFull' v <*> instantiateFull' as <*> instantiateFull' bs     LevelCmp cmp u v    -> uncurry (LevelCmp cmp) <$> instantiateFull' (u,v)@@ -1177,16 +1267,18 @@     SortCmp cmp a b     -> uncurry (SortCmp cmp) <$> instantiateFull' (a,b)     Guarded c pid       -> Guarded <$> instantiateFull' c <*> pure pid     UnBlock m           -> return $ UnBlock m-    FindInScope m b cands -> FindInScope m b <$> mapM instantiateFull' cands+    FindInstance m b cands -> FindInstance m b <$> mapM instantiateFull' cands     IsEmpty r t         -> IsEmpty r <$> instantiateFull' t     CheckSizeLtSat t    -> CheckSizeLtSat <$> instantiateFull' t     c@CheckFunDef{}     -> return c     HasBiggerSort a     -> HasBiggerSort <$> instantiateFull' a     HasPTSRule a b      -> uncurry HasPTSRule <$> instantiateFull' (a,b)+    UnquoteTactic m t g h -> UnquoteTactic m <$> instantiateFull' t <*> instantiateFull' g <*> instantiateFull' h  instance (InstantiateFull a) => InstantiateFull (Elim' a) where   instantiateFull' (Apply v) = Apply <$> instantiateFull' v   instantiateFull' (Proj o f)= pure $ Proj o f+  instantiateFull' (IApply x y v) = IApply <$> instantiateFull' x <*> instantiateFull' y <*> instantiateFull' v  instance InstantiateFull e => InstantiateFull (Map k e) where     instantiateFull' = traverse instantiateFull'@@ -1214,9 +1306,9 @@     instantiateFull' = return  instance InstantiateFull Definition where-    instantiateFull' (Defn rel x t pol occ df i c inst copy ma inj d) = do+    instantiateFull' def@Defn{ defType = t ,defDisplay = df, theDef = d } = do       (t, df, d) <- instantiateFull' (t, df, d)-      return $ Defn rel x t pol occ df i c inst copy ma inj d+      return $ def{ defType = t, defDisplay = df, theDef = d }  instance InstantiateFull NLPat where   instantiateFull' (PVar x y) = return $ PVar x y@@ -1257,10 +1349,13 @@ instance InstantiateFull Defn where     instantiateFull' d = case d of       Axiom{} -> return d+      DataOrRecSig{} -> return d+      GeneralizableVar{} -> return d       AbstractDefn d -> AbstractDefn <$> instantiateFull' d-      Function{ funClauses = cs, funCompiled = cc, funInv = inv } -> do+      Function{ funClauses = cs, funCompiled = cc, funInv = inv, funExtLam = extLam } -> do         (cs, cc, inv) <- instantiateFull' (cs, cc, inv)-        return $ d { funClauses = cs, funCompiled = cc, funInv = inv }+        extLam <- instantiateFull' extLam+        return $ d { funClauses = cs, funCompiled = cc, funInv = inv, funExtLam = extLam }       Datatype{ dataSort = s, dataClause = cl } -> do         s  <- instantiateFull' s         cl <- instantiateFull' cl@@ -1274,6 +1369,14 @@         cs <- instantiateFull' cs         return $ d { primClauses = cs } +instance InstantiateFull ExtLamInfo where+  instantiateFull' e@(ExtLamInfo { extLamSys = sys}) = do+    sys <- instantiateFull' sys+    return $ e { extLamSys = sys}++instance InstantiateFull System where+  instantiateFull' (System tel sys) = System <$> instantiateFull' tel <*> instantiateFull' sys+ instance InstantiateFull FunctionInverse where   instantiateFull' NotInjective = return NotInjective   instantiateFull' (Inverse inv) = Inverse <$> instantiateFull' inv@@ -1282,12 +1385,13 @@   instantiateFull' (WithArity n a) = WithArity n <$> instantiateFull' a  instance InstantiateFull a => InstantiateFull (Case a) where-  instantiateFull' (Branches cop cs eta ls m lz) =+  instantiateFull' (Branches cop cs eta ls m b lz) =     Branches cop       <$> instantiateFull' cs       <*> instantiateFull' eta       <*> instantiateFull' ls       <*> instantiateFull' m+      <*> pure b       <*> pure lz  instance InstantiateFull CompiledClauses where@@ -1305,10 +1409,10 @@        <*> return unreachable  instance InstantiateFull Interface where-    instantiateFull' (Interface h ms mod scope inside+    instantiateFull' (Interface h s ft ms mod scope inside                                sig display userwarn b foreignCode-                               highlighting pragmas patsyns warnings) =-        Interface h ms mod scope inside+                               highlighting pragmas usedOpts patsyns warnings) =+        Interface h s ft ms mod scope inside             <$> instantiateFull' sig             <*> instantiateFull' display             <*> return userwarn@@ -1316,6 +1420,7 @@             <*> return foreignCode             <*> return highlighting             <*> return pragmas+            <*> return usedOpts             <*> return patsyns             <*> return warnings @@ -1333,8 +1438,8 @@   instantiateFull' = mapM instantiateFull'  instance InstantiateFull Candidate where-  instantiateFull' (Candidate u t eti ov) =-    Candidate <$> instantiateFull' u <*> instantiateFull' t <*> pure eti <*> pure ov+  instantiateFull' (Candidate u t ov) =+    Candidate <$> instantiateFull' u <*> instantiateFull' t <*> pure ov  instance InstantiateFull EqualityView where   instantiateFull' (OtherType t)            = OtherType
src/full/Agda/TypeChecking/Reduce/Fast.hs view
@@ -47,6 +47,7 @@  import Data.Map (Map) import qualified Data.Map as Map+import qualified Data.IntMap as IntMap import qualified Data.IntSet as IntSet import qualified Data.List as List import Data.Traversable (traverse)@@ -111,7 +112,7 @@   = CFun  { cfunCompiled  :: FastCompiledClauses, cfunProjection :: Maybe QName }   | CCon  { cconSrcCon :: ConHead, cconArity :: Int }   | CForce   -- ^ primForce-  | CTrustMe -- ^ primTrustMe+  | CErase   -- ^ primErase   | CTyCon   -- ^ Datatype or record type. Need to know this for primForce.   | CAxiom   -- ^ Axiom or abstract defn   | CPrimOp Int ([Literal] -> Term) (Maybe FastCompiledClauses)@@ -120,7 +121,7 @@  data BuiltinEnv = BuiltinEnv   { bZero, bSuc, bTrue, bFalse, bRefl :: Maybe ConHead-  , bPrimForce, bPrimTrustMe  :: Maybe QName }+  , bPrimForce, bPrimErase  :: Maybe QName }  -- | Compute a 'CompactDef' from a regular definition. compactDef :: BuiltinEnv -> Definition -> RewriteRules -> ReduceM CompactDef@@ -128,9 +129,9 @@   cdefn <-     case theDef def of       _ | Just (defName def) == bPrimForce bEnv   -> pure CForce-      _ | Just (defName def) == bPrimTrustMe bEnv ->+      _ | Just (defName def) == bPrimErase bEnv ->           case telView' (defType def) of-            TelV tel _ | size tel == 4 -> pure CTrustMe+            TelV tel _ | size tel == 5 -> pure CErase                        | otherwise     -> pure COther                           -- Non-standard equality. Fall back to slow reduce.       Constructor{conSrcCon = c, conArity = n} -> pure CCon{cconSrcCon = c, cconArity = n}@@ -144,7 +145,9 @@       Datatype{}                     -> pure COther -- TODO       Record{}                       -> pure COther -- TODO       Axiom{}                        -> pure CAxiom+      DataOrRecSig{}                 -> pure CAxiom       AbstractDefn{}                 -> pure CAxiom+      GeneralizableVar{}             -> __IMPOSSIBLE__       Primitive{ primName = name, primCompiled = cc } ->         case name of           -- "primShowInteger" -- integers are not literals@@ -216,7 +219,7 @@           "primStringEquality"         -> mkPrim 2 $ \ [LitString _ a, LitString _ b] -> bool (b == a)           "primShowString"             -> mkPrim 1 $ \ a -> string (show $ pretty a) -          -- "primTrustMe"+          -- "primErase"           -- "primForce"           -- "primForceLemma"           "primQNameEquality"          -> mkPrim 2 $ \ [LitQName _ a, LitQName _ b] -> bool (b == a)@@ -296,6 +299,8 @@     -- ^ Map from literal to case subtree.   , fcatchAllBranch :: Maybe c     -- ^ (Possibly additional) catch-all clause.+  , ffallThrough    :: Bool+    -- ^ (if True) In case of non-canonical argument use catchAllBranch.   }  noBranches :: FastCase a@@ -303,7 +308,8 @@                       , fconBranches    = Map.empty                       , fsucBranch      = Nothing                       , flitBranches    = Map.empty-                      , fcatchAllBranch = Nothing }+                      , fcatchAllBranch = Nothing+                      , ffallThrough    = False }  -- | Case tree with bodies. @@ -313,7 +319,7 @@     -- (counting from zero) with @bs@ as the case branches.     -- If the @n@-th argument is a projection, we have only 'conBranches'     -- with arity 0.-  | FEta Int [QName] FastCompiledClauses (Maybe FastCompiledClauses)+  | FEta Int [Arg QName] FastCompiledClauses (Maybe FastCompiledClauses)     -- ^ Match on record constructor. Can still have a catch-all though. Just     --   contains the fields, not the actual constructor.   | FDone [Arg ArgName] Term@@ -334,12 +340,13 @@     Case (Arg _ n) bs -> FCase n (fastCase bEnv bs)  fastCase :: BuiltinEnv -> Case CompiledClauses -> FastCase FastCompiledClauses-fastCase env (Branches proj con _ lit wild _) =+fastCase env (Branches proj con _ lit wild fT _) =   FBranches     { fprojPatterns   = proj     , fconBranches    = Map.mapKeysMonotonic (nameId . qnameName) $ fmap (fastCompiledClauses env . content) (stripSuc con)     , fsucBranch      = fmap (fastCompiledClauses env . content) $ flip Map.lookup con . conName =<< bSuc env     , flitBranches    = fmap (fastCompiledClauses env) lit+    , ffallThrough    = fromMaybe False fT     , fcatchAllBranch = fmap (fastCompiledClauses env) wild }   where     stripSuc | Just c <- bSuc env = Map.delete (conName c)@@ -348,7 +355,7 @@  {-# INLINE lookupCon #-} lookupCon :: QName -> FastCase c -> Maybe c-lookupCon c (FBranches _ cons _ _ _) = Map.lookup (nameId $ qnameName c) cons+lookupCon c (FBranches _ cons _ _ _ _) = Map.lookup (nameId $ qnameName c) cons  -- QName memo ------------------------------------------------------------- @@ -389,16 +396,16 @@ fastReduce' norm v = do   let name (Con c _ _) = c       name _         = __IMPOSSIBLE__-  zero    <- fmap name <$> getBuiltin' builtinZero-  suc     <- fmap name <$> getBuiltin' builtinSuc-  true    <- fmap name <$> getBuiltin' builtinTrue-  false   <- fmap name <$> getBuiltin' builtinFalse-  refl    <- fmap name <$> getBuiltin' builtinRefl-  force   <- fmap primFunName <$> getPrimitive' "primForce"-  trustme <- fmap primFunName <$> getPrimitive' "primTrustMe"+  zero  <- fmap name <$> getBuiltin' builtinZero+  suc   <- fmap name <$> getBuiltin' builtinSuc+  true  <- fmap name <$> getBuiltin' builtinTrue+  false <- fmap name <$> getBuiltin' builtinFalse+  refl  <- fmap name <$> getBuiltin' builtinRefl+  force <- fmap primFunName <$> getPrimitive' "primForce"+  erase <- fmap primFunName <$> getPrimitive' "primErase"   let bEnv = BuiltinEnv { bZero = zero, bSuc = suc, bTrue = true, bFalse = false, bRefl = refl,-                          bPrimForce = force, bPrimTrustMe = trustme }-  allowedReductions <- asks envAllowedReductions+                          bPrimForce = force, bPrimErase = erase }+  allowedReductions <- asksTC envAllowedReductions   rwr <- optRewriting <$> pragmaOptions   constInfo <- unKleisli $ \f -> do     info <- getConstInfo f@@ -522,8 +529,9 @@  -- | Unsafe. lookupEnv_ :: Int -> Env s -> Pointer s-lookupEnv_ i (Env e) = e !! i+lookupEnv_ i (Env e) = indexWithDefault __IMPOSSIBLE__ e i +-- Andreas, 2018-11-12, which isn't this just Agda.Utils.List.!!! ? lookupEnv :: Int -> Env s -> Maybe (Pointer s) lookupEnv i e | i < n     = Just (lookupEnv_ i e)               | otherwise = Nothing@@ -567,16 +575,27 @@  -- An Elim' with a hole. data ElimZipper a = ApplyCxt ArgInfo+                  | IApplyType a a | IApplyFst a a | IApplySnd a a   deriving (Eq, Ord, Show, Functor, Foldable, Traversable)  instance Zipper (ElimZipper a) where   type Carrier (ElimZipper a) = Elim' a   type Element (ElimZipper a) = a-  firstHole (Apply arg)   = Just (unArg arg, ApplyCxt (argInfo arg))-  firstHole Proj{}        = Nothing-  plugHole x (ApplyCxt i) = Apply (Arg i x)-  nextHole x c            = Left (plugHole x c) +  firstHole (Apply arg)    = Just (unArg arg, ApplyCxt (argInfo arg))+  firstHole (IApply a x y) = Just (a, IApplyType x y)+  firstHole Proj{}         = Nothing++  plugHole x (ApplyCxt i)     = Apply (Arg i x)+  plugHole a (IApplyType x y) = IApply a x y+  plugHole x (IApplyFst a y)  = IApply a x y+  plugHole y (IApplySnd a x)  = IApply a x y++  nextHole a (IApplyType x y) = Right (x, IApplyFst a y)+  nextHole x (IApplyFst a y)  = Right (y, IApplySnd a x)+  nextHole y (IApplySnd a x)  = Left (IApply a x y)+  nextHole x c@ApplyCxt{}     = Left (plugHole x c)+ -- | A spine with a single hole for a pointer. type SpineContext s = ComposeZipper (ListZipper (Elim' (Pointer s)))                                     (ElimZipper (Pointer s))@@ -600,12 +619,14 @@                         --   gets stuck. @spine0@ are the level and type arguments and @spine1@                         --   contains (if not empty) the continuation and any additional                         --   eliminations.-                    | TrustMeK QName (Spine s) (Spine s) (Spine s)-                        -- ^ @TrustMeK f spine0 spine1 spine2 @. Evaluating @primTrustMe@. The first-                        --   spine contain the level and type arguments. @spine1@ and @spine2@+                    | EraseK QName (Spine s) (Spine s) (Spine s) (Spine s)+                        -- ^ @EraseK f spine0 spine1 spine2 spine3@. Evaluating @primErase@. The+                        --   first contains the level and type arguments. @spine1@ and @spine2@                         --   contain at most one argument between them. If in @spine1@ it's the                         --   value closure of the first argument to be compared and if in @spine2@                         --   it's the unevaluated closure of the second argument.+                        --   @spine3@ contains the proof of equality we are erasing. It is passed+                        --   around but never actually inspected.                     | NatSucK Integer                         -- ^ @NatSucK n@. Add @n@ to the focus. If the focus computes to a natural                         --   number literal this returns a new literal, otherwise it constructs @n@@@ -691,6 +712,8 @@      thunk (Apply (Arg i t)) = Apply . Arg (unknownFVs i) <$> createThunk (closure (getFreeVariables i) t)     thunk (Proj o f)        = return (Proj o f)+    thunk (IApply a x y)    = IApply <$> mkThunk a <*> mkThunk x <*> mkThunk y+      where mkThunk = createThunk . closure UnknownFVs      -- Going straight for a value for literals is mostly to make debug traces     -- less verbose and doesn't really buy anything performance-wise.@@ -728,6 +751,7 @@       case sp of         []           -> (xs0, env, sp)         Apply c : sp -> go xs sp (unArg c `extendEnv` env)+        IApply x y r : sp -> go xs sp (r `extendEnv` env)         _            -> __IMPOSSIBLE__  unusedPointerString :: String@@ -746,14 +770,15 @@ --   the term with an attached blocking tag. reduceTm :: ReduceEnv -> BuiltinEnv -> (QName -> CompactDef) -> Normalisation -> ReductionFlags -> Term -> Blocked Term reduceTm rEnv bEnv !constInfo normalisation ReductionFlags{..} =-    compileAndRun . traceDoc (text "-- fast reduce --")+    compileAndRun . traceDoc "-- fast reduce --"   where     -- Helpers to get information from the ReduceEnv.     metaStore      = redSt rEnv ^. stMetaStore-    getMeta m      = maybe __IMPOSSIBLE__ mvInstantiation (Map.lookup m metaStore)+    getMeta m      = maybe __IMPOSSIBLE__ mvInstantiation (IntMap.lookup (metaId m) metaStore)     partialDefs    = runReduce getPartialDefs     rewriteRules f = cdefRewriteRules (constInfo f)     callByNeed     = envCallByNeed (redEnv rEnv)+    iview          = runReduce intervalView'      runReduce :: ReduceM a -> a     runReduce m = unReduceM m rEnv@@ -777,7 +802,7 @@                Just s  -> (conNameId s ==) . conNameId      -- If there's a non-standard equality (for instance doubly-indexed) we fall back to slow reduce-    -- for primTrustMe and "unbind" refl.+    -- for primErase and "unbind" refl.     refl = refl0 >>= \ c -> if cconArity (cdefDef $ constInfo $ conName c) == 0                             then Just c else Nothing @@ -808,6 +833,7 @@         -- argument and pushing the appropriate control frame for primitive functions. Fall back to         -- slow reduce for unsupported definitions.         Def f [] ->+          evalIApplyAM spine ctrl $           let CompactDef{ cdefDelayed        = delayed                         , cdefNonterminating = nonterm                         , cdefUnconfirmed    = unconf@@ -825,9 +851,9 @@             CForce | (spine0, Apply v : spine1) <- splitAt 4 spine ->               evalPointerAM (unArg v) [] (ForceK f spine0 spine1 : ctrl)             CForce -> runAM done -- partially applied-            CTrustMe | (spine0, Apply v : spine1) <- splitAt 2 spine ->-              evalPointerAM (unArg v) [] (TrustMeK f spine0 [] spine1 : ctrl)-            CTrustMe -> runAM done -- partially applied+            CErase | (spine0, Apply v : spine1 : spine2) <- splitAt 2 spine ->+              evalPointerAM (unArg v) [] (EraseK f spine0 [] [spine1] spine2 : ctrl)+            CErase -> runAM done -- partially applied             CPrimOp n op cc | length spine == n,                      -- PrimOps can't be over-applied. They don't                               Just (v : vs) <- allApplyElims spine -> -- return functions or records.               evalPointerAM (unArg v) [] (PrimOpK f op [] (map unArg vs) cc : ctrl)@@ -845,10 +871,11 @@          -- Case: constructor. Perform beta reduction if projected from, otherwise return a value.         Con c i [] ->+          evalIApplyAM spine ctrl $           case splitAt ar spine of-            (args, Proj _ p : spine') -> evalPointerAM (unArg arg) spine' ctrl+            (args, Proj _ p : spine') -> evalPointerAM (unArg arg) spine' ctrl  -- Andreas #2170: fit argToDontCare here?!               where-                fields    = conFields c+                fields    = map unArg $ conFields c                 Just n    = List.elemIndex p fields                 Apply arg = args !! n             _ -> rewriteAM (evalTrueValue (Con c' i []) env spine ctrl)@@ -858,6 +885,7 @@         -- pointer. If the variable is not in the environment it's a free variable and we adjust the         -- deBruijn index appropriately.         Var x []   ->+          evalIApplyAM spine ctrl $           case lookupEnv x env of             Nothing -> runAM (evalValue (notBlocked ()) (Var (x - envSize env) []) emptyEnv spine ctrl)             Just p  -> evalPointerAM p spine ctrl@@ -865,12 +893,15 @@         -- Case: lambda. Perform the beta reduction if applied. Otherwise it's a value.         Lam h b ->           case spine of-            Apply v : spine' ->+            [] -> runAM done+            elim : spine' ->               case b of-                Abs   _ b -> runAM (evalClosure b (unArg v `extendEnv` env) spine' ctrl)+                Abs   _ b -> runAM (evalClosure b (getArg elim `extendEnv` env) spine' ctrl)                 NoAbs _ b -> runAM (evalClosure b env spine' ctrl)-            [] -> runAM done-            _ -> __IMPOSSIBLE__+          where+            getArg (Apply v)      = unArg v+            getArg (IApply _ _ v) = v+            getArg Proj{}         = __IMPOSSIBLE__          -- Case: values. Literals and function types are already in weak-head normal form.         -- We throw away the environment for literals mostly to make debug printing less verbose.@@ -888,7 +919,7 @@         -- terms with a specified list of free variables. buildEnv constructs the appropriate         -- environment for the closure. Avoiding shifting spines for open metas         -- save a bit of performance.-        MetaV m es ->+        MetaV m es -> evalIApplyAM spine ctrl $           case getMeta m of             InstV xs t -> do               spine' <- elimsToSpine env es@@ -901,6 +932,7 @@         Level{}    -> fallbackAM s         Sort{}     -> fallbackAM s         DontCare{} -> fallbackAM s+        Dummy{}    -> fallbackAM s        where done = Eval (mkValue (notBlocked ()) cl) ctrl             shiftElims t env0 env es = do@@ -1004,24 +1036,26 @@           Sort{}     -> True           Level{}    -> True           DontCare{} -> True+          Dummy{}    -> False           MetaV{}    -> False           Var{}      -> False           Def q _  -- Type constructors (data/record) are considered canonical for 'primForce'.             | CTyCon <- cdefDef (constInfo q) -> True             | otherwise                       -> False -    -- Case: TrustMeK. We evaluate both arguments to values, then do a simple check for the easy+    -- Case: EraseK. We evaluate both arguments to values, then do a simple check for the easy     -- cases and otherwise fall back to slow reduce.-    runAM' (Eval cl2@(Closure Value{} arg2 _ _) (TrustMeK f spine0 [Apply p1] _ : ctrl)) = do+    runAM' (Eval cl2@(Closure Value{} arg2 _ _) (EraseK f spine0 [Apply p1] _ spine3 : ctrl)) = do       cl1@(Closure _ arg1 _ sp1) <- derefPointer_ (unArg p1)       case (arg1, arg2) of         (Lit l1, Lit l2) | l1 == l2, isJust refl ->           runAM (evalTrueValue (Con (fromJust refl) ConOSystem []) emptyEnv [] ctrl)         _ ->-          fallbackAM (evalClosure (Def f []) emptyEnv (spine0 ++ map (Apply . hide . defaultArg . pureThunk) [cl1, cl2]) ctrl)-    runAM' (Eval cl1@(Closure Value{} _ _ _) (TrustMeK f spine0 [] [Apply p2] : ctrl)) =-      evalPointerAM (unArg p2) [] (TrustMeK f spine0 [Apply $ hide $ defaultArg $ pureThunk cl1] [] : ctrl)-    runAM' (Eval _ (TrustMeK{} : _)) =+          let spine = spine0 ++ map (Apply . hide . defaultArg . pureThunk) [cl1, cl2] ++ spine3 in+          fallbackAM (evalClosure (Def f []) emptyEnv spine ctrl)+    runAM' (Eval cl1@(Closure Value{} _ _ _) (EraseK f spine0 [] [Apply p2] spine3 : ctrl)) =+      evalPointerAM (unArg p2) [] (EraseK f spine0 [Apply $ hide $ defaultArg $ pureThunk cl1] [] spine3 : ctrl)+    runAM' (Eval _ (EraseK{} : _)) =       __IMPOSSIBLE__      -- Case: UpdateThunk. Write the value to the pointers in the UpdateThunk frame.@@ -1042,8 +1076,8 @@     runAM' (Eval cl@(Closure (Value blk) t env spine) ctrl0@(CaseK f i bs spine0 spine1 stack : ctrl)) =       {-# SCC "runAM.CaseK" #-}       case blk of-        Blocked{}    -> stuck -- we might as well check the blocking tag first-        NotBlocked{} -> case t of+        Blocked{} | null [()|Con{} <- [t]] -> stuck -- we might as well check the blocking tag first+        _ -> case t of           -- Case: suc constructor           Con c ci [] | isSuc c -> matchSuc $ matchCatchall $ failedMatch f stack ctrl @@ -1055,7 +1089,6 @@           Con c ci es -> do             spine' <- elimsToSpine env es             runAM (evalValue blk (Con c ci []) emptyEnv (spine' <> spine) ctrl0)-           -- Case: natural number literals. Literal natural number patterns are translated to           -- suc-matches, so there is no need to try matchLit.           Lit (LitNat _ 0) -> matchLitZero  $ matchCatchall $ failedMatch f stack ctrl@@ -1064,10 +1097,21 @@           -- Case: literal           Lit l -> matchLit l $ matchCatchall $ failedMatch f stack ctrl +          -- Case: hcomp+          Def q [] | isJust $ lookupCon q bs -> matchCon' q (length spine) $ matchCatchall $ failedMatch f stack ctrl+          Def q es | isJust $ lookupCon q bs -> do+            spine' <- elimsToSpine env es+            runAM (evalValue blk (Def q []) emptyEnv (spine' <> spine) ctrl0)+           -- Case: not constructor or literal. In this case we are stuck.           _ -> stuck       where-        stuck = do+        -- If ffallThrough is set we take the catch-all (if any) rather than being stuck. I think+        -- this happens for partial functions with --cubical (@saizan: is this true?).+        stuck | ffallThrough bs = matchCatchall reallyStuck+              | otherwise       = reallyStuck++        reallyStuck = do             -- Compute new reason for being stuck. See Agda.Syntax.Internal.stuckOn for the logic.             blk' <- case blk of                       Blocked{}      -> return blk@@ -1091,7 +1135,8 @@          -- Matching constructor: Switch to the Match state, inserting the constructor arguments in         -- the spine between spine0 and spine1.-        matchCon c ci ar = lookupCon (conName c) bs `ifJust` \ cc ->+        matchCon c ci ar = matchCon' (conName c) ar+        matchCon' q ar = lookupCon q bs `ifJust` \ cc ->           runAM (Match f cc (spine0 <> spine <> spine1) catchallStack ctrl)          -- Catch-all: Don't add a CatchAll to the match stack since this _is_ the catch-all.@@ -1143,7 +1188,7 @@             (spine0, Apply e : spine1) -> do                -- rewriting or 'with'.               -- Replace e by its projections in the spine. And don't forget a               -- CatchAll frame if there's a catch-all.-              let projClosure f = Closure Unevaled (Var 0 []) (extendEnv (unArg e) emptyEnv) [Proj ProjSystem f]+              let projClosure (Arg ai f) = Closure Unevaled (Var 0 []) (extendEnv (unArg e) emptyEnv) [Proj ProjSystem f]               projs <- mapM (createThunk . projClosure) fs               let spine' = spine0 <> map (Apply . defaultArg) projs <> spine1                   stack' = caseMaybe ca stack $ \ cc -> CatchAll cc spine >: stack@@ -1172,6 +1217,7 @@                   | otherwise          -> __IMPOSSIBLE__                 Just cc -> runAM (Match f cc (spine0 <> spine1) stack ctrl)               where CFun{ cfunProjection = op } = cdefDef (constInfo p)+            (_, IApply{} : _) -> __IMPOSSIBLE__ -- Paths cannot be defined by pattern matching       where done why = stuckMatch (NotBlocked why ()) stack ctrl      -- 'evalPointerAM p spine ctrl'. Evaluate the closure pointed to by 'p' applied to 'spine' with@@ -1187,6 +1233,23 @@         runAM (Eval cl $ updateThunkCtrl p $ [ApplyK spine | not (null spine)] ++ ctrl)       Thunk cl -> runAM (Eval (clApply cl spine) ctrl) +    -- 'evalIApplyAM spine ctrl fallback' checks if any 'IApply x y r' has a canonical 'r' (i.e. 0 or 1),+    -- in that case continues evaluating 'x' or 'y' with the rest of 'spine' and same 'ctrl'.+    -- If no such 'IApply' is found we continue with 'fallback'.+    evalIApplyAM :: Spine s -> ControlStack s -> ST s (Blocked Term) -> ST s (Blocked Term)+    evalIApplyAM es ctrl fallback = go es+      where+        -- written as a worker/wrapper to possibly trigger some+        -- specialization wrt fallback+        go []                  = fallback+        go (IApply x y r : es) = do+          br <- evalPointerAM r [] []+          case iview $ ignoreBlocking br of+            IZero -> evalPointerAM x es ctrl+            IOne  -> evalPointerAM y es ctrl+            _     -> (<* blockedOrMeta br) <$> go es+        go (e : es) = go es+     -- Normalise the spine and apply the closure to the result. The closure must be a value closure.     normaliseArgsAM :: Closure s -> Spine s -> ControlStack s -> ST s (Blocked Term)     normaliseArgsAM cl []    ctrl = runAM (Eval cl ctrl)  -- nothing to do@@ -1225,7 +1288,7 @@     rewriteAM' :: AM s -> ST s (Blocked Term)     rewriteAM' s@(Eval (Closure (Value blk) t env spine) ctrl)       | null rewr = runAM s-      | otherwise = traceDoc (text "R" <+> pretty s) $ do+      | otherwise = traceDoc ("R" <+> pretty s) $ do         v0 <- decodeClosure_ (Closure Unevaled t env [])         es <- decodeSpine spine         case runReduce (rewrite blk v0 rewr es) of@@ -1259,7 +1322,7 @@     unfoldDelayed (UpdateThunk{} : ctrl) = unfoldDelayed ctrl     unfoldDelayed (ApplyK{}      : ctrl) = unfoldDelayed ctrl     unfoldDelayed (ForceK{}      : ctrl) = unfoldDelayed ctrl-    unfoldDelayed (TrustMeK{}    : ctrl) = unfoldDelayed ctrl+    unfoldDelayed (EraseK{}      : ctrl) = unfoldDelayed ctrl      -- When matching is stuck we return the closure from the 'MatchStack' with the appropriate     -- 'IsValue' set.@@ -1294,25 +1357,22 @@ -- Pretty printing --------------------------------------------------------  instance Pretty a => Pretty (FastCase a) where-  prettyPrec p (FBranches _cop cs suc ls m) =+  prettyPrec p (FBranches _cop cs suc ls m _) =     mparens (p > 0) $ vcat (prettyMap cs ++ prettyMap ls ++ prSuc suc ++ prC m)     where       prC Nothing = []-      prC (Just x) = [text "_ ->" <?> pretty x]+      prC (Just x) = ["_ ->" <?> pretty x]        prSuc Nothing  = []-      prSuc (Just x) = [text "suc ->" <?> pretty x]--instance Pretty NameId where-  pretty = text . show+      prSuc (Just x) = ["suc ->" <?> pretty x]  instance Pretty FastCompiledClauses where-  pretty (FDone xs t) = (text "done" <+> prettyList xs) <?> prettyPrec 10 t-  pretty FFail        = text "fail"+  pretty (FDone xs t) = ("done" <+> prettyList xs) <?> prettyPrec 10 t+  pretty FFail        = "fail"   pretty (FEta n _ cc ca) =     text ("eta " ++ show n ++ " of") <?>-      vcat ([ text "{} ->" <?> pretty cc ] ++-            [ text "_ ->" <?> pretty cc | Just cc <- [ca] ])+      vcat ([ "{} ->" <?> pretty cc ] +++            [ "_ ->" <?> pretty cc | Just cc <- [ca] ])   pretty (FCase n bs) | fprojPatterns bs =     sep [ text $ "project " ++ show n         , nest 2 $ pretty bs@@ -1321,7 +1381,7 @@     text ("case " ++ show n ++ " of") <?> pretty bs  instance Pretty a => Pretty (Thunk a) where-  prettyPrec _ BlackHole  = text "<BLACKHOLE>"+  prettyPrec _ BlackHole  = "<BLACKHOLE>"   prettyPrec p (Thunk cl) = prettyPrec p cl  instance Pretty (Pointer s) where@@ -1329,7 +1389,7 @@  instance Pretty (Closure s) where   prettyPrec _ (Closure Value{} (Lit (LitString _ unused)) _ _)-    | unused == unusedPointerString = text "_"+    | unused == unusedPointerString = "_"   prettyPrec p (Closure isV t env spine) =     mparens (p > 9) $ fsep [ text tag                            , nest 2 $ prettyPrec 10 t@@ -1341,32 +1401,32 @@ instance Pretty (AM s) where   prettyPrec p (Eval cl ctrl)  = prettyPrec p cl <?> prettyList ctrl   prettyPrec p (Match f cc sp stack ctrl) =-    mparens (p > 9) $ sep [ text "M" <+> pretty f+    mparens (p > 9) $ sep [ "M" <+> pretty f                           , nest 2 $ prettyList sp                           , nest 2 $ prettyPrec 10 cc                           , nest 2 $ pretty stack                           , nest 2 $ prettyList ctrl ]  instance Pretty (CatchAllFrame s) where-  pretty CatchAll{} = text "CatchAll"+  pretty CatchAll{} = "CatchAll"  instance Pretty (MatchStack s) where   pretty ([] :> _) = empty   pretty (ca :> _) = prettyList ca  instance Pretty (ControlFrame s) where-  prettyPrec p (CaseK f _ _ _ _ mc)     = mparens (p > 9) $ (text "CaseK" <+> pretty (qnameName f)) <?> pretty mc-  prettyPrec p (ForceK _ spine0 spine1) = mparens (p > 9) $ text "ForceK" <?> prettyList (spine0 <> spine1)-  prettyPrec p (TrustMeK _ sp0 sp1 sp2) = mparens (p > 9) $ sep [ text "TrustMeK"-                                                                , nest 2 $ prettyList sp0-                                                                , nest 2 $ prettyList sp1-                                                                , nest 2 $ prettyList sp2 ]+  prettyPrec p (CaseK f _ _ _ _ mc)       = mparens (p > 9) $ ("CaseK" <+> pretty (qnameName f)) <?> pretty mc+  prettyPrec p (ForceK _ spine0 spine1)   = mparens (p > 9) $ "ForceK" <?> prettyList (spine0 <> spine1)+  prettyPrec p (EraseK _ sp0 sp1 sp2 sp3) = mparens (p > 9) $ sep [ "EraseK"+                                                                  , nest 2 $ prettyList sp0+                                                                  , nest 2 $ prettyList sp1+                                                                  , nest 2 $ prettyList sp2+                                                                  , nest 2 $ prettyList sp3 ]   prettyPrec _ (NatSucK n)              = text ("+" ++ show n)-  prettyPrec p (PrimOpK f _ vs cls _)   = mparens (p > 9) $ sep [ text "PrimOpK" <+> pretty f+  prettyPrec p (PrimOpK f _ vs cls _)   = mparens (p > 9) $ sep [ "PrimOpK" <+> pretty f                                                                 , nest 2 $ prettyList vs                                                                 , nest 2 $ prettyList cls ]-  prettyPrec p (UpdateThunk ps)         = mparens (p > 9) $ text "UpdateThunk" <+> text (show (length ps))-  prettyPrec p (ApplyK spine)           = mparens (p > 9) $ text "ApplyK" <?> prettyList spine-  prettyPrec p NormaliseK               = text "NormaliseK"-  prettyPrec p (ArgK cl _)              = mparens (p > 9) $ sep [ text "ArgK" <+> prettyPrec 10 cl ]-+  prettyPrec p (UpdateThunk ps)         = mparens (p > 9) $ "UpdateThunk" <+> text (show (length ps))+  prettyPrec p (ApplyK spine)           = mparens (p > 9) $ "ApplyK" <?> prettyList spine+  prettyPrec p NormaliseK               = "NormaliseK"+  prettyPrec p (ArgK cl _)              = mparens (p > 9) $ sep [ "ArgK" <+> prettyPrec 10 cl ]
src/full/Agda/TypeChecking/Reduce/Monad.hs view
@@ -5,7 +5,8 @@ module Agda.TypeChecking.Reduce.Monad   ( constructorForm   , enterClosure-  , underAbstraction_+  , underAbstraction , underAbstraction_+  , addCtxTel   , getConstInfo   , isInstantiatedMeta   , lookupMeta@@ -18,6 +19,7 @@ import Control.Applicative hiding (empty) import Control.Monad.Reader +import qualified Data.IntMap as IntMap import qualified Data.Map as Map import Data.Maybe import Data.Monoid@@ -30,12 +32,13 @@ import Agda.Syntax.Internal import Agda.TypeChecking.Monad hiding   ( enterClosure, underAbstraction_, underAbstraction, addCtx,-    isInstantiatedMeta, verboseS, typeOfConst, lookupMeta )+    isInstantiatedMeta, verboseS, typeOfConst, lookupMeta, lookupMeta' ) import Agda.TypeChecking.Monad.Builtin hiding ( constructorForm ) import Agda.TypeChecking.Substitute import Agda.Interaction.Options  import qualified Agda.Utils.HashMap as HMap+import Agda.Utils.Functor import Agda.Utils.Lens import Agda.Utils.Monad import Agda.Utils.Null@@ -44,30 +47,11 @@ #include "undefined.h" import Agda.Utils.Impossible -gets :: (TCState -> a) -> ReduceM a-gets f = f . redSt <$> ReduceM ask--useR :: Lens' a TCState -> ReduceM a-useR l = gets (^.l)--askR :: ReduceM ReduceEnv-askR = ReduceM ask--localR :: (ReduceEnv -> ReduceEnv) -> ReduceM a -> ReduceM a-localR f = ReduceM . local f . unReduceM--instance HasOptions ReduceM where-  pragmaOptions      = useR stPragmaOptions-  commandLineOptions = do-    p  <- useR stPragmaOptions-    cl <- gets $ stPersistentOptions . stPersistentState-    return $ cl{ optPragmaOptions = p }- instance HasBuiltins ReduceM where   getBuiltinThing b = liftM2 mplus (Map.lookup b <$> useR stLocalBuiltins)                                    (Map.lookup b <$> useR stImportedBuiltins) -constructorForm :: Term -> ReduceM Term+constructorForm :: HasBuiltins m => Term -> m Term constructorForm v = do   mz <- getBuiltin' builtinZero   ms <- getBuiltin' builtinSuc@@ -76,43 +60,55 @@ enterClosure :: Closure a -> (a -> ReduceM b) -> ReduceM b enterClosure (Closure sig env scope cps x) f = localR (mapRedEnvSt inEnv inState) (f x)   where-    inEnv   e = env { envAllowDestructiveUpdate = envAllowDestructiveUpdate e }+    inEnv   e = env     inState s =       -- TODO: use the signature here? would that fix parts of issue 118?       set stScope scope $ set stModuleCheckpoints cps s -withFreshR :: HasFresh i => (i -> ReduceM a) -> ReduceM a+withFreshR :: (ReadTCState m, HasFresh i) => (i -> m a) -> m a withFreshR f = do-  s <- gets id+  s <- getTCState   let (i, s') = nextFresh s-  localR (mapRedSt $ const s') (f i)+  withTCState (const s') (f i) -withFreshName :: Range -> ArgName -> (Name -> ReduceM a) -> ReduceM a+withFreshName :: (MonadReduce m) => Range -> ArgName -> (Name -> m a) -> m a withFreshName r s k = withFreshR $ \i -> k (mkName r i s) -withFreshName_ :: ArgName -> (Name -> ReduceM a) -> ReduceM a+withFreshName_ :: (MonadReduce m) => ArgName -> (Name -> m a) -> m a withFreshName_ = withFreshName noRange -addCtx :: Name -> Dom Type -> ReduceM a -> ReduceM a+addCtx :: (MonadReduce m) => Name -> Dom Type -> m a -> m a addCtx x a ret = do-  ctx <- asks $ map (fst . unDom) . envContext-  let x' = unshadowedName ctx x-      ce = (x',) <$> a-  local (\e -> e { envContext = ce : envContext e }) ret+  ctx <- asksTC $ map (fst . unDom) . envContext+  let ce = (x,) <$> a+  oldChkpt <- viewTC eCurrentCheckpoint+  withFreshR $ \ chkpt ->+    localTC (\e -> e { envContext = ce : envContext e+                   , envCurrentCheckpoint = chkpt+                   , envCheckpoints = Map.insert chkpt IdS $+                                        fmap (raise 1) (envCheckpoints e)+                   }) ret       -- let-bindings keep track of own their context -underAbstraction :: Subst t a => Dom Type -> Abs a -> (a -> ReduceM b) -> ReduceM b+addCtxTel :: (MonadReduce m) => Telescope -> m a -> m a+addCtxTel EmptyTel          ret = ret+addCtxTel (ExtendTel t tel) ret = underAbstraction t tel $ \tel -> addCtxTel tel ret++underAbstraction :: (MonadReduce m, Subst t a) => Dom Type -> Abs a -> (a -> m b) -> m b underAbstraction _ (NoAbs _ v) f = f v underAbstraction t a f =   withFreshName_ (realName $ absName a) $ \x -> addCtx x t $ f (absBody a)   where     realName s = if isNoName s then "x" else s -underAbstraction_ :: Subst t a => Abs a -> (a -> ReduceM b) -> ReduceM b-underAbstraction_ = underAbstraction dummyDom+underAbstraction_ :: (MonadReduce m, Subst t a) => Abs a -> (a -> m b) -> m b+underAbstraction_ = underAbstraction __DUMMY_DOM__ +lookupMeta' :: MetaId -> ReduceM (Maybe MetaVariable)+lookupMeta' (MetaId i) = IntMap.lookup i <$> useR stMetaStore+ lookupMeta :: MetaId -> ReduceM MetaVariable-lookupMeta i = fromMaybe __IMPOSSIBLE__ . Map.lookup i <$> useR stMetaStore+lookupMeta = fromMaybe __IMPOSSIBLE__ <.> lookupMeta'  isInstantiatedMeta :: MetaId -> ReduceM Bool isInstantiatedMeta i = do@@ -143,7 +139,7 @@       return $ return s  instance HasConstInfo ReduceM where-  getRewriteRulesFor = defaultGetRewriteRulesFor (gets id)+  getRewriteRulesFor = defaultGetRewriteRulesFor getTCState   getConstInfo' q = do     ReduceEnv env st <- askR     defaultGetConstInfo st env q
src/full/Agda/TypeChecking/Rewriting.hs view
@@ -7,13 +7,13 @@ -- --   The user specifies a relation symbol by the pragma --   @---       {-# BUILTIN REWRITE rel #-}+--       {-\# BUILTIN REWRITE rel \#-} --   @ --   where @rel@ should be of type @Δ → (lhs rhs : A) → Set i@. -- --   Then the user can add rewrite rules by the pragma --   @---       {-# REWRITE q #-}+--       {-\# REWRITE q \#-} --   @ --   where @q@ should be a closed term of type @Γ → rel us lhs rhs@. --@@ -61,10 +61,11 @@ import Agda.Syntax.Common import Agda.Syntax.Internal as I +import Agda.TypeChecking.Datatypes import Agda.TypeChecking.Monad import Agda.TypeChecking.Monad.Builtin import Agda.TypeChecking.Monad.Env-import Agda.TypeChecking.EtaContract+import Agda.TypeChecking.EtaExpand import Agda.TypeChecking.Free import Agda.TypeChecking.Free.Lazy import Agda.TypeChecking.MetaVars@@ -106,20 +107,20 @@ verifyBuiltinRewrite v t = do   requireOptionRewriting   let failure reason = typeError . GenericDocError =<< sep-       [ prettyTCM v <+> text " does not have the right type for a rewriting relation"+       [ prettyTCM v <+> " does not have the right type for a rewriting relation"        , reason        ]   caseMaybeM (relView t)-    (failure $ text "because it should accept at least two arguments") $+    (failure $ "because it should accept at least two arguments") $     \ (RelView tel delta a b core) -> do-    unless (visible a && visible b) $ failure $ text "because its two final arguments are not both visible."+    unless (visible a && visible b) $ failure $ "because its two final arguments are not both visible."     case unEl core of       Sort{}   -> return ()       Con{}    -> __IMPOSSIBLE__       Level{}  -> __IMPOSSIBLE__       Lam{}    -> __IMPOSSIBLE__       Pi{}     -> __IMPOSSIBLE__-      _ -> failure $ text "because its type does not end in a sort, but in "+      _ -> failure $ "because its type does not end in a sort, but in "              <+> do inTopContext $ addContext tel $ prettyTCM core  -- | Deconstructing a type into @Δ → t → t' → core@.@@ -160,34 +161,35 @@   -- for a type signature whose body has not been type-checked yet.   when (isEmptyFunction $ theDef def) $     typeError . GenericDocError =<< hsep-      [ text "Rewrite rule from function "+      [ "Rewrite rule from function "       , prettyTCM q-      , text " cannot be added before the function definition"+      , " cannot be added before the function definition"       ]   -- We know that the type of rel is that of a relation.   relV <- relView =<< do defType <$> getConstInfo rel   let RelView _tel delta a _a' _core = -- line break for CPP         fromMaybe __IMPOSSIBLE__ relV   reportSDoc "rewriting" 30 $ do-    text "rewrite relation at type " <+> do-      inTopContext $ prettyTCM (telFromList delta) <+> text " |- " <+> do+    "rewrite relation at type " <+> do+      inTopContext $ prettyTCM (telFromList delta) <+> " |- " <+> do         addContext delta $ prettyTCM a   -- Get rewrite rule (type of q).   TelV gamma1 core <- telView $ defType def-  reportSDoc "rewriting" 30 $ do-    text "attempting to add rewrite rule of type " <+> do-      prettyTCM gamma1 <+> text " |- " <+> do-        addContext gamma1 $ prettyTCM core+  reportSDoc "rewriting" 30 $ vcat+    [ "attempting to add rewrite rule of type "+    , prettyTCM gamma1+    , " |- " <+> do addContext gamma1 $ prettyTCM core+    ]   let failureWrongTarget = typeError . GenericDocError =<< hsep-        [ prettyTCM q , text " does not target rewrite relation" ]+        [ prettyTCM q , " does not target rewrite relation" ]   let failureMetas       = typeError . GenericDocError =<< hsep-        [ prettyTCM q , text " is not a legal rewrite rule, since it contains unsolved meta variables" ]+        [ prettyTCM q , " is not a legal rewrite rule, since it contains unsolved meta variables" ]   let failureNotDefOrCon = typeError . GenericDocError =<< hsep-        [ prettyTCM q , text " is not a legal rewrite rule, since the left-hand side is neither a defined symbol nor a constructor" ]+        [ prettyTCM q , " is not a legal rewrite rule, since the left-hand side is neither a defined symbol nor a constructor" ]   let failureFreeVars xs = typeError . GenericDocError =<< hsep-        [ prettyTCM q , text " is not a legal rewrite rule, since the following variables are not bound by the left hand side: " , prettyList_ (map (prettyTCM . var) $ IntSet.toList xs) ]+        [ prettyTCM q , " is not a legal rewrite rule, since the following variables are not bound by the left hand side: " , prettyList_ (map (prettyTCM . var) $ IntSet.toList xs) ]   let failureIllegalRule = typeError . GenericDocError =<< hsep-        [ prettyTCM q , text " is not a legal rewrite rule" ]+        [ prettyTCM q , " is not a legal rewrite rule" ]    -- Check that type of q targets rel.   case unEl core of@@ -198,14 +200,15 @@           n  = size vs           (us, [lhs, rhs]) = splitAt (n - 2) vs       unless (size delta == size us) __IMPOSSIBLE__-      b <- instantiateFull $ applySubst (parallelS $ reverse us) a+      rhs <- instantiateFull rhs+      b   <- instantiateFull $ applySubst (parallelS $ reverse us) a        gamma0 <- getContextTelescope       gamma1 <- instantiateFull gamma1       let gamma = gamma0 `abstract` gamma1        unless (null $ allMetas (telToList gamma1)) $ do-        reportSDoc "rewriting" 30 $ text "metas in gamma1: " <+> text (show $ allMetas $ telToList gamma1)+        reportSDoc "rewriting" 30 $ "metas in gamma1: " <+> text (show $ allMetas $ telToList gamma1)         failureMetas        -- 2017-06-18, Jesper: Unfold inlined definitions on the LHS.@@ -213,47 +216,51 @@       -- original definition.       lhs <- modifyAllowedReductions (const [InlineReductions]) $ normalise lhs -      -- Find head symbol f of the lhs and its arguments.-      (f , hd , es) <- case lhs of-        Def f es -> return (f , Def f , es)+      -- Find head symbol f of the lhs, its type and its arguments.+      (f , hd , t , es) <- case lhs of+        Def f es -> do+          t <- defType <$> getConstInfo f+          return (f , Def f , t , es)         Con c ci vs -> do           let hd = Con c ci-          return (conName c , hd  , vs)+          ~(Just ((_ , _ , pars) , t)) <- getFullyAppliedConType c $ unDom b+          addContext gamma1 $ checkParametersAreGeneral c (size gamma1) pars+          return (conName c , hd , t  , vs)         _        -> failureNotDefOrCon        ifNotAlreadyAdded f $ do        rew <- addContext gamma1 $ do         -- Normalize lhs args: we do not want to match redexes.-        es <- etaContract =<< normalise es-        checkNoLhsReduction f (hd es)+        es <- normalise es -        -- Normalize rhs: might be more efficient.-        rhs <- etaContract =<< normalise rhs+        checkNoLhsReduction f es+         unless (null $ allMetas (es, rhs, b)) $ do-          reportSDoc "rewriting" 30 $ text "metas in lhs: " <+> text (show $ allMetas es)-          reportSDoc "rewriting" 30 $ text "metas in rhs: " <+> text (show $ allMetas rhs)-          reportSDoc "rewriting" 30 $ text "metas in b  : " <+> text (show $ allMetas b)+          reportSDoc "rewriting" 30 $ "metas in lhs: " <+> text (show $ allMetas es)+          reportSDoc "rewriting" 30 $ "metas in rhs: " <+> text (show $ allMetas rhs)+          reportSDoc "rewriting" 30 $ "metas in b  : " <+> text (show $ allMetas b)           failureMetas-        ps <- patternFrom Relevant 0 es++        ps <- patternFrom Relevant 0 (t , Def f []) es         reportSDoc "rewriting" 30 $-          text "Pattern generated from lhs: " <+> prettyTCM (PDef f ps)+          "Pattern generated from lhs: " <+> prettyTCM (PDef f ps)          -- check that FV(rhs) ⊆ nlPatVars(lhs)         let freeVars  = usedArgs (defArgOccurrences def) `IntSet.union` allFreeVars (ps,rhs)             boundVars = nlPatVars ps-        reportSDoc "rewriting" 40 $-          text "variables bound by the pattern: " <+> text (show boundVars)-        reportSDoc "rewriting" 40 $-          text "variables free in the rewrite rule: " <+> text (show freeVars)+        reportSDoc "rewriting" 70 $+          "variables bound by the pattern: " <+> text (show boundVars)+        reportSDoc "rewriting" 70 $+          "variables free in the rewrite rule: " <+> text (show freeVars)         unlessNull (freeVars IntSet.\\ boundVars) failureFreeVars          return $ RewriteRule q gamma f ps rhs (unDom b) -      reportSDoc "rewriting" 10 $-        text "considering rewrite rule " <+> prettyTCM rew-      reportSDoc "rewriting" 60 $-        text "considering rewrite rule" <+> text (show rew)+      reportSDoc "rewriting" 10 $ vcat+        [ "considering rewrite rule " , prettyTCM rew ]+      reportSDoc "rewriting" 90 $ vcat+        [ "considering rewrite rule" , text (show rew) ]        -- NO LONGER WORKS:       -- -- Check whether lhs can be rewritten with itself.@@ -267,15 +274,24 @@      _ -> failureWrongTarget   where-    checkNoLhsReduction :: QName -> Term -> TCM ()-    checkNoLhsReduction f v = do-      v' <- normalise v-      unless (v == v') $ do-        reportSDoc "rewriting" 20 $ text "v  = " <+> text (show v)-        reportSDoc "rewriting" 20 $ text "v' = " <+> text (show v')-        typeError . GenericDocError =<< fsep-          [ prettyTCM q <+> text " is not a legal rewrite rule, since the left-hand side "-          , prettyTCM v <+> text " reduces to " <+> prettyTCM v' ]+    checkNoLhsReduction :: QName -> Elims -> TCM ()+    checkNoLhsReduction f es = do+      let v = Def f es+      v' <- reduce v+      let fail = do+            reportSDoc "rewriting" 20 $ "v  = " <+> text (show v)+            reportSDoc "rewriting" 20 $ "v' = " <+> text (show v')+            typeError . GenericDocError =<< fsep+              [ prettyTCM q <+> " is not a legal rewrite rule, since the left-hand side "+              , prettyTCM v <+> " reduces to " <+> prettyTCM v' ]+      case v' of+        Def f' es' | f == f' -> do+          a   <- computeElimHeadType f es es'+          pol <- getPolarity' CmpEq f+          ok  <- dontAssignMetas $ tryConversion $+                   compareElims pol [] a (Def f []) es es'+          unless ok fail+        _ -> fail      ifNotAlreadyAdded :: QName -> TCM () -> TCM ()     ifNotAlreadyAdded f cont = do@@ -283,7 +299,7 @@       -- check if q is already an added rewrite rule       if any ((q ==) . rewName) rews then         genericWarning =<< do-          text "Rewrite rule " <+> prettyTCM q <+> text " has already been added"+          "Rewrite rule " <+> prettyTCM q <+> " has already been added"       else cont      usedArgs :: [Pos.Occurrence] -> IntSet@@ -294,34 +310,57 @@         used Pos.Unused = False         used _          = True +    checkParametersAreGeneral :: ConHead -> Int -> Args -> TCM ()+    checkParametersAreGeneral c k vs = do+        is <- loop vs+        unless (fastDistinct is) $ errorNotGeneral+      where+        loop []       = return []+        loop (v : vs) = case unArg v of+          Var i [] | i < k -> (i :) <$> loop vs+          _                -> errorNotGeneral++        errorNotGeneral = typeError . GenericDocError =<< vcat+            [ prettyTCM q <+> text " is not a legal rewrite rule, since the constructor parameters are not fully general:"+            , nest 2 $ text "Constructor: " <+> prettyTCM c+            , nest 2 $ text "Parameters: " <+> prettyList (map prettyTCM vs)+            ]+ -- | Append rewrite rules to a definition. addRewriteRules :: QName -> RewriteRules -> TCM () addRewriteRules f rews = do-  reportSDoc "rewriting" 10 $ text "rewrite rule ok, adding it to the definition of " <+> prettyTCM f+  reportSDoc "rewriting" 10 $ "rewrite rule ok, adding it to the definition of " <+> prettyTCM f   let matchables = getMatchables rews-  reportSDoc "rewriting" 30 $ text "matchable symbols: " <+> prettyTCM matchables+  reportSDoc "rewriting" 30 $ "matchable symbols: " <+> prettyTCM matchables   modifySignature $ addRewriteRulesFor f rews matchables --- | @rewriteWith t f es rew@---   tries to rewrite @f es : t@ with @rew@, returning the reduct if successful.-rewriteWith :: Maybe Type+-- | @rewriteWith t f es rew@ where @f : t@+--   tries to rewrite @f es@ with @rew@, returning the reduct if successful.+rewriteWith :: Type             -> Term             -> RewriteRule             -> Elims             -> ReduceM (Either (Blocked Term) Term)-rewriteWith mt v rew@(RewriteRule q gamma _ ps rhs b) es = do-  traceSDoc "rewriting" 75 (sep-    [ text "attempting to rewrite term " <+> prettyTCM (v `applyE` es)-    , text " with rule " <+> prettyTCM rew+rewriteWith t v rew@(RewriteRule q gamma _ ps rhs b) es = do+  traceSDoc "rewriting.rewrite" 50 (sep+    [ "{ attempting to rewrite term " <+> prettyTCM (v `applyE` es)+    , " having head " <+> prettyTCM v <+> " of type " <+> prettyTCM t+    , " with rule " <+> prettyTCM rew     ]) $ do-  result <- nonLinMatch gamma ps es+  traceSDoc "rewriting.rewrite" 90 (sep+    [ "raw: attempting to rewrite term " <+> (text . show) (v `applyE` es)+    , " having head " <+> (text . show) v <+> " of type " <+> (text . show) t+    , " with rule " <+> (text . show) rew+    ]) $ do+  result <- nonLinMatch gamma (t,v) ps es   case result of-    Left block -> return $ Left $ block $> v `applyE` es -- TODO: remember reductions+    Left block -> traceSDoc "rewriting.rewrite" 50 "}" $+      return $ Left $ block $> v `applyE` es -- TODO: remember reductions     Right sub  -> do       let v' = applySubst sub rhs-      traceSDoc "rewriting" 70 (sep-        [ text "rewrote " <+> prettyTCM (v `applyE` es)-        , text " to " <+> prettyTCM v'+      traceSDoc "rewriting.rewrite" 50 (sep+        [ "rewrote " <+> prettyTCM (v `applyE` es)+        , " to " <+> prettyTCM v' <+> "}"         ]) $ do       return $ Right v' @@ -330,22 +369,33 @@ rewrite :: Blocked_ -> Term -> RewriteRules -> Elims -> ReduceM (Reduced (Blocked Term) Term) rewrite block v rules es = do   rewritingAllowed <- optRewriting <$> pragmaOptions-  if (rewritingAllowed && not (null rules)) then-    loop block rules =<< instantiateFull' es+  if (rewritingAllowed && not (null rules)) then do+    t <- case v of+      Def f []   -> defType <$> getConstInfo f+      Con c _ [] -> typeOfConst $ conName c+        -- Andreas, 2018-09-08, issue #3211:+        -- discount module parameters for constructor heads+      _ -> __IMPOSSIBLE__+    loop block t rules =<< instantiateFull' es   else     return $ NoReduction (block $> v `applyE` es)   where-    loop :: Blocked_ -> RewriteRules -> Elims -> ReduceM (Reduced (Blocked Term) Term)-    loop block [] es = return $ NoReduction $ block $> v `applyE` es-    loop block (rew:rews) es+    loop :: Blocked_ -> Type -> RewriteRules -> Elims -> ReduceM (Reduced (Blocked Term) Term)+    loop block t [] es =+      traceSDoc "rewriting.rewrite" 20 (sep+        [ "failed to rewrite " <+> prettyTCM (v `applyE` es)+        , "blocking tag" <+> text (show block)+        ]) $ do+      return $ NoReduction $ block $> v `applyE` es+    loop block t (rew:rews) es      | let n = rewArity rew, length es >= n = do           let (es1, es2) = List.genericSplitAt n es-          result <- rewriteWith Nothing v rew es1+          result <- rewriteWith t v rew es1           case result of-            Left (Blocked m u)    -> loop (block `mappend` Blocked m ()) rews es-            Left (NotBlocked _ _) -> loop block rews es+            Left (Blocked m u)    -> loop (block `mappend` Blocked m ()) t rews es+            Left (NotBlocked _ _) -> loop block t rews es             Right w               -> return $ YesReduction YesSimplification $ w `applyE` es2-     | otherwise = loop (block `mappend` NotBlocked Underapplied ()) rews es+     | otherwise = loop (block `mappend` NotBlocked Underapplied ()) t rews es   ------------------------------------------------------------------------
src/full/Agda/TypeChecking/Rewriting/NonLinMatch.hs view
@@ -36,24 +36,27 @@ import qualified Data.IntMap as IntMap import Data.IntSet (IntSet) import qualified Data.IntSet as IntSet-import Data.List (elemIndex) import Data.Monoid+import qualified Data.Set as Set+import Data.Set (Set)  import Agda.Syntax.Common import qualified Agda.Syntax.Common as C import Agda.Syntax.Internal +import Agda.TypeChecking.Datatypes import Agda.TypeChecking.EtaContract import Agda.TypeChecking.Free-import Agda.TypeChecking.Level (levelView', unLevel, reallyUnLevelView, subLevel)+import Agda.TypeChecking.Free.Reduce+import Agda.TypeChecking.Level import Agda.TypeChecking.Monad-import Agda.TypeChecking.Monad.Builtin (primLevelSuc, primLevelMax)+import Agda.TypeChecking.Monad.Builtin (getBuiltin', builtinLevel, primLevelSuc, primLevelMax) import Agda.TypeChecking.Pretty-import Agda.TypeChecking.Records (isRecordConstructor)+import Agda.TypeChecking.Records import Agda.TypeChecking.Reduce-import Agda.TypeChecking.Reduce.Monad+import Agda.TypeChecking.Reduce.Monad as Red import Agda.TypeChecking.Substitute-import Agda.TypeChecking.Telescope (permuteTel)+import Agda.TypeChecking.Telescope  import Agda.Utils.Either import Agda.Utils.Except@@ -75,95 +78,133 @@ --   The first argument indicates the relevance we are working under: if this --   is Irrelevant, then we construct a pattern that never fails to match. --   The second argument is the number of bound variables (from pattern lambdas).--class PatternFrom a b where-  patternFrom :: Relevance -> Int -> a -> TCM b+--   The third argument is the type of the term. -instance (PatternFrom a b) => PatternFrom [a] [b] where-  patternFrom r k = traverse $ patternFrom r k+class PatternFrom t a b where+  patternFrom :: Relevance -> Int -> t -> a -> TCM b -instance (PatternFrom a b) => PatternFrom (Arg a) (Arg b) where-  patternFrom r k u = let r' = r `composeRelevance` getRelevance u-                      in  traverse (patternFrom r' k) u+instance (PatternFrom t a b) => PatternFrom (Dom t) (Arg a) (Arg b) where+  patternFrom r k t u = let r' = r `composeRelevance` getRelevance u+                        in  traverse (patternFrom r' k $ unDom t) u -instance (PatternFrom a NLPat) => PatternFrom (Elim' a) (Elim' NLPat) where-  patternFrom r k (Apply u) = let r' = r `composeRelevance` getRelevance u-                              in  Apply <$> traverse (patternFrom r' k) u-  patternFrom r k (Proj o f) = return $ Proj o f+instance PatternFrom (Type, Term) Elims [Elim' NLPat] where+  patternFrom r k (t,hd) = \case+    [] -> return []+    (Apply u : es) -> do+      ~(Pi a b) <- reduce $ unEl t+      p   <- patternFrom r k a u+      t'  <- t `piApplyM` u+      let hd' = hd `apply` [ u ]+      ps  <- patternFrom r k (t',hd') es+      return $ Apply p : ps+    (IApply x y u : es) -> __IMPOSSIBLE__ -- TODO+    (Proj o f : es) -> do+      ~(Just (El _ (Pi a b))) <- getDefType f =<< reduce t+      let t' = b `absApp` hd+      hd' <- applyDef o f (argFromDom a $> hd)+      ps  <- patternFrom r k (t',hd') es+      return $ Proj o f : ps -instance (PatternFrom a b) => PatternFrom (Dom a) (Dom b) where-  patternFrom r k = traverse $ patternFrom r k+instance (PatternFrom t a b) => PatternFrom t (Dom a) (Dom b) where+  patternFrom r k t = traverse $ patternFrom r k t -instance PatternFrom Type NLPType where-  patternFrom r k a = NLPType <$> patternFrom r k (getSort a)-                              <*> patternFrom r k (unEl a)+instance PatternFrom () Type NLPType where+  patternFrom r k _ a = NLPType <$> patternFrom r k () (getSort a)+                                <*> patternFrom r k (sort $ getSort a) (unEl a) -instance PatternFrom Sort NLPat where-  patternFrom r k s = do+instance PatternFrom () Sort NLPat where+  patternFrom r k _ s = do     s <- reduce s     let done = return PWild     case s of-      Type l   -> patternFrom Irrelevant k (Level l)-      Prop     -> done+      Type l   -> do+        t <- levelType+        patternFrom Irrelevant k t (Level l)+      Prop l   -> done --TODO       Inf      -> done       SizeUniv -> done-      PiSort _ _ -> done-      UnivSort _ -> done+      PiSort _ _ -> __IMPOSSIBLE__+      UnivSort _ -> __IMPOSSIBLE__       MetaS{}  -> __IMPOSSIBLE__+      DefS{}   -> done+      DummyS s -> do+        reportSLn "impossible" 10 $ unlines+          [ "patternFrom: hit dummy sort with content:"+          , s+          ]+        __IMPOSSIBLE__ -instance PatternFrom Term NLPat where-  patternFrom r k v = do+instance PatternFrom Type Term NLPat where+  patternFrom r k t v = do+    t <- reduce t+    etaRecord <- isEtaRecordType t     v <- unLevel =<< reduce v+    reportSDoc "rewriting.build" 60 $ sep+      [ "building a pattern from term v = " <+> prettyTCM v+      , " of type " <+> prettyTCM t+      ]     let done = if isIrrelevant r then                  return PWild                else                  return $ PTerm v-    case v of-      Var i es-       | i < k     -> PBoundVar i <$> patternFrom r k es-       | otherwise -> do-         -- The arguments of `var i` should be distinct bound variables-         -- in order to build a Miller pattern-         let mbvs = mfilter fastDistinct $ forM es $ \e -> do-                      e <- isApplyElim e-                      case unArg e of-                        Var j [] | j < k -> Just $ e $> j-                        _                -> Nothing-         case mbvs of-           Just bvs -> do-             let i' = i-k-                 allBoundVars = IntSet.fromList (downFrom k)-                 ok = not (isIrrelevant r) ||-                      IntSet.fromList (map unArg bvs) == allBoundVars-             if ok then return (PVar i bvs) else done-           Nothing -> done-      Lam i t  -> PLam i <$> patternFrom r k t-      Lit{}    -> done-      Def f es | isIrrelevant r -> done-      Def f es -> do+    case (unEl t , v) of+      (Pi a b , _) -> do+        let body = raise 1 v `apply` [ Arg (domInfo a) $ var 0 ]+        p <- addContext a (patternFrom r (k+1) (absBody b) body)+        return $ PLam (domInfo a) $ Abs (absName b) p+      (_ , Var i es)+       | i < k     -> do+           t <- typeOfBV i+           PBoundVar i <$> patternFrom r k (t , var i) es+       -- The arguments of `var i` should be distinct bound variables+       -- in order to build a Miller pattern+       | Just vs <- allApplyElims es -> do+           TelV tel _ <- telView =<< typeOfBV i+           unless (size tel >= size vs) __IMPOSSIBLE__+           let ts = applySubst (parallelS $ reverse $ map unArg vs) $ map unDom $ flattenTel tel+           mbvs <- forM (zip ts vs) $ \(t , v) -> do+             isEtaVar (unArg v) t >>= \case+               Just j | j < k -> return $ Just $ v $> j+               _              -> return Nothing+           case sequence mbvs of+             Just bvs | fastDistinct bvs -> do+               let allBoundVars = IntSet.fromList (downFrom k)+                   ok = not (isIrrelevant r) ||+                        IntSet.fromList (map unArg bvs) == allBoundVars+               if ok then return (PVar i bvs) else done+             _ -> done+       | otherwise -> done+      (_ , _ ) | Just (d, pars) <- etaRecord -> do+        def <- theDef <$> getConstInfo d+        (tel, c, ci, vs) <- etaExpandRecord_ d pars def v+        caseMaybeM (getFullyAppliedConType c t) __IMPOSSIBLE__ $ \ (_ , ct) -> do+        PDef (conName c) <$> patternFrom r k (ct , Con c ci []) (map Apply vs)+      (_ , Lam i t) -> __IMPOSSIBLE__+      (_ , Lit{})   -> done+      (_ , Def f es) | isIrrelevant r -> done+      (_ , Def f es) -> do         Def lsuc [] <- primLevelSuc         Def lmax [] <- primLevelMax         case es of           [x]     | f == lsuc -> done           [x , y] | f == lmax -> done-          _                   -> PDef f <$> patternFrom r k es-      Con c ci vs | isIrrelevant r -> do-        mr <- isRecordConstructor (conName c)-        case mr of-          Just (_, def) | YesEta <- recEtaEquality def ->-            PDef (conName c) <$> patternFrom r k vs-          _ -> done-      Con c ci vs -> PDef (conName c) <$> patternFrom r k vs-      Pi a b | isIrrelevant r -> done-      Pi a b   -> PPi <$> patternFrom r k a <*> patternFrom r k b-      Sort s   -> done-      Level l  -> __IMPOSSIBLE__-      DontCare{} -> return PWild-      MetaV{}    -> __IMPOSSIBLE__--instance (PatternFrom a b) => PatternFrom (Abs a) (Abs b) where-  patternFrom r k (Abs name x)   = Abs name   <$> patternFrom r (k+1) x-  patternFrom r k (NoAbs name x) = NoAbs name <$> patternFrom r k x+          _                   -> do+            ft <- defType <$> getConstInfo f+            PDef f <$> patternFrom r k (ft , Def f []) es+      (_ , Con c ci vs) | isIrrelevant r -> done+      (_ , Con c ci vs) ->+        caseMaybeM (getFullyAppliedConType c t) __IMPOSSIBLE__ $ \ (_ , ct) -> do+        PDef (conName c) <$> patternFrom r k (ct , Con c ci []) vs+      (_ , Pi a b) | isIrrelevant r -> done+      (_ , Pi a b) -> do+        pa <- patternFrom r k () a+        pb <- addContext a (patternFrom r (k+1) () $ absBody b)+        return $ PPi pa (Abs (absName b) pb)+      (_ , Sort s)     -> done+      (_ , Level l)    -> __IMPOSSIBLE__+      (_ , DontCare{}) -> return PWild+      (_ , MetaV{})    -> __IMPOSSIBLE__+      (_ , Dummy s)    -> __IMPOSSIBLE_VERBOSE__ s  -- | Monad for non-linear matching. type NLM = ExceptT Blocked_ (StateT NLMState ReduceM)@@ -183,12 +224,9 @@ nlmEqs :: Lens' PostponedEquations NLMState nlmEqs f s = f (_nlmEqs s) <&> \x -> s {_nlmEqs = x} -liftRed :: ReduceM a -> NLM a-liftRed = lift . lift--runNLM :: NLM () -> ReduceM (Either Blocked_ NLMState)+runNLM :: (MonadReduce m) => NLM () -> m (Either Blocked_ NLMState) runNLM nlm = do-  (ok,out) <- runStateT (runExceptT nlm) empty+  (ok,out) <- liftReduce $ runStateT (runExceptT nlm) empty   case ok of     Left block -> return $ Left block     Right _    -> return $ Right out@@ -205,13 +243,13 @@     Just (r',v')       | isIrrelevant r  -> return ()       | isIrrelevant r' -> nlmSub %= IntMap.insert i (r,v)-      | otherwise       -> whenJustM (liftRed $ equal v v') matchingBlocked+      | otherwise       -> whenJustM (equal v v') matchingBlocked  tellEq :: Telescope -> Telescope -> Term -> Term -> NLM () tellEq gamma k u v = do-  traceSDoc "rewriting" 60 (sep-               [ text "adding equality between" <+> addContext (gamma `abstract` k) (prettyTCM u)-               , text " and " <+> addContext k (prettyTCM v) ]) $ do+  traceSDoc "rewriting.match" 30 (sep+               [ "adding equality between" <+> addContext (gamma `abstract` k) (prettyTCM u)+               , " and " <+> addContext k (prettyTCM v) ]) $ do   nlmEqs %= (PostponedEquation k u v:)  type Sub = IntMap (Relevance, Term)@@ -229,180 +267,222 @@ -- | Match a non-linear pattern against a neutral term, --   returning a substitution. -class Match a b where+class Match t a b where   match :: Relevance  -- ^ Are we currently matching in an irrelevant context?         -> Telescope  -- ^ The telescope of pattern variables         -> Telescope  -- ^ The telescope of lambda-bound variables+        -> t          -- ^ The type of the pattern         -> a          -- ^ The pattern to match         -> b          -- ^ The term to be matched against the pattern         -> NLM () -instance Match a b => Match [a] [b] where-  match r gamma k ps vs-    | length ps == length vs = zipWithM_ (match r gamma k) ps vs-    | otherwise              = matchingBlocked $ NotBlocked ReallyNotBlocked ()+instance Match t a b => Match (Dom t) (Arg a) (Arg b) where+  match r gamma k t p v = let r' = r `composeRelevance` getRelevance p+                          in  match r' gamma k (unDom t) (unArg p) (unArg v) -instance Match a b => Match (Arg a) (Arg b) where-  match r gamma k p v = let r' = r `composeRelevance` getRelevance p-                        in  match r' gamma k (unArg p) (unArg v)+instance Match (Type, Term) [Elim' NLPat] Elims where+  match r gamma k (t, hd) [] [] = return ()+  match r gamma k (t, hd) [] _  = matchingBlocked $ NotBlocked ReallyNotBlocked ()+  match r gamma k (t, hd) _  [] = matchingBlocked $ NotBlocked ReallyNotBlocked ()+  match r gamma k (t, hd) (p:ps) (v:vs) = case (p,v) of+    (Apply p, Apply v) -> do+      ~(Pi a b) <- reduce $ unEl t+      match r gamma k a p v+      t' <- Red.addCtxTel k $ t `piApplyM` v+      let hd' = hd `apply` [ v ]+      match r gamma k (t',hd') ps vs -instance Match a b => Match (Elim' a) (Elim' b) where-  match r gamma k p v =-   case (p, v) of-     (Apply p, Apply v) -> let r' = r `composeRelevance` getRelevance p-                           in  match r' gamma k p v-     (Proj _ x, Proj _ y) -> if x == y then return () else-                             traceSDoc "rewriting" 80 (sep-                               [ text "mismatch between projections " <+> prettyTCM x-                               , text " and " <+> prettyTCM y ]) mzero-     (Apply{}, Proj{} ) -> __IMPOSSIBLE__-     (Proj{} , Apply{}) -> __IMPOSSIBLE__+    (Proj o f, Proj o' f') | f == f' -> do+      ~(Just (El _ (Pi a b))) <- getDefType f =<< reduce t+      let t' = b `absApp` hd+      hd' <- Red.addCtxTel k $ applyDef o f (argFromDom a $> hd)+      match r gamma k (t',hd') ps vs -instance Match a b => Match (Dom a) (Dom b) where-  match r gamma k p v = match r gamma k (C.unDom p) (C.unDom v)+    (Proj _ f, Proj _ f') | otherwise -> do+      traceSDoc "rewriting.match" 20 (sep+        [ "mismatch between projections " <+> prettyTCM f+        , " and " <+> prettyTCM f' ]) mzero -instance Match NLPType Type where-  match r gamma k (NLPType lp p) (El s a) = match r gamma k lp s >> match r gamma k p a+    (Apply{}, Proj{} ) -> __IMPOSSIBLE__+    (Proj{} , Apply{}) -> __IMPOSSIBLE__ -instance Match NLPat Sort where-  match r gamma k p s = case (p , s) of+    (IApply{} , _    ) -> __IMPOSSIBLE__ -- TODO+    (_ , IApply{}    ) -> __IMPOSSIBLE__ -- TODO++instance Match t a b => Match t (Dom a) (Dom b) where+  match r gamma k t p v = match r gamma k t (C.unDom p) (C.unDom v)++instance Match () NLPType Type where+  match r gamma k _ (NLPType lp p) (El s a) = do+    match r gamma k () lp s+    match r gamma k (sort s) p a++instance Match () NLPat Sort where+  match r gamma k _ p s = case (p , s) of     (PWild , _     ) -> return ()-    (p     , Type l) -> match Irrelevant gamma k p l+    (p     , Type l) -> match Irrelevant gamma k () p l     _                -> matchingBlocked $ NotBlocked ReallyNotBlocked () -instance (Match a b, Subst t1 a, Subst t2 b) => Match (Abs a) (Abs b) where-  match r gamma k (Abs n p) (Abs _ v) = match r gamma (ExtendTel dummyDom (Abs n k)) p v-  match r gamma k (Abs n p) (NoAbs _ v) = match r gamma (ExtendTel dummyDom (Abs n k)) p (raise 1 v)-  match r gamma k (NoAbs n p) (Abs _ v) = match r gamma (ExtendTel dummyDom (Abs n k)) (raise 1 p) v-  match r gamma k (NoAbs _ p) (NoAbs _ v) = match r gamma k p v--instance Match NLPat Level where-  match r gamma k p l = match r gamma k p =<< liftRed (reallyUnLevelView l)+instance Match () NLPat Level where+  match r gamma k _ p l = do+    t <- El (mkType 0) . fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinLevel+    v <- reallyUnLevelView l+    match r gamma k t p v -instance Match NLPat Term where-  match r gamma k p v = do-    vb <- liftRed $ reduceB' v+instance Match Type NLPat Term where+  match r gamma k t p v = do+    vbt <- Red.addCtxTel k $ reduceB (v,t)+    etaRecord <- Red.addCtxTel k $ isEtaRecordType t     let n = size k-        b = void vb-        v = ignoreBlocking vb-        prettyPat  = addContext (gamma `abstract` k) (prettyTCM p)-        prettyTerm = addContext k (prettyTCM v)-    traceSDoc "rewriting" 100 (sep-      [ text "matching" <+> prettyPat-      , text "with" <+> prettyTerm]) $ do+        b = void vbt+        (v,t) = ignoreBlocking vbt+        prettyPat  = withShowAllArguments $ addContext (gamma `abstract` k) (prettyTCM p)+        prettyTerm = withShowAllArguments $ addContext k $ prettyTCM v+        prettyType = withShowAllArguments $ addContext k $ prettyTCM t+    traceSDoc "rewriting.match" 30 (sep+      [ "matching pattern " <+> prettyPat+      , "  with term      " <+> prettyTerm+      , "  of type        " <+> prettyType ]) $ do+    traceSDoc "rewriting.match" 80 (vcat+      [ "  raw pattern:  " <+> text (show p)+      , "  raw term:     " <+> text (show v)+      , "  raw type:     " <+> text (show t) ]) $ do+    traceSDoc "rewriting.match" 70 (vcat+      [ "pattern vars:   " <+> prettyTCM gamma+      , "bound vars:     " <+> prettyTCM k ]) $ do     let yes = return ()         no msg = do-          traceSDoc "rewriting" 80 (sep-            [ text "mismatch between" <+> prettyPat-            , text " and " <+> prettyTerm+          traceSDoc "rewriting.match" 10 (sep+            [ "mismatch between" <+> prettyPat+            , " and " <+> prettyTerm+            , " of type " <+> prettyType             , msg ]) $ do+          traceSDoc "rewriting.match" 30 (sep+            [ "blocking tag from reduction: " <+> text (show b) ]) $ do           matchingBlocked b         block b' = do-          traceSDoc "rewriting" 80 (sep-            [ text "matching blocked on meta"-            , text (show b) ]) $ do+          traceSDoc "rewriting.match" 10 (sep+            [ "matching blocked on meta"+            , text (show b') ]) $ do+          traceSDoc "rewriting.match" 30 (sep+            [ "blocking tag from reduction: " <+> text (show b') ]) $ do           matchingBlocked (b `mappend` b')     case p of       PWild  -> yes-      PVar i bvs -> do+      PVar i bvs -> traceSDoc "rewriting.match" 60 ("matching a PVar: " <+> text (show i)) $ do         let allowedVars :: IntSet             allowedVars = IntSet.fromList (map unArg bvs)-            isBadVar :: Int -> Bool-            isBadVar i = i < n && not (i `IntSet.member` allowedVars)+            badVars :: IntSet+            badVars = IntSet.difference (IntSet.fromList (downFrom n)) allowedVars             perm :: Permutation             perm = Perm n $ reverse $ map unArg $ bvs             tel :: Telescope             tel = permuteTel perm k-        ok <- liftRed $ reallyFree isBadVar v+        ok <- Red.addCtxTel k $ reallyFree badVars v         case ok of           Left b         -> block b-          Right Nothing  -> no (text "")+          Right Nothing  -> no ""           Right (Just v) -> tellSub r (i-n) $ teleLam tel $ renameP __IMPOSSIBLE__ perm v-      PDef f ps -> do-        v <- liftRed $ constructorForm =<< unLevel v++      _ | MetaV m es <- v -> matchingBlocked $ Blocked m ()++      PDef f ps -> traceSDoc "rewriting.match" 60 ("matching a PDef: " <+> prettyTCM f) $ do+        v <- Red.addCtxTel k $ constructorForm =<< unLevel v         case v of           Def f' es-            | f == f'   -> match r gamma k ps es-          Con c _ vs-            | f == conName c -> match r gamma k ps vs-            | otherwise -> do -- @c@ may be a record constructor-                mr <- liftRed $ isRecordConstructor (conName c)-                case mr of-                  Just (_, def) | YesEta <- recEtaEquality def -> do-                    let fs = recFields def-                        qs = map (fmap $ \f -> PDef f (ps ++ [Proj ProjSystem f])) fs-                    match r gamma k (map Apply qs) vs-                  _ -> no (text "")-          Lam i u -> do-            let pbody = PDef f (raise 1 ps ++ [Apply $ Arg i $ PTerm (var 0)])-                body  = absBody u-            match r gamma (ExtendTel dummyDom (Abs (absName u) k)) pbody body+            | f == f'   -> do+                ft <- Red.addCtxTel k $ defType <$> getConstInfo f+                match r gamma k (ft , Def f []) ps es+          Con c ci vs+            | f == conName c -> do+                ~(Just (_ , ct)) <- Red.addCtxTel k $ getFullyAppliedConType c t+                match r gamma k (ct , Con c ci []) ps vs+          _ | Pi a b <- unEl t -> do+            let ai    = domInfo a+                pbody = PDef f $ raise 1 ps ++ [ Apply $ Arg ai $ PTerm $ var 0 ]+                body  = raise 1 v `apply` [ Arg (domInfo a) $ var 0 ]+                k'    = ExtendTel a (Abs (absName b) k)+            match r gamma k' (absBody b) pbody body+          _ | Just (d, pars) <- etaRecord -> do+          -- If v is not of record constructor form but we are matching at record+          -- type, e.g., we eta-expand both v to (c vs) and+          -- the pattern (p = PDef f ps) to @c (p .f1) ... (p .fn)@.+            def <- Red.addCtxTel k $ theDef <$> getConstInfo d+            (tel, c, ci, vs) <- Red.addCtxTel k $ etaExpandRecord_ d pars def v+            ~(Just (_ , ct)) <- Red.addCtxTel k $ getFullyAppliedConType c t+            let flds = recFields def+                mkField fld = PDef f (ps ++ [Proj ProjSystem fld])+                -- Issue #3335: when matching against the record constructor,+                -- don't add projections but take record field directly.+                ps'+                  | conName c == f = ps+                  | otherwise      = map (Apply . fmap mkField) flds+            match r gamma k (ct, Con c ci []) ps' (map Apply vs)           MetaV m es -> do             matchingBlocked $ Blocked m ()-          v' -> do -- @f@ may be a record constructor as well-            mr <- liftRed $ isRecordConstructor f-            case mr of-              Just (_, def) | YesEta <- recEtaEquality def -> do-                let fs  = recFields def-                    ws  = map (fmap $ \f -> v `applyE` [Proj ProjSystem f]) fs-                    qs = fromMaybe __IMPOSSIBLE__ $ allApplyElims ps-                match r gamma k qs ws-              _ -> no (text "")-      PLam i p' -> do-        let body = Abs (absName p') $ raise 1 v `apply` [Arg i (var 0)]-        match r gamma k p' body-      PPi pa pb  -> case v of-        Pi a b -> match r gamma k pa a >> match r gamma k pb b-        MetaV m es -> matchingBlocked $ Blocked m ()-        _ -> no (text "")+          _  -> no ""+      PLam i p' -> case unEl t of+        Pi a b -> do+          let body = raise 1 v `apply` [Arg i (var 0)]+              k'   = ExtendTel a (Abs (absName b) k)+          match r gamma k' (absBody b) (absBody p') body+        _ -> no ""+      PPi pa pb -> case v of+        Pi a b -> do+          match r gamma k () pa a+          let k' = ExtendTel a (Abs (absName b) k)+          match r gamma k' () (absBody pb) (absBody b)+        _ -> no ""       PBoundVar i ps -> case v of-        Var i' es | i == i' -> match r gamma k ps es-        Con c _ vs -> do -- @c@ may be a record constructor-          mr <- liftRed $ isRecordConstructor (conName c)-          case mr of-            Just (_, def) | YesEta <- recEtaEquality def -> do-              let fs = recFields def-                  qs = map (fmap $ \f -> PBoundVar i (ps ++ [Proj ProjSystem f])) fs-              match r gamma k (map Apply qs) vs-            _ -> no (text "")-        Lam info u -> do-          let pbody = PBoundVar i (raise 1 ps ++ [Apply $ Arg info $ PTerm (var 0)])-              body  = absBody u-          match r gamma (ExtendTel dummyDom (Abs (absName u) k)) pbody body-        MetaV m es -> matchingBlocked $ Blocked m ()-        _ -> no (text "")-      PTerm u -> tellEq gamma k u v+        Var i' es | i == i' -> do+          let ti = unDom $ indexWithDefault __IMPOSSIBLE__ (flattenTel k) i+          match r gamma k (ti , var i) ps es+        _ | Pi a b <- unEl t -> do+          let ai    = domInfo a+              pbody = PBoundVar i $ raise 1 ps ++ [ Apply $ Arg ai $ PTerm $ var 0 ]+              body  = raise 1 v `apply` [ Arg ai $ var 0 ]+              k'    = ExtendTel a (Abs (absName b) k)+          match r gamma k' (absBody b) pbody body+        _ | Just (d, pars) <- etaRecord -> do+          def <- Red.addCtxTel k $ theDef <$> getConstInfo d+          (tel, c, ci, vs) <- Red.addCtxTel k $ etaExpandRecord_ d pars def v+          ~(Just (_ , ct)) <- Red.addCtxTel k $ getFullyAppliedConType c t+          let flds = recFields def+              ps'  = map (fmap $ \fld -> PBoundVar i (ps ++ [Proj ProjSystem fld])) flds+          match r gamma k (ct, Con c ci []) (map Apply ps') (map Apply vs)+        _ -> no ""+      PTerm u -> traceSDoc "rewriting.match" 60 ("matching a PTerm" <+> addContext (gamma `abstract` k) (prettyTCM u)) $+        tellEq gamma k u v  -- Checks if the given term contains any free variables that satisfy the--- given condition on their DBI, possibly normalizing the term in the process.+-- given condition on their DBI, possibly reducing the term in the process. -- Returns `Right Nothing` if there are such variables, `Right (Just v')`--- if there are none (where v' is the possibly normalized version of the given+-- if there are none (where v' is the possibly reduced version of the given -- term) or `Left b` if the problem is blocked on a meta.-reallyFree :: (Reduce a, Normalise a, Free a)-           => (Int -> Bool) -> a -> ReduceM (Either Blocked_ (Maybe a))-reallyFree f v = do-    let xs = getVars v-    if null (stronglyRigidVars xs) && null (unguardedVars xs)-    then do-      if null (weaklyRigidVars xs) && null (flexibleVars xs)-         && null (irrelevantVars xs)-      then return $ Right $ Just v-      else do-        bv <- normaliseB' v-        let b  = void bv-            v  = ignoreBlocking bv-            xs = getVars v-            b' = foldMap (foldMap $ \m -> Blocked m ()) $ flexibleVars xs-        if null (stronglyRigidVars xs) && null (unguardedVars xs)-           && null (weaklyRigidVars xs) && null (irrelevantVars xs)-        then if null (flexibleVars xs)-             then return $ Right $ Just v-             else return $ Left $ b `mappend` b'-        else return $ Right Nothing-    else return $ Right Nothing+reallyFree :: (MonadReduce m, Reduce a, ForceNotFree a)+           => IntSet -> a -> m (Either Blocked_ (Maybe a))+reallyFree xs v = do+  (mxs , v') <- forceNotFree xs v+  case IntMap.foldr pickFree NotFree mxs of+    MaybeFree ms+      | null ms   -> return $ Right Nothing+      | otherwise -> return $ Left $+        Set.foldr (\m -> mappend $ Blocked m ()) (notBlocked ()) ms+    NotFree -> return $ Right (Just v')+   where-    getVars v = runFree (\ i -> if f i then singleton i else empty) IgnoreNot v+    -- Check if any of the variables occur freely.+    -- Prefer occurrences that do not depend on any metas.+    pickFree :: IsFree -> IsFree -> IsFree+    pickFree f1@(MaybeFree ms1) f2+      | null ms1  = f1+    pickFree f1@(MaybeFree ms1) f2@(MaybeFree ms2)+      | null ms2  = f2+      | otherwise = f1+    pickFree f1@(MaybeFree ms1) NotFree = f1+    pickFree NotFree f2 = f2 + makeSubstitution :: Telescope -> Sub -> Substitution makeSubstitution gamma sub =   prependS __IMPOSSIBLE__ (map val [0 .. size gamma-1]) IdS@@ -412,25 +492,27 @@                 Just (_         , v) -> Just v                 Nothing              -> Nothing -checkPostponedEquations :: Substitution -> PostponedEquations -> ReduceM (Maybe Blocked_)+checkPostponedEquations :: (MonadReduce m, HasConstInfo m, MonadDebug m)+                        => Substitution -> PostponedEquations -> m (Maybe Blocked_) checkPostponedEquations sub eqs = forM' eqs $   \ (PostponedEquation k lhs rhs) -> do       let lhs' = applySubst (liftS (size k) sub) lhs-      traceSDoc "rewriting" 60 (sep-        [ text "checking postponed equality between" , addContext k (prettyTCM lhs')-        , text " and " , addContext k (prettyTCM rhs) ]) $ do-      equal lhs' rhs+      traceSDoc "rewriting.match" 30 (sep+        [ "checking postponed equality between" , addContext k (prettyTCM lhs')+        , " and " , addContext k (prettyTCM rhs) ]) $ do+      Red.addCtxTel k $ equal lhs' rhs  -- main function-nonLinMatch :: (Match a b) => Telescope -> a -> b -> ReduceM (Either Blocked_ Substitution)-nonLinMatch gamma p v = do-  let no msg b = traceSDoc "rewriting" 80 (sep-                   [ text "matching failed during" <+> text msg-                   , text "blocking: " <+> text (show b) ]) $ return (Left b)-  caseEitherM (runNLM $ match Relevant gamma EmptyTel p v) (no "matching") $ \ s -> do+nonLinMatch :: (MonadReduce m, HasConstInfo m, MonadDebug m, Match t a b)+            => Telescope -> t -> a -> b -> m (Either Blocked_ Substitution)+nonLinMatch gamma t p v = do+  let no msg b = traceSDoc "rewriting.match" 10 (sep+                   [ "matching failed during" <+> text msg+                   , "blocking: " <+> text (show b) ]) $ return (Left b)+  caseEitherM (runNLM $ match Relevant gamma EmptyTel t p v) (no "matching") $ \ s -> do     let sub = makeSubstitution gamma $ s^.nlmSub         eqs = s^.nlmEqs-    traceSDoc "rewriting" 90 (text $ "sub = " ++ show sub) $ do+    traceSDoc "rewriting.match" 90 (text $ "sub = " ++ show sub) $ do     ok <- checkPostponedEquations sub eqs     case ok of       Nothing -> return $ Right sub@@ -441,22 +523,18 @@ --   (where b contains information about possible metas blocking the comparison)  -- TODO: implement a type-directed, lazy version of this function.-equal :: Term -> Term -> ReduceM (Maybe Blocked_)+equal :: (MonadReduce m, HasConstInfo m)+      => Term -> Term -> m (Maybe Blocked_) equal u v = do-  (u, v) <- etaContract =<< normalise' (u, v)+  (u, v) <- etaContract =<< normalise (u, v)   let ok    = u == v       metas = allMetas (u, v)       block = caseMaybe (headMaybe metas)                 (NotBlocked ReallyNotBlocked ())                 (\m -> Blocked m ())   if ok then return Nothing else do-    traceSDoc "rewriting" 80 (sep-      [ text "mismatch between " <+> prettyTCM u-      , text " and " <+> prettyTCM v+    traceSDoc "rewriting.match" 10 (sep+      [ "mismatch between " <+> prettyTCM u+      , " and " <+> prettyTCM v       ]) $ do     return $ Just block---- | Normalise the given term but also preserve blocking tags---   TODO: implement a more efficient version of this.-normaliseB' :: (Reduce t, Normalise t) => t -> ReduceM (Blocked t)-normaliseB' = normalise' >=> reduceB'
src/full/Agda/TypeChecking/Rules/Application.hs view
@@ -6,6 +6,7 @@   , checkArguments_   , checkApplication   , inferApplication+  , checkProjAppToKnownPrincipalArg   ) where  #if MIN_VERSION_base(4,11,0)@@ -27,6 +28,7 @@ import qualified Data.IntSet as IntSet  import Agda.Interaction.Highlighting.Generate (storeDisambiguatedName)+import Agda.Interaction.Options  import qualified Agda.Syntax.Abstract as A import Agda.Syntax.Abstract.Views as A@@ -44,8 +46,10 @@ import Agda.TypeChecking.Implicit import Agda.TypeChecking.Injectivity import Agda.TypeChecking.Irrelevance+import Agda.TypeChecking.InstanceArguments (postponeInstanceConstraints) import Agda.TypeChecking.Level import Agda.TypeChecking.MetaVars+import Agda.TypeChecking.Names import Agda.TypeChecking.Pretty import Agda.TypeChecking.Primitive import Agda.TypeChecking.Monad@@ -61,8 +65,10 @@ import Agda.Utils.Either import Agda.Utils.Except import Agda.Utils.Functor+import Agda.Utils.Lens import Agda.Utils.List import Agda.Utils.Maybe+import Agda.Utils.Monad import Agda.Utils.Null import Agda.Utils.NonemptyList import Agda.Utils.Pretty ( prettyShow )@@ -76,23 +82,26 @@ -- * Applications ----------------------------------------------------------------------------- +-- | Ranges of checked arguments, where present.+type MaybeRanges = [Maybe Range]+ -- | @checkApplication hd args e t@ checks an application. --   Precondition: @Application hs args = appView e@ -- --   @checkApplication@ disambiguates constructors --   (and continues to 'checkConstructorApplication') --   and resolves pattern synonyms.-checkApplication :: A.Expr -> A.Args -> A.Expr -> Type -> TCM Term-checkApplication hd args e t = do+checkApplication :: Comparison -> A.Expr -> A.Args -> A.Expr -> Type -> TCM Term+checkApplication cmp hd args e t = postponeInstanceConstraints $ do   reportSDoc "tc.check.app" 20 $ vcat-    [ text "checkApplication"-    , nest 2 $ text "hd   = " <+> prettyA hd-    , nest 2 $ text "args = " <+> sep (map prettyA args)-    , nest 2 $ text "e    = " <+> prettyA e-    , nest 2 $ text "t    = " <+> prettyTCM t+    [ "checkApplication"+    , nest 2 $ "hd   = " <+> prettyA hd+    , nest 2 $ "args = " <+> sep (map prettyA args)+    , nest 2 $ "e    = " <+> prettyA e+    , nest 2 $ "t    = " <+> prettyTCM t     ]   reportSDoc "tc.check.app" 70 $ vcat-    [ text "checkApplication (raw)"+    [ "checkApplication (raw)"     , nest 2 $ text $ "hd   = " ++ show hd     , nest 2 $ text $ "args = " ++ show (deepUnscope args)     , nest 2 $ text $ "e    = " ++ show (deepUnscope e)@@ -100,22 +109,22 @@     ]   case unScope hd of     -- Subcase: unambiguous projection-    A.Proj _ p | Just _ <- getUnambiguous p -> checkHeadApplication e t hd args+    A.Proj _ p | Just _ <- getUnambiguous p -> checkHeadApplication cmp e t hd args      -- Subcase: ambiguous projection-    A.Proj o p -> checkProjApp e o (unAmbQ p) args t+    A.Proj o p -> checkProjApp cmp e o (unAmbQ p) args t      -- Subcase: unambiguous constructor     A.Con ambC | Just c <- getUnambiguous ambC -> do       -- augment c with record fields, but do not revert to original name       con <- fromRightM (sigError __IMPOSSIBLE_VERBOSE__ (typeError $ AbstractConstructorNotInScope c)) $         getOrigConHead c-      checkConstructorApplication e t con args+      checkConstructorApplication cmp e t con args      -- Subcase: ambiguous constructor     A.Con (AmbQ cs0) -> disambiguateConstructor cs0 t >>= \ case-      Left unblock -> postponeTypeCheckingProblem (CheckExpr e t) unblock-      Right c      -> checkConstructorApplication e t c args+      Left unblock -> postponeTypeCheckingProblem (CheckExpr cmp e t) unblock+      Right c      -> checkConstructorApplication cmp e t c args      -- Subcase: pattern synonym     A.PatternSyn n -> do@@ -130,7 +139,7 @@         Just (s, ns) -> do           let p' = A.patternToExpr p               e' = A.lambdaLiftExpr (map unArg ns) (A.substExpr s p')-          checkExpr e' t+          checkExpr' cmp e' t      -- Subcase: macro     A.Macro x -> do@@ -156,24 +165,25 @@           makeArgs [] args = ([], args)           makeArgs _  []   = ([], [])           makeArgs tel@(d : _) (arg : args) =-            case insertImplicit arg (map (fmap fst . argFromDom) tel) of+            case insertImplicit arg tel of+              NoInsertNeeded -> first (mkArg (snd $ unDom d) arg :) $ makeArgs (tail tel) args               ImpInsert is   -> makeArgs (drop (length is) tel) (arg : args)               BadImplicits   -> (arg : args, [])  -- fail later in checkHeadApplication               NoSuchName{}   -> (arg : args, [])  -- ditto-              NoInsertNeeded -> first (mkArg (snd $ unDom d) arg :) $ makeArgs (tail tel) args            (macroArgs, otherArgs) = makeArgs argTel args           unq = A.App (A.defaultAppInfo $ fuseRange x args) (A.Unquote A.exprNoRange) . defaultNamedArg            desugared = A.app (unq $ unAppView $ Application (A.Def x) $ macroArgs) otherArgs -      checkExpr desugared t+      checkExpr' cmp desugared t      -- Subcase: unquote     A.Unquote _       | [arg] <- args -> do           (_, hole) <- newValueMeta RunMetaOccursCheck t-          unquoteM (namedArg arg) hole t $ return hole+          unquoteM (namedArg arg) hole t+          return hole       | arg : args <- args -> do           -- Example: unquote v a b : A           --  Create meta H : (x : X) (y : Y x) → Z x y for the hole@@ -188,21 +198,23 @@           let rho = reverse (map unArg vs) ++# IdS  -- [x := a, y := b]           equalType (applySubst rho target) t       -- Z a b == A           (_, hole) <- newValueMeta RunMetaOccursCheck holeType-          unquoteM (namedArg arg) hole holeType $ return $ apply hole vs+          unquoteM (namedArg arg) hole holeType+          return $ apply hole vs       where         metaTel :: [Arg a] -> TCM Telescope         metaTel []           = pure EmptyTel         metaTel (arg : args) = do           a <- newTypeMeta_           let dom = a <$ domFromArg arg-          ExtendTel dom . Abs "x" <$> addContext ("x", dom) (metaTel args)+          ExtendTel dom . Abs "x" <$>+            addContext ("x" :: String, dom) (metaTel args)      -- Subcase: defined symbol or variable.     _ -> do-      v <- checkHeadApplication e t hd args+      v <- checkHeadApplication cmp e t hd args       reportSDoc "tc.term.app" 30 $ vcat-        [ text "checkApplication: checkHeadApplication returned"-        , nest 2 $ text "v = " <+> prettyTCM v+        [ "checkApplication: checkHeadApplication returned"+        , nest 2 $ "v = " <+> prettyTCM v         ]       return v @@ -210,9 +222,9 @@ inferApplication :: ExpandHidden -> A.Expr -> A.Args -> A.Expr -> TCM (Term, Type) inferApplication exh hd args e | not (defOrVar hd) = do   t <- workOnTypes $ newTypeMeta_-  v <- checkExpr e t+  v <- checkExpr' CmpEq e t   return (v, t)-inferApplication exh hd args e =+inferApplication exh hd args e = postponeInstanceConstraints $   case unScope hd of     A.Proj o p | isAmbiguous p -> inferProjApp e o (unAmbQ p) args     _ -> do@@ -220,10 +232,10 @@       let r = getRange hd       res <- runExceptT $ checkArgumentsE exh (getRange hd) args t0 Nothing       case res of-        Right (vs, t1, _) -> (,t1) <$> unfoldInlined (f vs)+        Right (_, vs, t1, _) -> (,t1) <$> unfoldInlined (f vs)         Left problem -> do           t <- workOnTypes $ newTypeMeta_-          v <- postponeArgs problem exh r args t $ \ vs _ _ -> unfoldInlined (f vs)+          v <- postponeArgs problem exh r args t $ \ _ vs _ _ -> unfoldInlined (f vs)           return (v, t)  -----------------------------------------------------------------------------@@ -248,12 +260,14 @@     A.Var x -> do -- traceCall (InferVar x) $ do       (u, a) <- getVarInfo x       reportSDoc "tc.term.var" 20 $ hsep-        [ text "variable" , prettyTCM x-        , text "(" , text (show u) , text ")"-        , text "has type:" , prettyTCM a+        [ "variable" , prettyTCM x+        , "(" , text (show u) , ")"+        , "has type:" , prettyTCM a         ]-      when (unusableRelevance $ getRelevance a) $+      unless (usableRelevance a) $         typeError $ VariableIsIrrelevant x+      unless (usableQuantity a) $+        typeError $ VariableIsErased x       return (applyE u, unDom a)      A.Def x -> inferHeadDef ProjPrefix x@@ -294,34 +308,64 @@     -- instantiateDef relativizes it to the current context     d  <- instantiateDef =<< getConstInfo x     -- irrelevant defs are only allowed in irrelevant position-    checkRelevance x (defRelevance d)-    -- since x is considered living in the top-level, we have to-    -- apply it to the current context-    vs <- freeVarsToApply x-    let t = defType d-        v = mkTerm vs -- applies x to vs, dropping parameters-    debug vs t v-    return (v, t)+    checkRelevance x d+    case theDef d of+      GeneralizableVar{} -> do+        -- Generalizable variables corresponds to metas created+        -- at the point where they should be generalized. Module parameters+        -- have already been applied to the meta, so we don't have to do that+        -- here.+        val <- fromMaybe __IMPOSSIBLE__ <$> viewTC (eGeneralizedVars . key x)+        sub <- checkpointSubstitution (genvalCheckpoint val)+        let (v, t) = applySubst sub (genvalTerm val, genvalType val)+        debug [] t v+        return (v, t)+      _ -> do+        -- since x is considered living in the top-level, we have to+        -- apply it to the current context+        vs <- freeVarsToApply x+        let t = defType d+            v = mkTerm vs -- applies x to vs, dropping parameters+        debug vs t v+        return (v, t)   where+    debug :: Args -> Type -> Term -> TCM ()     debug vs t v = do       reportSDoc "tc.term.def" 60 $-        text "freeVarsToApply to def " <+> hsep (map (text . show) vs)+        "freeVarsToApply to def " <+> hsep (map (text . show) vs)       reportSDoc "tc.term.def" 10 $ vcat-        [ text "inferred def " <+> prettyTCM x <+> hsep (map prettyTCM vs)-        , nest 2 $ text ":" <+> prettyTCM t-        , nest 2 $ text "-->" <+> prettyTCM v ]+        [ "inferred def " <+> prettyTCM x <+> hsep (map prettyTCM vs)+        , nest 2 $ ":" <+> prettyTCM t+        , nest 2 $ "-->" <+> prettyTCM v ] --- | The second argument is the relevance of the first.-checkRelevance :: QName -> Relevance -> TCM ()-checkRelevance _ Relevant = return () -- relevance functions can be used in any context.-checkRelevance x drel = do-  rel <- asks envRelevance-  reportSDoc "tc.irr" 50 $ vcat-    [ text "declaration relevance =" <+> text (show drel)-    , text "context     relevance =" <+> text (show rel)-    ]-  unless (drel `moreRelevant` rel) $ typeError $ DefinitionIsIrrelevant x+-- | The second argument is the definition of the first.+checkRelevance :: QName -> Definition -> TCM ()+checkRelevance x def = maybe (return ()) typeError =<< checkRelevance' x def +-- | The second argument is the definition of the first.+--   Returns 'Nothing' if ok, otherwise the error message.+checkRelevance' :: QName -> Definition -> TCM (Maybe TypeError)+checkRelevance' x def = do+  case defRelevance def of+    Relevant -> return Nothing -- relevance functions can be used in any context.+    drel -> do+      -- Andreas,, 2018-06-09, issue #2170+      -- irrelevant projections are only allowed if --irrelevant-projections+      ifM (return (isJust $ isProjection_ $ theDef def) `and2M`+           (not .optIrrelevantProjections <$> pragmaOptions)) {-then-} needIrrProj {-else-} $ do+        rel <- asksTC envRelevance+        reportSDoc "tc.irr" 50 $ vcat+          [ "declaration relevance =" <+> text (show drel)+          , "context     relevance =" <+> text (show rel)+          ]+        return $ if (drel `moreRelevant` rel) then Nothing else Just $ DefinitionIsIrrelevant x+  where+  needIrrProj = Just . GenericDocError <$> do+    sep [ "Projection " , prettyTCM x, " is irrelevant."+        , " Turn on option --irrelevant-projections to use it (unsafe)."+        ]++ -- | @checkHeadApplication e t hd args@ checks that @e@ has type @t@, -- assuming that @e@ has the form @hd args@. The corresponding -- type-checked term is returned.@@ -333,26 +377,48 @@ -- -- Precondition: The head @hd@ has to be unambiguous, and there should -- not be any need to insert hidden lambdas.-checkHeadApplication :: A.Expr -> Type -> A.Expr -> [NamedArg A.Expr] -> TCM Term-checkHeadApplication e t hd args = do+checkHeadApplication :: Comparison -> A.Expr -> Type -> A.Expr -> [NamedArg A.Expr] -> TCM Term+checkHeadApplication cmp e t hd args = do   sharp <- fmap nameOfSharp <$> coinductionKit+  conId  <- getNameOfConstrained builtinConId+  pOr    <- getNameOfConstrained builtinPOr+  pComp  <- getNameOfConstrained builtinComp+  pHComp <- getNameOfConstrained builtinHComp+  pTrans <- getNameOfConstrained builtinTrans+  mglue  <- getNameOfConstrained builtin_glue   case hd of     -- Type checking #. The # that the user can write will be a Def, but the     -- sharp we generate in the body of the wrapper is a Con.     A.Def c | Just c == sharp -> checkSharpApplication e t c args++    -- Cubical primitives+    A.Def c | Just c == pComp -> defaultResult' $ Just $ checkPrimComp c+    A.Def c | Just c == pHComp -> defaultResult' $ Just $ checkPrimHComp c+    A.Def c | Just c == pTrans -> defaultResult' $ Just $ checkPrimTrans c+    A.Def c | Just c == conId -> defaultResult' $ Just $ checkConId c+    A.Def c | Just c == pOr   -> defaultResult' $ Just $ checkPOr c+    A.Def c | Just c == mglue -> defaultResult' $ Just $ check_glue c+     _ -> defaultResult   where+  defaultResult :: TCM Term   defaultResult = defaultResult' Nothing+  defaultResult' :: Maybe (MaybeRanges -> Args -> Type -> TCM Args) -> TCM Term   defaultResult' mk = do     (f, t0) <- inferHead hd-    expandLast <- asks envExpandLast-    checkArguments expandLast (getRange hd) args t0 t $ \ vs t1 checkedTarget -> do+    expandLast <- asksTC envExpandLast+    checkArguments expandLast (getRange hd) args t0 t $ \ rs vs t1 checkedTarget -> do       let check = do            k <- mk            as <- allApplyElims vs-           pure $ k as t1+           pure $ k rs as t1+      vs <- case check of+              Just ck -> do+                map Apply <$> ck+              Nothing -> do+                return vs       v <- unfoldInlined (f vs)-      maybe id (\ ck m -> blockTerm t $ ck >> m) check $ coerce' checkedTarget v t1 t+      coerce' cmp checkedTarget v t1 t  ----------------------------------------------------------------------------- -- * Spines@@ -366,10 +432,10 @@     Left err -> throwError err  -- | If we've already checked the target type we don't have to call coerce.-coerce' :: CheckedTarget -> Term -> Type -> Type -> TCM Term-coerce' NotCheckedTarget           v inferred expected = coerce v inferred expected-coerce' (CheckedTarget Nothing)    v _        _        = return v-coerce' (CheckedTarget (Just pid)) v _        expected = blockTermOnProblem expected v pid+coerce' :: Comparison -> CheckedTarget -> Term -> Type -> Type -> TCM Term+coerce' cmp NotCheckedTarget           v inferred expected = coerce cmp v inferred expected+coerce' cmp (CheckedTarget Nothing)    v _        _        = return v+coerce' cmp (CheckedTarget (Just pid)) v _        expected = blockTermOnProblem expected v pid  -- | Check a list of arguments: @checkArgs args t0 t1@ checks that --   @t0 = Delta -> t0'@ and @args : Delta@. Inserts hidden arguments to@@ -378,20 +444,27 @@ --   that have to be solved for everything to be well-formed.  checkArgumentsE :: ExpandHidden -> Range -> [NamedArg A.Expr] -> Type -> Maybe Type ->-                   ExceptT (Elims, [NamedArg A.Expr], Type) TCM (Elims, Type, CheckedTarget)+                   ExceptT (MaybeRanges, Elims, [NamedArg A.Expr], Type) TCM (MaybeRanges, Elims, Type, CheckedTarget) checkArgumentsE = checkArgumentsE' NotCheckedTarget -checkArgumentsE' :: CheckedTarget -> ExpandHidden -> Range -> [NamedArg A.Expr] -> Type ->-                    Maybe Type -> ExceptT (Elims, [NamedArg A.Expr], Type) TCM (Elims, Type, CheckedTarget)+checkArgumentsE'+  :: CheckedTarget     -- ^ Have we already checked the target?+  -> ExpandHidden      -- ^ Insert trailing hidden arguments?+  -> Range             -- ^ Range of the function.+  -> [NamedArg A.Expr] -- ^ Arguments.+  -> Type              -- ^ Type of the function.+  -> Maybe Type        -- ^ Type of the application.+  -> ExceptT (MaybeRanges, Elims, [NamedArg A.Expr], Type) TCM (MaybeRanges, Elims, Type, CheckedTarget)+ -- Case: no arguments, do not insert trailing hidden arguments: We are done.-checkArgumentsE' chk DontExpandLast _ [] t0 _ = return ([], t0, chk)+checkArgumentsE' chk DontExpandLast _ [] t0 _ = return ([], [], t0, chk)  -- Case: no arguments, but need to insert trailing hiddens. checkArgumentsE' chk ExpandLast r [] t0 mt1 =     traceCallE (CheckArguments r [] t0 mt1) $ lift $ do       mt1' <- traverse (unEl <.> reduce) mt1       (us, t) <- implicitArgs (-1) (expand mt1') t0-      return (map Apply us, t, chk)+      return (replicate (length us) Nothing, map Apply us, t, chk)     where       expand (Just (Pi dom _)) Hidden     = not (hidden dom)       expand _                 Hidden     = True@@ -403,12 +476,12 @@ checkArgumentsE' chk exh r args0@(arg@(Arg info e) : args) t0 mt1 =     traceCallE (CheckArguments r args0 t0 mt1) $ do       lift $ reportSDoc "tc.term.args" 30 $ sep-        [ text "checkArgumentsE"---        , text "  args0 =" <+> prettyA args0+        [ "checkArgumentsE"+--        , "  args0 =" <+> prettyA args0         , nest 2 $ vcat-          [ text "e     =" <+> prettyA e-          , text "t0    =" <+> prettyTCM t0-          , text "t1    =" <+> maybe (text "Nothing") prettyTCM mt1+          [ "e     =" <+> prettyA e+          , "t0    =" <+> prettyTCM t0+          , "t1    =" <+> maybe "Nothing" prettyTCM mt1           ]         ]       -- First, insert implicit arguments, depending on current argument @arg@.@@ -419,6 +492,12 @@           -- insert a hidden argument if arg is not hidden or has different name           -- insert an instance argument if arg is not instance  or has different name           expand hy        y = not (sameHiding hy hx) || maybe False (y /=) mx+      reportSDoc "tc.term.args" 30 $ vcat+        [ "calling implicitNamedArgs"+        , nest 2 $ "t0 = " <+> prettyTCM t0+        , nest 2 $ "hx = " <+> text (show hx)+        , nest 2 $ "mx = " <+> maybe "nothing" prettyTCM mx+        ]       (nargs, t) <- lift $ implicitNamedArgs (-1) expand t0       -- Separate names from args.       let (mxs, us) = unzip $ map (\ (Arg ai (Named mx u)) -> (mx, Apply $ Arg ai u)) nargs@@ -430,7 +509,7 @@       t <- lift $ forcePiUsingInjectivity t        -- We are done inserting implicit args.  Now, try to check @arg@.-      ifBlockedType t (\ m t -> throwError (us, args0, t)) $ \ _ t0' -> do+      ifBlockedType t (\ m t -> throwError (replicate (length us) Nothing, us, args0, t)) $ \ _ t0' -> do          -- What can go wrong? @@ -454,6 +533,8 @@               -- c) We inserted implicits, but did not find his one.               | otherwise = lift $ typeError $ WrongNamedArgument arg +        viewPath <- lift pathView'+         -- Check the target type if we can get away with it.         chk' <- lift $           case (chk, mt1) of@@ -462,26 +543,36 @@               TelV tel tgt <- telViewUpTo n t0'               let dep = any (< n) $ IntSet.toList $ freeVars tgt                   vis = all visible (telToList tel)+                  isRigid t | PathType{} <- viewPath t = return False -- Path is not rigid!                   isRigid (El _ (Pi dom _)) = return $ visible dom                   isRigid (El _ (Def d _))  = theDef <$> getConstInfo d >>= return . \ case                     Axiom{}                   -> True+                    DataOrRecSig{}            -> True                     AbstractDefn{}            -> True                     Function{funClauses = cs} -> null cs                     Datatype{}                -> True                     Record{}                  -> True                     Constructor{}             -> __IMPOSSIBLE__+                    GeneralizableVar{}        -> __IMPOSSIBLE__                     Primitive{}               -> False                   isRigid _           = return False               rigid <- isRigid tgt+              -- Andreas, 2019-03-28, issue #3248:+              -- If the target type is SIZELT, we need coerce, leqType is insufficient.+              -- For example, we have i : Size <= (Size< ↑ i), but not Size <= (Size< ↑ i).+              isSizeLt <- reduce t1 >>= isSizeType <&> \case+                Just (BoundedLt _) -> True+                _ -> False               if | dep       -> return chk    -- must be non-dependent                  | not rigid -> return chk    -- with a rigid target                  | not vis   -> return chk    -- and only visible arguments+                 | isSizeLt  -> return chk    -- Issue #3248, not Size<                  | otherwise -> do                   let tgt1 = applySubst (strengthenS __IMPOSSIBLE__ $ size tel) tgt                   reportSDoc "tc.term.args.target" 30 $ vcat-                    [ text "Checking target types first"-                    , nest 2 $ text "inferred =" <+> prettyTCM tgt1-                    , nest 2 $ text "expected =" <+> prettyTCM t1 ]+                    [ "Checking target types first"+                    , nest 2 $ "inferred =" <+> prettyTCM tgt1+                    , nest 2 $ "expected =" <+> prettyTCM t1 ]                   traceCall (CheckTargetType (fuseRange r args0) tgt1 t1) $                     CheckedTarget <$> ifNoConstraints_ (leqType tgt1 t1)                                         (return Nothing) (return . Just)@@ -490,10 +581,11 @@          -- t0' <- lift $ forcePi (getHiding info) (maybe "_" rangedThing $ nameOf e) t0'         case unEl t0' of-          Pi (Dom{domInfo = info', unDom = a}) b-            | sameHiding info info'-              && (visible info || maybe True ((absName b ==) . rangedThing) (nameOf e)) -> do-                u <- lift $ applyRelevanceToContext (getRelevance info') $ do+          Pi (Dom{domInfo = info', domName = dname, unDom = a}) b+            | let name = maybe "_" rangedThing dname,+              sameHiding info info'+              && (visible info || maybe True ((name ==) . rangedThing) (nameOf e)) -> do+                u <- lift $ applyModalityToContext info' $ do                  -- Andreas, 2014-05-30 experiment to check non-dependent arguments                  -- after the spine has been processed.  Allows to propagate type info                  -- from ascribed type into extended-lambdas.  Would solve issue 1159.@@ -507,10 +599,10 @@                  -- Thus, the following naive use violates some invariant.                  -- if not $ isBinderUsed b                  -- then postponeTypeCheckingProblem (CheckExpr (namedThing e) a) (return True) else-                  let e' = e { nameOf = maybe (Just $ unranged $ absName b) Just (nameOf e) }+                  let e' = e { nameOf = maybe dname Just (nameOf e) }                   checkNamedArg (Arg info' e') a                 -- save relevance info' from domain in argument-                addCheckedArgs us (Apply $ Arg info' u) $+                addCheckedArgs us (getRange e) (Apply $ Arg info' u) $                   checkArgumentsE' chk' exh (fuseRange r e) args (absApp b u) mt1             | otherwise -> do                 reportSDoc "error" 10 $ nest 2 $ vcat@@ -520,13 +612,22 @@                   , text $ "nameOf e  = " ++ show (nameOf e)                   ]                 wrongPi+          _+            | visible info+            , PathType s _ _ bA x y <- viewPath t0' -> do+                lift $ reportSDoc "tc.term.args" 30 $ text $ show bA+                u <- lift $ checkExpr (namedThing e) =<< elInf primInterval+                addCheckedArgs us (getRange e) (IApply (unArg x) (unArg y) u) $+                  checkArgumentsE exh (fuseRange r e) args (El s $ unArg bA `apply` [argN u]) mt1           _ -> shouldBePi   where-    addCheckedArgs us u rec = do-        (vs, t, chk) <- rec-        return (us ++ u : vs, t, chk)-      `catchError` \ (vs, es, t) ->-          throwError (us ++ u : vs, es, t)+    addCheckedArgs us r u rec = do+        (rs, vs, t, chk) <- rec+        let rs' = replicate (length us) Nothing ++ Just r : rs+        return (rs', us ++ u : vs, t, chk)+      `catchError` \ (rs, vs, es, t) -> do+          let rs' = replicate (length us) Nothing ++ Just r : rs+          throwError (rs', us ++ u : vs, es, t)  -- | Check that a list of arguments fits a telescope. --   Inserts hidden arguments as necessary.@@ -538,11 +639,11 @@   -> Telescope            -- ^ Telescope to check arguments against.   -> TCM (Elims, Telescope)      -- ^ Checked arguments and remaining telescope if successful.-checkArguments_ exh r args tel = do+checkArguments_ exh r args tel = postponeInstanceConstraints $ do     z <- runExceptT $-      checkArgumentsE exh r args (telePi tel typeDontCare) Nothing+      checkArgumentsE exh r args (telePi tel __DUMMY_TYPE__) Nothing     case z of-      Right (args, t, _) -> do+      Right (_, args, t, _) -> do         let TelV tel' _ = telView' t         return (args, tel')       Left _ -> __IMPOSSIBLE__  -- type cannot be blocked as it is generated by telePi@@ -555,29 +656,29 @@ -- Checks @e := ((_ : t0) args) : t@. checkArguments ::   ExpandHidden -> Range -> [NamedArg A.Expr] -> Type -> Type ->-  (Elims -> Type -> CheckedTarget -> TCM Term) -> TCM Term-checkArguments exph r args t0 t k = do+  (MaybeRanges -> Elims -> Type -> CheckedTarget -> TCM Term) -> TCM Term+checkArguments exph r args t0 t k = postponeInstanceConstraints $ do   z <- runExceptT $ checkArgumentsE exph r args t0 (Just t)   case z of-    Right (vs, t1, pid) -> k vs t1 pid+    Right (rs, vs, t1, pid) -> k rs vs t1 pid       -- vs = evaluated args       -- t1 = remaining type (needs to be subtype of t)     Left problem -> postponeArgs problem exph r args t k       -- if unsuccessful, postpone checking until t0 unblocks -postponeArgs :: (Elims, [NamedArg A.Expr], Type) -> ExpandHidden -> Range -> [NamedArg A.Expr] -> Type ->-                (Elims -> Type -> CheckedTarget -> TCM Term) -> TCM Term-postponeArgs (us, es, t0) exph r args t k = do+postponeArgs :: (MaybeRanges, Elims, [NamedArg A.Expr], Type) -> ExpandHidden -> Range -> [NamedArg A.Expr] -> Type ->+                (MaybeRanges -> Elims -> Type -> CheckedTarget -> TCM Term) -> TCM Term+postponeArgs (rs, us, es, t0) exph r args t k = do   reportSDoc "tc.term.expr.args" 80 $-    sep [ text "postponed checking arguments"+    sep [ "postponed checking arguments"         , nest 4 $ prettyList (map (prettyA . namedThing . unArg) args)-        , nest 2 $ text "against"+        , nest 2 $ "against"         , nest 4 $ prettyTCM t0 ] $$-    sep [ text "progress:"-        , nest 2 $ text "checked" <+> prettyList (map prettyTCM us)-        , nest 2 $ text "remaining" <+> sep [ prettyList (map (prettyA . namedThing . unArg) es)-                                            , nest 2 $ text ":" <+> prettyTCM t0 ] ]-  postponeTypeCheckingProblem_ (CheckArgs exph r es t0 t $ \ vs t pid -> k (us ++ vs) t pid)+    sep [ "progress:"+        , nest 2 $ "checked" <+> prettyList (map prettyTCM us)+        , nest 2 $ "remaining" <+> sep [ prettyList (map (prettyA . namedThing . unArg) es)+                                            , nest 2 $ ":" <+> prettyTCM t0 ] ]+  postponeTypeCheckingProblem_ (CheckArgs exph r es t0 t $ \ rs' vs t pid -> k (rs ++ rs') (us ++ vs) t pid)  ----------------------------------------------------------------------------- -- * Constructors@@ -586,31 +687,31 @@ -- | Check the type of a constructor application. This is easier than --   a general application since the implicit arguments can be inserted --   without looking at the arguments to the constructor.-checkConstructorApplication :: A.Expr -> Type -> ConHead -> [NamedArg A.Expr] -> TCM Term-checkConstructorApplication org t c args = do+checkConstructorApplication :: Comparison -> A.Expr -> Type -> ConHead -> [NamedArg A.Expr] -> TCM Term+checkConstructorApplication cmp org t c args = do   reportSDoc "tc.term.con" 50 $ vcat-    [ text "entering checkConstructorApplication"+    [ "entering checkConstructorApplication"     , nest 2 $ vcat-      [ text "org  =" <+> prettyTCM org-      , text "t    =" <+> prettyTCM t-      , text "c    =" <+> prettyTCM c-      , text "args =" <+> prettyTCM args+      [ "org  =" <+> prettyTCM org+      , "t    =" <+> prettyTCM t+      , "c    =" <+> prettyTCM c+      , "args =" <+> prettyTCM args     ] ]   let paramsGiven = checkForParams args   if paramsGiven then fallback else do-    reportSDoc "tc.term.con" 50 $ text "checkConstructorApplication: no parameters explicitly supplied, continuing..."+    reportSDoc "tc.term.con" 50 $ "checkConstructorApplication: no parameters explicitly supplied, continuing..."     cdef  <- getConInfo c     let Constructor{conData = d, conPars = npars} = theDef cdef-    reportSDoc "tc.term.con" 50 $ nest 2 $ text "d    =" <+> prettyTCM d+    reportSDoc "tc.term.con" 50 $ nest 2 $ "d    =" <+> prettyTCM d     -- Issue 661: t maybe an evaluated form of d .., so we evaluate d     -- as well and then check wether we deal with the same datatype     t0 <- reduce (Def d [])     case (t0, unEl t) of -- Only fully applied constructors get special treatment       (Def d0 _, Def d' es) -> do         let ~(Just vs) = allApplyElims es-        reportSDoc "tc.term.con" 50 $ nest 2 $ text "d0   =" <+> prettyTCM d0-        reportSDoc "tc.term.con" 50 $ nest 2 $ text "d'   =" <+> prettyTCM d'-        reportSDoc "tc.term.con" 50 $ nest 2 $ text "vs   =" <+> prettyTCM vs+        reportSDoc "tc.term.con" 50 $ nest 2 $ "d0   =" <+> prettyTCM d0+        reportSDoc "tc.term.con" 50 $ nest 2 $ "d'   =" <+> prettyTCM d'+        reportSDoc "tc.term.con" 50 $ nest 2 $ "vs   =" <+> prettyTCM vs         if d' /= d0 then fallback else do          -- Issue 661: d' may take more parameters than d, in particular          -- these additional parameters could be a module parameter telescope.@@ -625,29 +726,28 @@            let ps    = take n $ drop (n' - n) vs                ctype = defType cdef            reportSDoc "tc.term.con" 20 $ vcat-             [ text "special checking of constructor application of" <+> prettyTCM c-             , nest 2 $ vcat [ text "ps     =" <+> prettyTCM ps-                             , text "ctype  =" <+> prettyTCM ctype ] ]+             [ "special checking of constructor application of" <+> prettyTCM c+             , nest 2 $ vcat [ "ps     =" <+> prettyTCM ps+                             , "ctype  =" <+> prettyTCM ctype ] ]            let ctype' = ctype `piApply` ps-           reportSDoc "tc.term.con" 20 $ nest 2 $ text "ctype' =" <+> prettyTCM ctype'+           reportSDoc "tc.term.con" 20 $ nest 2 $ "ctype' =" <+> prettyTCM ctype'            -- get the parameter names            let TelV ptel _ = telView'UpTo n ctype            let pnames = map (fmap fst) $ telToList ptel            -- drop the parameter arguments                args' = dropArgs pnames args            -- check the non-parameter arguments-           expandLast <- asks envExpandLast-           checkArguments expandLast (getRange c) args' ctype' t $ \ es t' targetCheck -> do-             let us = fromMaybe __IMPOSSIBLE__ (allApplyElims es)+           expandLast <- asksTC envExpandLast+           checkArguments expandLast (getRange c) args' ctype' t $ \ rs es t' targetCheck -> do              reportSDoc "tc.term.con" 20 $ nest 2 $ vcat-               [ text "us     =" <+> prettyTCM us+               [ text "es     =" <+> prettyTCM es                , text "t'     =" <+> prettyTCM t' ]-             coerce' targetCheck (Con c ConOCon (map Apply us)) t' t+             coerce' cmp targetCheck (Con c ConOCon es) t' t       _ -> do-        reportSDoc "tc.term.con" 50 $ nest 2 $ text "we are not at a datatype, falling back"+        reportSDoc "tc.term.con" 50 $ nest 2 $ "we are not at a datatype, falling back"         fallback   where-    fallback = checkHeadApplication org t (A.Con (unambiguous $ conName c)) args+    fallback = checkHeadApplication cmp org t (A.Con (unambiguous $ conName c)) args      -- Check if there are explicitly given hidden arguments,     -- in which case we fall back to default type checking.@@ -683,12 +783,12 @@ -- | Returns an unblocking action in case of failure. disambiguateConstructor :: NonemptyList QName -> Type -> TCM (Either (TCM Bool) ConHead) disambiguateConstructor cs0 t = do-  reportSLn "tc.check.term" 40 $ "Ambiguous constructor: " ++ prettyShow cs0+  reportSLn "tc.check.term.con" 40 $ "Ambiguous constructor: " ++ prettyShow cs0    -- Get the datatypes of the various constructors   let getData Constructor{conData = d} = d       getData _                        = __IMPOSSIBLE__-  reportSLn "tc.check.term" 40 $ "  ranges before: " ++ show (getRange cs0)+  reportSLn "tc.check.term.con" 40 $ "  ranges before: " ++ show (getRange cs0)   -- We use the reduced constructor when disambiguating, but   -- the original constructor for type checking. This is important   -- since they may have different types (different parameters).@@ -696,12 +796,12 @@   -- Andreas, 2017-08-13, issue #2686: ignore abstract constructors   (cs, cons)  <- unzip . snd . partitionEithers <$> do      forM (toList cs0) $ \ c -> mapRight (c,) <$> getConForm c-  reportSLn "tc.check.term" 40 $ "  reduced: " ++ prettyShow cons+  reportSLn "tc.check.term.con" 40 $ "  reduced: " ++ prettyShow cons   case cons of     []    -> typeError $ AbstractConstructorNotInScope $ headNe cs0     [con] -> do       let c = setConName (fromMaybe __IMPOSSIBLE__ $ headMaybe cs) con-      reportSLn "tc.check.term" 40 $ "  only one non-abstract constructor: " ++ prettyShow c+      reportSLn "tc.check.term.con" 40 $ "  only one non-abstract constructor: " ++ prettyShow c       storeDisambiguatedName $ conName c       return (Right c)     _   -> do@@ -715,12 +815,12 @@             TelV tel t1 <- telView t             addContext tel $ do              reportSDoc "tc.check.term.con" 40 $ nest 2 $-               text "target type: " <+> prettyTCM t1+               "target type: " <+> prettyTCM t1              ifBlockedType t1 (\ m t -> return Nothing) $ \ _ t' ->                caseMaybeM (isDataOrRecord $ unEl t') (badCon t') $ \ d ->                  case [ c | (d', c) <- dcs, d == d' ] of                    [c] -> do-                     reportSLn "tc.check.term" 40 $ "  decided on: " ++ prettyShow c+                     reportSLn "tc.check.term.con" 40 $ "  decided on: " ++ prettyShow c                      storeDisambiguatedName $ conName c                      return $ Just c                    []  -> badCon $ t' $> Def d []@@ -744,11 +844,19 @@ -- | Checking the type of an overloaded projection application. --   See 'inferOrCheckProjApp'. -checkProjApp  :: A.Expr -> ProjOrigin -> NonemptyList QName -> A.Args -> Type -> TCM Term-checkProjApp e o ds args0 t = do-  (v, ti, targetCheck) <- inferOrCheckProjApp e o ds args0 (Just t)-  coerce' targetCheck v ti t+checkProjApp  :: Comparison -> A.Expr -> ProjOrigin -> NonemptyList QName -> A.Args -> Type -> TCM Term+checkProjApp cmp e o ds args0 t = do+  (v, ti, targetCheck) <- inferOrCheckProjApp e o ds args0 (Just (cmp, t))+  coerce' cmp targetCheck v ti t +-- | Checking the type of an overloaded projection application.+--   See 'inferOrCheckProjAppToKnownPrincipalArg'.++checkProjAppToKnownPrincipalArg  :: Comparison -> A.Expr -> ProjOrigin -> NonemptyList QName -> A.Args -> Type -> Int -> Term -> Type -> TCM Term+checkProjAppToKnownPrincipalArg cmp e o ds args0 t k v0 pt = do+  (v, ti, targetCheck) <- inferOrCheckProjAppToKnownPrincipalArg e o ds args0 (Just (cmp, t)) k v0 pt+  coerce' cmp targetCheck v ti t+ -- | Inferring or Checking an overloaded projection application. -- --   The overloaded projection is disambiguated by inferring the type of its@@ -763,33 +871,26 @@      -- ^ The projection name (potentially ambiguous).   -> A.Args      -- ^ The arguments to the projection.-  -> Maybe Type+  -> Maybe (Comparison, Type)      -- ^ The expected type of the expression (if 'Nothing', infer it).   -> TCM (Term, Type, CheckedTarget)      -- ^ The type-checked expression and its type (if successful). inferOrCheckProjApp e o ds args mt = do   reportSDoc "tc.proj.amb" 20 $ vcat-    [ text "checking ambiguous projection"+    [ "checking ambiguous projection"     , text $ "  ds   = " ++ prettyShow ds     , text   "  args = " <+> sep (map prettyTCM args)-    , text   "  t    = " <+> caseMaybe mt (text "Nothing") prettyTCM+    , text   "  t    = " <+> caseMaybe mt "Nothing" prettyTCM     ] -  let refuse :: String -> TCM a-      refuse reason = typeError $ GenericError $-        "Cannot resolve overloaded projection "-        ++ prettyShow (A.nameConcrete $ A.qnameName $ headNe ds)-        ++ " because " ++ reason-      refuseNotApplied = refuse "it is not applied to a visible argument"-      refuseNoMatching = refuse "no matching candidate found"-      refuseNotRecordType = refuse "principal argument is not of record type"+  let cmp = caseMaybe mt CmpEq fst        -- Postpone the whole type checking problem       -- if type of principal argument (or the type where we get it from)       -- is blocked by meta m.       postpone m = do-        tc <- caseMaybe mt newTypeMeta_ return-        v <- postponeTypeCheckingProblem (CheckExpr e tc) $ isInstantiatedMeta m+        tc <- caseMaybe mt newTypeMeta_ (return . snd)+        v <- postponeTypeCheckingProblem (CheckExpr cmp e tc) $ isInstantiatedMeta m         return (v, tc, NotCheckedTarget)    -- The following cases need to be considered:@@ -804,23 +905,23 @@      -- Case: we have no visible argument to the projection.     -- In inference mode, we really need the visible argument, postponing does not help-    [] -> caseMaybe mt refuseNotApplied $ \ t -> do+    [] -> caseMaybe mt (refuseProjNotApplied ds) $ \ (cmp , t) -> do       -- If we have the type, we can try to get the type of the principal argument.       -- It is the first visible argument.       TelV _ptel core <- telViewUpTo' (-1) (not . visible) t       ifBlockedType core (\ m _ -> postpone m) $ {-else-} \ _ core -> do-      ifNotPiType core (\ _ -> refuseNotApplied) $ {-else-} \ dom _b -> do+      ifNotPiType core (\ _ -> refuseProjNotApplied ds) $ {-else-} \ dom _b -> do       ifBlockedType (unDom dom) (\ m _ -> postpone m) $ {-else-} \ _ ta -> do-      caseMaybeM (isRecordType ta) refuseNotRecordType $ \ (_q, _pars, defn) -> do+      caseMaybeM (isRecordType ta) (refuseProjNotRecordType ds) $ \ (_q, _pars, defn) -> do       case defn of         Record { recFields = fs } -> do-          case catMaybes $ for fs $ \ (Arg _ f) -> List.find (f ==) (toList ds) of-            [] -> refuseNoMatching+          case forMaybe fs $ \ (Arg _ f) -> List.find (f ==) (toList ds) of+            [] -> refuseProjNoMatching ds             [d] -> do               storeDisambiguatedName d               -- checkHeadApplication will check the target type               (, t, CheckedTarget Nothing) <$>-                checkHeadApplication e t (A.Proj o $ unambiguous d) args+                checkHeadApplication cmp e t (A.Proj o $ unambiguous d) args             _ -> __IMPOSSIBLE__         _ -> __IMPOSSIBLE__ @@ -828,101 +929,128 @@     ((k, arg) : _) -> do       (v0, ta) <- inferExpr $ namedArg arg       reportSDoc "tc.proj.amb" 25 $ vcat-        [ text "  principal arg " <+> prettyTCM arg-        , text "  has type "      <+> prettyTCM ta+        [ "  principal arg " <+> prettyTCM arg+        , "  has type "      <+> prettyTCM ta         ]-      -- ta should be a record type (after introducing the hidden args in v0)-      (vargs, ta) <- implicitArgs (-1) (not . visible) ta-      let v = v0 `apply` vargs-      ifBlockedType ta (\ m _ -> postpone m) {-else-} $ \ _ ta -> do-      caseMaybeM (isRecordType ta) refuseNotRecordType $ \ (q, _pars0, _) -> do+      inferOrCheckProjAppToKnownPrincipalArg e o ds args mt k v0 ta -          -- try to project it with all of the possible projections-          let try d = do-                reportSDoc "tc.proj.amb" 30 $ vcat-                  [ text $ "trying projection " ++ prettyShow d-                  , text "  td  = " <+> caseMaybeM (getDefType d ta) (text "Nothing") prettyTCM-                  ]+-- | Same arguments 'inferOrCheckProjApp' above but also gets the position,+--   value and type of the principal argument.+inferOrCheckProjAppToKnownPrincipalArg ::+  A.Expr -> ProjOrigin -> NonemptyList QName -> A.Args -> Maybe (Comparison, Type) ->+  Int -> Term -> Type -> TCM (Term, Type, CheckedTarget)+inferOrCheckProjAppToKnownPrincipalArg e o ds args mt k v0 ta = do+  let cmp = caseMaybe mt CmpEq fst+      postpone m = do+        tc <- caseMaybe mt newTypeMeta_ (return . snd)+        v <- postponeTypeCheckingProblem (CheckProjAppToKnownPrincipalArg cmp e o ds args tc k v0 ta) $ isInstantiatedMeta m+        return (v, tc, NotCheckedTarget)+  -- ta should be a record type (after introducing the hidden args in v0)+  (vargs, ta) <- implicitArgs (-1) (not . visible) ta+  let v = v0 `apply` vargs+  ifBlockedType ta (\ m _ -> postpone m) {-else-} $ \ _ ta -> do+  caseMaybeM (isRecordType ta) (refuseProjNotRecordType ds) $ \ (q, _pars0, _) -> do -                -- get the original projection name-                isP <- isProjection d-                reportSDoc "tc.proj.amb" 40 $ vcat $-                  [ text $ "  isProjection = " ++ caseMaybe isP "no" (const "yes")-                  ] ++ caseMaybe isP [] (\ Projection{ projProper = proper, projOrig = orig } ->-                  [ text $ "  proper       = " ++ show proper-                  , text $ "  orig         = " ++ prettyShow orig-                  ])+      -- try to project it with all of the possible projections+      let try d = do+            reportSDoc "tc.proj.amb" 30 $ vcat+              [ text $ "trying projection " ++ prettyShow d+              , "  td  = " <+> caseMaybeM (getDefType d ta) "Nothing" prettyTCM+              ] -                -- Andreas, 2017-01-21, issue #2422-                -- The scope checker considers inherited projections (from nested records)-                -- as projections and allows overloading.  However, since they are defined-                -- as *composition* of projections, the type checker does *not* recognize them,-                -- and @isP@ will be @Nothing@.-                -- However, we can ignore this, as we only need the @orig@inal projection name-                -- for removing false ambiguity.  Thus, we skip these checks:+            -- get the original projection name+            def <- lift $ getConstInfo d+            let isP = isProjection_ $ theDef def+            reportSDoc "tc.proj.amb" 40 $ vcat $+              [ text $ "  isProjection = " ++ caseMaybe isP "no" (const "yes")+              ] ++ caseMaybe isP [] (\ Projection{ projProper = proper, projOrig = orig } ->+              [ text $ "  proper       = " ++ show proper+              , text $ "  orig         = " ++ prettyShow orig+              ]) -                -- Projection{ projProper = proper, projOrig = orig } <- MaybeT $ return isP-                -- guard $ isJust proper-                let orig = caseMaybe isP d projOrig+            -- Andreas, 2017-01-21, issue #2422+            -- The scope checker considers inherited projections (from nested records)+            -- as projections and allows overloading.  However, since they are defined+            -- as *composition* of projections, the type checker does *not* recognize them,+            -- and @isP@ will be @Nothing@.+            -- However, we can ignore this, as we only need the @orig@inal projection name+            -- for removing false ambiguity.  Thus, we skip these checks: -                -- try to eliminate-                (dom, u, tb) <- MaybeT (projectTyped v ta o d `catchError` \ _ -> return Nothing)-                reportSDoc "tc.proj.amb" 30 $ vcat-                  [ text "  dom = " <+> prettyTCM dom-                  , text "  u   = " <+> prettyTCM u-                  , text "  tb  = " <+> prettyTCM tb-                  ]-                (q', pars, _) <- MaybeT $ isRecordType $ unDom dom-                reportSDoc "tc.proj.amb" 30 $ vcat-                  [ text "  q   = " <+> prettyTCM q-                  , text "  q'  = " <+> prettyTCM q'-                  ]-                guard (q == q')-                -- Get the type of the projection and check-                -- that the first visible argument is the record value.-                tfull <- lift $ defType <$> getConstInfo d-                TelV tel _ <- lift $ telViewUpTo' (-1) (not . visible) tfull-                reportSDoc "tc.proj.amb" 30 $ vcat-                  [ text $ "  size tel  = " ++ show (size tel)-                  , text $ "  size pars = " ++ show (size pars)-                  ]-                -- See issue 1960 for when the following assertion fails for-                -- the correct disambiguation.-                -- guard (size tel == size pars)-                return (orig, (d, (pars, (dom, u, tb))))+            -- Projection{ projProper = proper, projOrig = orig } <- MaybeT $ return isP+            -- guard $ isJust proper+            let orig = caseMaybe isP d projOrig -          cands <- groupOn fst . catMaybes <$> mapM (runMaybeT . try) (toList ds)-          case cands of-            [] -> refuseNoMatching-            [[]] -> refuseNoMatching-            (_:_:_) -> refuse $ "several matching candidates found: "-                 ++ prettyShow (map (fst . snd) $ concat cands)-            -- case: just one matching projection d-            -- the term u = d v-            -- the type tb is the type of this application-            [ (_orig, (d, (pars, (_dom,u,tb)))) : _ ] -> do-              storeDisambiguatedName d+            -- try to eliminate+            (dom, u, tb) <- MaybeT (projectTyped v ta o d `catchError` \ _ -> return Nothing)+            reportSDoc "tc.proj.amb" 30 $ vcat+              [ "  dom = " <+> prettyTCM dom+              , "  u   = " <+> prettyTCM u+              , "  tb  = " <+> prettyTCM tb+              ]+            (q', pars, _) <- MaybeT $ isRecordType $ unDom dom+            reportSDoc "tc.proj.amb" 30 $ vcat+              [ "  q   = " <+> prettyTCM q+              , "  q'  = " <+> prettyTCM q'+              ]+            guard (q == q')+            -- Get the type of the projection and check+            -- that the first visible argument is the record value.+            let tfull = defType def+            TelV tel _ <- lift $ telViewUpTo' (-1) (not . visible) tfull+            reportSDoc "tc.proj.amb" 30 $ vcat+              [ text $ "  size tel  = " ++ show (size tel)+              , text $ "  size pars = " ++ show (size pars)+              ]+            -- See issue 1960 for when the following assertion fails for+            -- the correct disambiguation.+            -- guard (size tel == size pars) -              -- Check parameters-              tfull <- typeOfConst d-              (_,_) <- checkKnownArguments (take k args) pars tfull+            guard =<< do isNothing <$> do lift $ checkRelevance' d def+            return (orig, (d, (pars, (dom, u, tb)))) -              -- Check remaining arguments-              let r     = getRange e-                  args' = drop (k + 1) args-              z <- runExceptT $ checkArgumentsE ExpandLast r args' tb mt-              case z of-                Right (us, trest, targetCheck) -> return (u `applyE` us, trest, targetCheck)-                Left problem -> do-                  -- In the inference case:-                  -- To create a postponed type checking problem,-                  -- we do not use typeDontCare, but create a meta.-                  tc <- caseMaybe mt newTypeMeta_ return-                  v  <- postponeArgs problem ExpandLast r args' tc $ \ us trest targetCheck ->-                          coerce' targetCheck (u `applyE` us) trest tc+      cands <- groupOn fst . catMaybes <$> mapM (runMaybeT . try) (toList ds)+      case cands of+        [] -> refuseProjNoMatching ds+        [[]] -> refuseProjNoMatching ds+        (_:_:_) -> refuseProj ds $ "several matching candidates found: "+             ++ prettyShow (map (fst . snd) $ concat cands)+        -- case: just one matching projection d+        -- the term u = d v+        -- the type tb is the type of this application+        [ (_orig, (d, (pars, (_dom,u,tb)))) : _ ] -> do+          storeDisambiguatedName d -                  return (v, tc, NotCheckedTarget)+          -- Check parameters+          tfull <- typeOfConst d+          (_,_) <- checkKnownArguments (take k args) pars tfull +          -- Check remaining arguments+          let r     = getRange e+              args' = drop (k + 1) args+          z <- runExceptT $ checkArgumentsE ExpandLast r args' tb (snd <$> mt)+          case z of+            Right (rs, us, trest, targetCheck) -> return (u `applyE` us, trest, targetCheck)+            Left problem -> do+              -- In the inference case:+              -- To create a postponed type checking problem,+              -- we do not use typeDontCare, but create a meta.+              tc <- caseMaybe mt newTypeMeta_ (return . snd)+              v  <- postponeArgs problem ExpandLast r args' tc $ \ rs us trest targetCheck ->+                      coerce' cmp targetCheck (u `applyE` us) trest tc++              return (v, tc, NotCheckedTarget)++refuseProj :: NonemptyList QName -> String -> TCM a+refuseProj ds reason = typeError $ GenericError $+        "Cannot resolve overloaded projection "+        ++ prettyShow (A.nameConcrete $ A.qnameName $ headNe ds)+        ++ " because " ++ reason++refuseProjNotApplied, refuseProjNoMatching, refuseProjNotRecordType :: NonemptyList QName -> TCM a+refuseProjNotApplied    ds = refuseProj ds "it is not applied to a visible argument"+refuseProjNoMatching    ds = refuseProj ds "no matching candidate found"+refuseProjNotRecordType ds = refuseProj ds "principal argument is not of record type"+ ----------------------------------------------------------------------------- -- * Coinduction -----------------------------------------------------------------------------@@ -959,8 +1087,8 @@                            (freshName_ name)      -- Define and type check the fresh function.-    rel <- asks envRelevance-    abs <- aModeToDef <$> asks envAbstractMode+    rel <- asksTC envRelevance+    abs <- aModeToDef <$> asksTC envAbstractMode     let info   = A.mkDefInfo (A.nameConcrete $ A.qnameName c') noFixity'                              PublicAccess abs noRange         core   = A.LHSProj { A.lhsDestructor = unambiguous flat@@ -985,12 +1113,12 @@     reportSDoc "tc.term.expr.coind" 15 $ do       def <- theDef <$> getConstInfo c'       vcat $-        [ text "The coinductive wrapper"-        , nest 2 $ prettyTCM rel <> prettyTCM c' <+> text ":"+        [ "The coinductive wrapper"+        , nest 2 $ prettyTCM rel <> prettyTCM c' <+> ":"         , nest 4 $ prettyTCM t         , nest 2 $ prettyA clause-        , text "The definition is" <+> text (show $ funDelayed def) <>-          text "."+        , "The definition is" <+> text (show $ funDelayed def) <>+          "."         ]     return c' @@ -999,11 +1127,170 @@   e' <- Def wrapper . map Apply <$> getContextArgs    reportSDoc "tc.term.expr.coind" 15 $ vcat $-      [ text "The coinductive constructor application"+      [ "The coinductive constructor application"       , nest 2 $ prettyTCM e-      , text "was translated into the application"+      , "was translated into the application"       , nest 2 $ prettyTCM e'       ]    blockTerm t $ e' <$ workOnTypes (leqType forcedType t) +-----------------------------------------------------------------------------+-- * Cubical+-----------------------------------------------------------------------------++-- | "pathAbs (PathView s _ l a x y) t" builds "(\ t) : pv"+--   Preconditions: PathView is PathType, and t[i0] = x, t[i1] = y+pathAbs :: PathView -> Abs Term -> TCM Term+pathAbs (OType _) t = __IMPOSSIBLE__+pathAbs (PathType s path l a x y) t = do+  return $ Lam defaultArgInfo t++-- | @primComp : ∀ {ℓ} (A : (i : I) → Set (ℓ i)) (φ : I) (u : ∀ i → Partial φ (A i)) (a : A i0) → A i1@+--+--   Check:  @u i0 = (λ _ → a) : Partial φ (A i0)@.+--+checkPrimComp :: QName -> MaybeRanges -> Args -> Type -> TCM Args+checkPrimComp c rs vs _ = do+  case vs of+    -- WAS: [l, a, phi, u, a0] -> do+    l : a : phi : u : a0 : rest -> do+      iz <- Arg defaultArgInfo <$> intervalUnview IZero+      let lz = unArg l `apply` [iz]+          az = unArg a `apply` [iz]+      ty <- elInf $ primPartial <#> (pure $ unArg l `apply` [iz]) <@> (pure $ unArg phi) <@> (pure $ unArg a `apply` [iz])+      bAz <- el' (pure $ lz) (pure $ az)+      a0 <- blockArg bAz (rs !!! 4) a0 $ do+        equalTerm ty -- (El (getSort t1) (apply (unArg a) [iz]))+          (Lam defaultArgInfo $ NoAbs "_" $ unArg a0)+          (apply (unArg u) [iz])+      return $ l : a : phi : u : a0 : rest+    _ -> typeError $ GenericError $ show c ++ " must be fully applied"++-- | @primHComp : ∀ {ℓ} {A : Set ℓ} {φ : I} (u : ∀ i → Partial φ A) (a : A) → A@+--+--   Check:  @u i0 = (λ _ → a) : Partial φ A@.+--+checkPrimHComp :: QName -> MaybeRanges -> Args -> Type -> TCM Args+checkPrimHComp c rs vs _ = do+  case vs of+    -- WAS: [l, a, phi, u, a0] -> do+    l : a : phi : u : a0 : rest -> do+      -- iz = i0+      iz <- Arg defaultArgInfo <$> intervalUnview IZero+      -- ty = Partial φ A+      ty <- elInf $ primPartial <#> (pure $ unArg l) <@> (pure $ unArg phi) <@> (pure $ unArg a)+      -- (λ _ → a) = u i0 : ty+      bA <- el' (pure $ unArg l) (pure $ unArg a)+      a0 <- blockArg bA (rs !!! 4) a0 $ do+        equalTerm ty -- (El (getSort t1) (apply (unArg a) [iz]))+            (Lam defaultArgInfo $ NoAbs "_" $ unArg a0)+            (apply (unArg u) [iz])+      return $ l : a : phi : u : a0 : rest+    _ -> typeError $ GenericError $ show c ++ " must be fully applied"++-- | @transp : ∀{ℓ} (A : (i : I) → Set (ℓ i)) (φ : I) (a0 : A i0) → A i1@+--+--   Check:  If φ, then @A i = A i0 : Set (ℓ i)@ must hold for all @i : I@.+--+checkPrimTrans :: QName -> MaybeRanges -> Args -> Type -> TCM Args+checkPrimTrans c rs vs _ = do+  case vs of+    -- Andreas, 2019-03-02, issue #3601, why exactly 4 arguments?+    -- Only 3 are needed to check the side condition.+    -- WAS:+    -- [l, a, phi, a0] -> do+    l : a : phi : rest -> do+      iz <- Arg defaultArgInfo <$> intervalUnview IZero+      -- ty = (i : I) -> Set (l i)+      ty <- runNamesT [] $ do+        l <- open $ unArg l+        nPi' "i" (elInf $ cl primInterval) $ \ i -> (sort . tmSort <$> (l <@> i))+      a <- blockArg ty (rs !!! 1) a $ do+        equalTermOnFace (unArg phi) ty+          (unArg a)+          (Lam defaultArgInfo $ NoAbs "_" $ apply (unArg a) [iz])+      return $ l : a : phi : rest+    _ -> typeError $ GenericError $ show c ++ " must be fully applied"++blockArg :: HasRange r => Type -> r -> Arg Term -> TCM () -> TCM (Arg Term)+blockArg t r a m =+  setCurrentRange (getRange $ r) $ fmap (a $>) $ blockTerm t $ m >> return (unArg a)++checkConId :: QName -> MaybeRanges -> Args -> Type -> TCM Args+checkConId c rs vs t1 = do+  case vs of+   args@[_, _, _, _, phi, p] -> do+      iv@(PathType s _ l a x y) <- idViewAsPath t1+      let ty = pathUnview iv+      -- the following duplicates reduction of phi+      const_x <- blockTerm ty $ do+          equalTermOnFace (unArg phi) (El s (unArg a)) (unArg x) (unArg y)+          pathAbs iv (NoAbs (stringToArgName "_") (unArg x))+      p <- blockArg ty (rs !!! 5) p $ do+        equalTermOnFace (unArg phi) ty (unArg p) const_x   -- G, phi |- p = \ i . x+      return $ init args ++ [p]+      -- phi <- reduce phi+      -- forallFaceMaps (unArg phi) $ \ alpha -> do+      --   iv@(PathType s _ l a x y) <- idViewAsPath (applySubst alpha t1)+      --   let ty = pathUnview iv+      --   equalTerm (El s (unArg a)) (unArg x) (unArg y) -- precondition for cx being well-typed at ty+      --   cx <- pathAbs iv (NoAbs (stringToArgName "_") (applySubst alpha (unArg x)))+      --   equalTerm ty (applySubst alpha (unArg p)) cx   -- G, phi |- p = \ i . x+   _ -> typeError $ GenericError $ show c ++ " must be fully applied"+++-- The following comment contains silly ' escapes to calm CPP about ∨ (\vee).+-- May not be haddock-parseable.++-- ' @primPOr : ∀ {ℓ} (φ₁ φ₂ : I) {A : Partial (φ₁ ∨ φ₂) (Set ℓ)}+-- '         → (u : PartialP φ₁ (λ (o : IsOne φ₁) → A (IsOne1 φ₁ φ₂ o)))+-- '         → (v : PartialP φ₂ (λ (o : IsOne φ₂) → A (IsOne2 φ₁ φ₂ o)))+-- '         → PartialP (φ₁ ∨ φ₂) A@+-- '+-- ' Checks: @u = v : PartialP (φ₁ ∨ φ₂) A@ whenever @IsOne (φ₁ ∧ φ₂)@.+checkPOr :: QName -> MaybeRanges -> Args -> Type -> TCM Args+checkPOr c rs vs _ = do+  case vs of+   l : phi1 : phi2 : a : u : v : rest -> do+      phi <- intervalUnview (IMin phi1 phi2)+      reportSDoc "tc.term.por" 10 $ text (show phi)+      -- phi <- reduce phi+      -- alphas <- toFaceMaps phi+      -- reportSDoc "tc.term.por" 10 $ text (show alphas)+      t1 <- runNamesT [] $ do+             [l,a] <- mapM (open . unArg) [l,a]+             psi <- open =<< intervalUnview (IMax phi1 phi2)+             pPi' "o" psi $ \ o -> el' l (a <..> o)+      tv <- runNamesT [] $ do+             [l,a,phi1,phi2] <- mapM (open . unArg) [l,a,phi1,phi2]+             pPi' "o" phi2 $ \ o -> el' l (a <..> (cl primIsOne2 <@> phi1 <@> phi2 <@> o))+      v <- blockArg tv (rs !!! 5) v $ do+        -- ' φ₁ ∧ φ₂  ⊢ u , v : PartialP (φ₁ ∨ φ₂) \ o → a o+        equalTermOnFace phi t1 (unArg u) (unArg v)+      return $ l : phi1 : phi2 : a : u : v : rest+   _ -> typeError $ GenericError $ show c ++ " must be fully applied"++-- | @prim^glue : ∀ {ℓ ℓ'} {A : Set ℓ} {φ : I}+--              → {T : Partial φ (Set ℓ')} → {e : PartialP φ (λ o → T o ≃ A)}+--              → (t : PartialP φ T) → (a : A) → primGlue A T e@+--+--   Check   @φ ⊢ a = t 1=1@  or actually the equivalent:  @(\ _ → a) = t : PartialP φ T@+check_glue :: QName -> MaybeRanges -> Args -> Type -> TCM Args+check_glue c rs vs _ = do+  case vs of+   -- WAS: [la, lb, bA, phi, bT, e, t, a] -> do+   la : lb : bA : phi : bT : e : t : a : rest -> do+      let iinfo = setRelevance Irrelevant defaultArgInfo+      v <- runNamesT [] $ do+            [lb, la, bA, phi, bT, e, t] <- mapM (open . unArg) [lb, la, bA, phi, bT, e, t]+            let f o = cl primEquivFun <#> lb <#> la <#> (bT <..> o) <#> bA <@> (e <..> o)+            glam iinfo "o" $ \ o -> f o <@> (t <..> o)+      ty <- runNamesT [] $ do+            [lb, phi, bA] <- mapM (open . unArg) [lb, phi, bA]+            elInf $ cl primPartialP <#> lb <@> phi <@> (glam iinfo "o" $ \ _ -> bA)+      let a' = Lam iinfo (NoAbs "o" $ unArg a)+      ta <- el' (pure $ unArg la) (pure $ unArg bA)+      a <- blockArg ta (rs !!! 7) a $ equalTerm ty a' v+      return $ la : lb : bA : phi : bT : e : t : a : rest+   _ -> typeError $ GenericError $ show c ++ " must be fully applied"
src/full/Agda/TypeChecking/Rules/Application.hs-boot view
@@ -1,19 +1,21 @@  module Agda.TypeChecking.Rules.Application where -import Agda.Syntax.Common (NamedArg)+import Agda.Syntax.Common (NamedArg, ProjOrigin) import qualified Agda.Syntax.Abstract as A import Agda.Syntax.Internal import Agda.Syntax.Position import Agda.TypeChecking.Monad.Base+import Agda.Utils.NonemptyList  checkArguments :: ExpandHidden -> Range -> [NamedArg A.Expr] -> Type -> Type ->-                  (Elims -> Type -> CheckedTarget -> TCM Term) -> TCM Term+                  ([Maybe Range] -> Elims -> Type -> CheckedTarget -> TCM Term) -> TCM Term  checkArguments_ :: ExpandHidden -> Range -> [NamedArg A.Expr] -> Telescope ->                    TCM (Elims, Telescope) -checkApplication :: A.Expr -> A.Args -> A.Expr -> Type -> TCM Term+checkApplication :: Comparison -> A.Expr -> A.Args -> A.Expr -> Type -> TCM Term  inferApplication :: ExpandHidden -> A.Expr -> A.Args -> A.Expr -> TCM (Term, Type) +checkProjAppToKnownPrincipalArg  :: Comparison -> A.Expr -> ProjOrigin -> NonemptyList QName -> A.Args -> Type -> Int -> Term -> Type -> TCM Term
src/full/Agda/TypeChecking/Rules/Builtin.hs view
@@ -4,6 +4,7 @@ module Agda.TypeChecking.Rules.Builtin   ( bindBuiltin   , bindBuiltinNoDef+  , builtinKindOfName   , bindPostulatedName   , isUntypedBuiltin   , bindUntypedBuiltin@@ -16,6 +17,8 @@ import Data.List (find, sortBy) import Data.Function (on) +import Agda.Interaction.Options (optSizedTypes)+ import qualified Agda.Syntax.Abstract as A import qualified Agda.Syntax.Abstract.Views as A import Agda.Syntax.Common@@ -33,7 +36,9 @@ import Agda.TypeChecking.EtaContract import Agda.TypeChecking.Functions import Agda.TypeChecking.Irrelevance+import Agda.TypeChecking.Names import Agda.TypeChecking.Primitive+import Agda.TypeChecking.Positivity.Occurrence import Agda.TypeChecking.Reduce import Agda.TypeChecking.Substitute import Agda.TypeChecking.Telescope@@ -50,6 +55,7 @@ import Agda.Utils.Monad import Agda.Utils.NonemptyList import Agda.Utils.Null+import Agda.Utils.Permutation import Agda.Utils.Size  #include "undefined.h"@@ -62,6 +68,9 @@ builtinPostulate :: TCM Type -> BuiltinDescriptor builtinPostulate = BuiltinPostulate Relevant +builtinPostulateC :: TCM Type -> BuiltinDescriptor+builtinPostulateC m = BuiltinPostulate Relevant $ requireCubical >> m+ findBuiltinInfo :: String -> Maybe BuiltinInfo findBuiltinInfo b = find ((b ==) . builtinName) coreBuiltins @@ -73,6 +82,14 @@   , (builtinArgInfo            |-> BuiltinData tset [builtinArgArgInfo])   , (builtinBool               |-> BuiltinData tset [builtinTrue, builtinFalse])   , (builtinNat                |-> BuiltinData tset [builtinZero, builtinSuc])+  , (builtinSigma              |-> BuiltinData (runNamesT [] $+                                                hPi' "la" (el $ cl primLevel) $ \ a ->+                                                hPi' "lb" (el $ cl primLevel) $ \ b ->+                                                nPi' "A" (sort . tmSort <$> a) $ \bA ->+                                                nPi' "B" (el' a bA --> (sort . tmSort <$> b)) $ \bB ->+                                                ((sort . tmSort) <$> (cl primLevelMax <@> a <@> b))+                                                )+                                               ["SIGMACON"])   , (builtinUnit               |-> BuiltinData tset [builtinUnitUnit])  -- actually record, but they are treated the same   , (builtinAgdaLiteral        |-> BuiltinData tset [builtinAgdaLitNat, builtinAgdaLitWord64, builtinAgdaLitFloat,                                                      builtinAgdaLitChar, builtinAgdaLitString,@@ -96,6 +113,103 @@   , (builtinQName              |-> builtinPostulate tset)   , (builtinAgdaMeta           |-> builtinPostulate tset)   , (builtinIO                 |-> builtinPostulate (tset --> tset))+  , (builtinPath               |-> BuiltinUnknown+                                               (Just $ requireCubical >>+                                               (hPi "a" (el primLevel) $+                                                hPi "A" (return $ sort $ varSort 0) $+                                                (El (varSort 1) <$> varM 0) -->+                                                (El (varSort 1) <$> varM 0) -->+                                                return (sort $ varSort 1)))+                                               verifyPath)+  , (builtinPathP              |-> builtinPostulateC (hPi "a" (el primLevel) $+                                                nPi "A" (tinterval --> (return $ sort $ varSort 0)) $+                                                (El (varSort 1) <$> varM 0 <@> primIZero) -->+                                                (El (varSort 1) <$> varM 0 <@> primIOne) -->+                                                return (sort $ varSort 1)))+  , (builtinInterval           |-> BuiltinData (requireCubical >> return (sort Inf)) [builtinIZero,builtinIOne])+  , (builtinSub                |-> builtinPostulateC (runNamesT [] $ hPi' "a" (el $ cl primLevel) $ \ a ->+                                                     nPi' "A" (el' (cl primLevelSuc <@> a) (Sort . tmSort <$> a)) $ \ bA ->+                                                     nPi' "φ" (elInf $ cl primInterval) $ \ phi ->+                                                     elInf (cl primPartial <#> a <@> phi <@> bA) --> (return $ sort Inf)+                                                    ))+  , (builtinSubIn              |-> builtinPostulateC (runNamesT [] $+                                                     hPi' "a" (el $ cl primLevel) $ \ a ->+                                                     hPi' "A" (el' (cl primLevelSuc <@> a) (Sort . tmSort <$> a)) $ \ bA ->+                                                     hPi' "φ" (elInf $ cl primInterval) $ \ phi ->+                                                     nPi' "x" (el' (Sort . tmSort <$> a) bA) $ \ x ->+                                                     elInf $ cl primSub <#> a <@> bA <@> phi <@> (lam "o" $ \ _ -> x)))+  , (builtinIZero              |-> BuiltinDataCons (elInf primInterval))+  , (builtinIOne               |-> BuiltinDataCons (elInf primInterval))+  , (builtinPartial            |-> BuiltinPrim "primPartial" (const $ return ()))+  , (builtinPartialP           |-> BuiltinPrim "primPartialP" (const $ return ()))+  , (builtinIsOne              |-> builtinPostulateC (tinterval --> return (sort $ Inf)))+  , (builtinItIsOne            |-> builtinPostulateC (elInf $ primIsOne <@> primIOne))+  , (builtinIsOne1             |-> builtinPostulateC (runNamesT [] $+                                                     nPi' "i" (cl tinterval) $ \ i ->+                                                     nPi' "j" (cl tinterval) $ \ j ->+                                                     nPi' "i1" (elInf $ cl primIsOne <@> i) $ \ i1 ->+                                                     (elInf $ cl primIsOne <@> (cl primIMax <@> i <@> j))))+  , (builtinIsOne2             |-> builtinPostulateC (runNamesT [] $+                                                     nPi' "i" (cl tinterval) $ \ i ->+                                                     nPi' "j" (cl tinterval) $ \ j ->+                                                     nPi' "j1" (elInf $ cl primIsOne <@> j) $ \ j1 ->+                                                     (elInf $ cl primIsOne <@> (cl primIMax <@> i <@> j))))+  , (builtinIsOneEmpty         |-> builtinPostulateC (runNamesT [] $+                                                     hPi' "l" (el $ cl primLevel) $ \ l ->+                                                     hPi' "A" (pPi' "o" (cl primIZero) $ \ _ ->+                                                                    el' (cl primLevelSuc <@> l) (Sort . tmSort <$> l)) $ \ bA ->+                                                     pPi' "o" (cl primIZero) (\ o -> el' l $ gApply' (setRelevance Irrelevant defaultArgInfo) bA o)))++  , (builtinId                 |-> builtinPostulateC (hPi "a" (el primLevel) $+                                                hPi "A" (return $ sort $ varSort 0) $+                                                (El (varSort 1) <$> varM 0) -->+                                                (El (varSort 1) <$> varM 0) -->+                                                return (sort $ varSort 1)))+  , (builtinConId                 |-> builtinPostulateC (hPi "a" (el primLevel) $+                                                hPi "A" (return $ sort $ varSort 0) $+                                                hPi "x" (El (varSort 1) <$> varM 0) $+                                                hPi "y" (El (varSort 2) <$> varM 1) $+                                                tinterval --> (El (varSort 3) <$> primPath <#> varM 3 <#> varM 2 <@> varM 1 <@> varM 0) -->+                                                (El (varSort 3) <$> primId <#> varM 3 <#> varM 2 <@> varM 1 <@> varM 0)))+  , (builtinEquiv            |-> BuiltinUnknown (Just $ requireCubical >> runNamesT [] (+                                                    hPi' "l" (el $ cl primLevel) $ \ a ->+                                                    hPi' "l'" (el $ cl primLevel) $ \ b ->+                                                    nPi' "A" (sort . tmSort <$> a) $ \bA ->+                                                    nPi' "B" (sort . tmSort <$> b) $ \bB ->+                                                    ((sort . tmSort) <$> (cl primLevelMax <@> a <@> b))+                                                  ))+                                                   (const $ const $ return ()))+  , (builtinEquivFun            |-> BuiltinUnknown (Just $ requireCubical >> runNamesT [] (+                                                    hPi' "l" (el $ cl primLevel) $ \ a ->+                                                    hPi' "l'" (el $ cl primLevel) $ \ b ->+                                                    hPi' "A" (sort . tmSort <$> a) $ \bA ->+                                                    hPi' "B" (sort . tmSort <$> b) $ \bB ->+                                                    el' (cl primLevelMax <@> a <@> b) (cl primEquiv <#> a <#> b <@> bA <@> bB) --> (el' a bA --> el' b bB)+                                                  ))+                                                   (const $ const $ return ()))+  , (builtinEquivProof            |-> BuiltinUnknown (Just $ requireCubical >> runNamesT [] (+                                                    hPi' "l" (el $ cl primLevel) $ \ la ->+                                                    hPi' "l'" (el $ cl primLevel) $ \ lb ->+                                                    nPi' "A" (sort . tmSort <$> la) $ \ bA ->+                                                    nPi' "B" (sort . tmSort <$> lb) $ \ bB ->+                                                    nPi' "e" (el' (cl primLevelMax <@> la <@> lb) (cl primEquiv <#> la <#> lb <@> bA <@> bB)) $ \ e -> do+                                                    nPi' "b" (el' lb bB) $ \ b -> do+                                                     let f = cl primEquivFun <#> la <#> lb <#> bA <#> bB <@> e+                                                         fiber = el' (cl primLevelMax <@> la <@> lb) (cl primSigma <#> la <#> lb+                                                                                                       <@> bA+                                                                                                       <@> (lam "a" $ \ a -> cl primPath <#> lb <#> bB <@> (f <@> a) <@> b))+                                                     nPi' "φ" (cl tinterval) $ \ phi ->+                                                       (pPi' "o" phi $ \ o -> fiber) --> fiber+                                                  ))+                                                   (const $ const $ return ()))+  , (builtinPathToEquiv        |-> BuiltinUnknown+                                                (Just $ requireCubical >> runNamesT [] (+                                                   hPi' "l" (cl tinterval --> (el $ cl primLevel)) $ \ a ->+                                                   nPi' "E" (nPi' "i" (cl tinterval) $ \ i -> (sort . tmSort <$> (a <@> i))) $ \bE ->+                                                   el' (cl primLevelMax <@> (a <@> cl primIZero) <@> (a <@> cl primIOne))+                                                    (cl primEquiv <#> (a <@> cl primIZero) <#> (a <@> cl primIOne) <@> (bE <@> cl primIZero) <@> (bE <@> cl primIOne)+                                                         )))+                                         (const $ const $ return ()))   , (builtinAgdaSort           |-> BuiltinData tset [builtinAgdaSortSet, builtinAgdaSortLit, builtinAgdaSortUnsupported])   , (builtinAgdaTerm           |-> BuiltinData tset                                      [ builtinAgdaTermVar, builtinAgdaTermLam, builtinAgdaTermExtLam@@ -189,6 +303,7 @@   , (builtinLevelZero          |-> BuiltinPrim "primLevelZero" (const $ return ()))   , (builtinLevelSuc           |-> BuiltinPrim "primLevelSuc" (const $ return ()))   , (builtinLevelMax           |-> BuiltinPrim "primLevelMax" verifyMax)+  , (builtinSetOmega           |-> BuiltinPrim "primSetOmega" (const $ return ()))   , (builtinAgdaClause         |-> BuiltinData tset [builtinAgdaClauseClause, builtinAgdaClauseAbsurd])   , (builtinAgdaClauseClause   |-> BuiltinDataCons (tlist (targ tpat) --> tterm --> tclause))   , (builtinAgdaClauseAbsurd   |-> BuiltinDataCons (tlist (targ tpat) --> tclause))@@ -234,10 +349,14 @@   , builtinAgdaTCMIsMacro            |-> builtinPostulate (tqname --> tTCM_ primBool)   , builtinAgdaTCMWithNormalisation  |-> builtinPostulate (hPi "a" tlevel $ hPi "A" (tsetL 0) $ tbool --> tTCM 1 (varM 0) --> tTCM 1 (varM 0))   , builtinAgdaTCMDebugPrint         |-> builtinPostulate (tstring --> tnat --> tlist terrorpart --> tTCM_ primUnit)+  , builtinAgdaTCMNoConstraints      |-> builtinPostulate (hPi "a" tlevel $ hPi "A" (tsetL 0) $ tTCM 1 (varM 0) --> tTCM 1 (varM 0))+  , builtinAgdaTCMRunSpeculative     |-> builtinPostulate (hPi "a" tlevel $ hPi "A" (tsetL 0) $+                                                           tTCM 1 (primSigma <#> varM 1 <#> primLevelZero <@> varM 0 <@> (Lam defaultArgInfo . Abs "_" <$> primBool)) --> tTCM 1 (varM 0))   ]   where         (|->) = BuiltinInfo +        v0,v1,v2,v3 :: TCM Term         v0 = varM 0         v1 = varM 1         v2 = varM 2@@ -289,6 +408,7 @@         tclause    = el primAgdaClause         tTCM l a   = elV l (primAgdaTCM <#> varM l <@> a)         tTCM_ a    = el (primAgdaTCM <#> primLevelZero <@> a)+        tinterval  = El Inf <$> primInterval          verifyPlus plus =             verify ["n","m"] $ \(@@) zero suc (==) (===) choice -> do@@ -405,6 +525,12 @@             xs <- mapM freshName_ xs             addContext (xs, domFromArg $ defaultArg nat) $ f apply1 zero suc (==) (===) choice +        verifyPath :: Term -> Type -> TCM ()+        verifyPath path t = do+          let hlam n t = glam (setHiding Hidden defaultArgInfo) n t+          noConstraints $ equalTerm t path =<< (runNamesT [] $+            hlam "l" $ \ l -> hlam "A" $ \ bA -> cl primPathP <#> l <@> (lam "i" $ \ _ -> bA))+ -- | Checks that builtin with name @b : String@ of type @t : Term@ --   is a data type or inductive record with @n : Int@ constructors. --   Returns the name of the data/record type.@@ -518,6 +644,15 @@       bindBuiltinName builtinUnitUnit (Con con ConOSystem [])     _ -> genericError "Builtin UNIT must be a singleton record type" +bindBuiltinSigma :: Term -> TCM ()+bindBuiltinSigma t = do+  sigma <- fromMaybe __IMPOSSIBLE__ <$> getDef t+  def <- theDef <$> getConstInfo sigma+  case def of+    Record { recFields = [fst,snd], recConHead = con } -> do+      bindBuiltinName builtinSigma t+    _ -> genericError "Builtin SIGMA must be a record type with two fields"+ -- | Bind BUILTIN EQUALITY and BUILTIN REFL. bindBuiltinEquality :: ResolvedName -> TCM () bindBuiltinEquality x = do@@ -582,6 +717,7 @@            | s == builtinNat      -> bindBuiltinNat      v            | s == builtinInteger  -> bindBuiltinInt      v            | s == builtinUnit     -> bindBuiltinUnit     v+           | s == builtinSigma    -> bindBuiltinSigma    v            | s == builtinList     -> bindBuiltinData s   v            | otherwise            -> bindBuiltinName s   v @@ -641,10 +777,12 @@             case theDef def of               Axiom {} -> do                 builtinSizeHook s q t'+                -- And compilation pragmas for base types                 when (s == builtinChar)   $ addHaskellPragma q "= type Char"                 when (s == builtinString) $ addHaskellPragma q "= type Data.Text.Text"                 when (s == builtinFloat)  $ addHaskellPragma q "= type Double"                 when (s == builtinWord64) $ addHaskellPragma q "= type MAlonzo.RTE.Word64"+                when (s == builtinPathP)  $ builtinPathPHook q                 bindBuiltinName s v               _        -> err           _ -> err@@ -656,6 +794,12 @@         f v t         bindBuiltinName s v +builtinPathPHook :: QName -> TCM ()+builtinPathPHook q =+      modifySignature $ updateDefinition q+      $ updateDefPolarity       id+      . updateDefArgOccurrences (const [Unused,StrictPos,Mixed,Mixed])+ -- | Bind a builtin thing to an expression. bindBuiltin :: String -> ResolvedName -> TCM () bindBuiltin b x = do@@ -707,11 +851,17 @@ -- We simply ignore the parameters. bindBuiltinNoDef :: String -> A.QName -> TCM () bindBuiltinNoDef b q = inTopContext $ do+  when (b `elem` sizeBuiltins) $ unlessM sizedTypesOption $+    genericError $ "Cannot declare size BUILTIN " ++ b ++ " with option --no-sized-types"   case builtinDesc <$> findBuiltinInfo b of     Just (BuiltinPostulate rel mt) -> do+      -- We start by adding the corresponding postulate       t <- mt       addConstant q $ defaultDefn (setRelevance rel defaultArgInfo) q t def+      -- And we then *modify* the definition based on our needs:+      -- We add polarity information for SIZE-related definitions       builtinSizeHook b q t+      -- Finally, bind the BUILTIN in the environment.       bindBuiltinName b $ Def q []       where         -- Andreas, 2015-02-14@@ -723,6 +873,57 @@                 , funTerminates = Just True                 }             | otherwise = Axiom+    Just (BuiltinPrim name axioms) -> do+      PrimImpl t pf <- lookupPrimitiveFunction name+      bindPrimitive name $ pf { primFunName = q }+      let v   = Def q []+          def = Primitive { primAbstr    = ConcreteDef+                          , primName     = name+                          , primClauses  = []+                          , primInv      = NotInjective+                          , primCompiled = Just (CC.Done [] $ Def q [])+                          }+      addConstant q $ defaultDefn defaultArgInfo q t def+      axioms v+      bindBuiltinName b v+    Just (BuiltinDataCons mt) -> do+      t <- mt+      d <- return $! getPrimName $ unEl t+      let+        ch = ConHead q Inductive []+        def = Constructor 0 0 ch d ConcreteDef Inductive (emptyCompKit, Nothing) [] [] -- Andrea TODO: fix zeros +      addConstant q $ defaultDefn defaultArgInfo q t def+      addDataCons d [q]+      bindBuiltinName b $ Con ch ConOSystem []+    Just (BuiltinData mt cs) -> do+      t <- mt+      addConstant q $ defaultDefn defaultArgInfo q t def+      bindBuiltinName b $ Def q []+      where+        def = Datatype+              { dataPars       = 0+              , dataIxs        = 0+              , dataInduction  = Inductive+              , dataClause     = Nothing+              , dataCons       = []     -- Constructors are added later+              , dataSort       = Inf+              , dataAbstr      = ConcreteDef+              , dataMutual     = Nothing+              , dataPathCons   = []+              }     Just{}  -> __IMPOSSIBLE__     Nothing -> __IMPOSSIBLE__ -- typeError $ NoSuchBuiltinName b+++builtinKindOfName :: String -> TCM (Maybe KindOfName)+builtinKindOfName b =+               case find ((b ==) . builtinName) coreBuiltins of+                    Nothing -> return Nothing+                    Just d -> return . Just $+                      case builtinDesc d of+                        BuiltinDataCons{}  -> ConName+                        BuiltinData{}      -> DefName+                        BuiltinPrim{}      -> DefName+                        BuiltinPostulate{} -> DefName+                        BuiltinUnknown{}   -> DefName
src/full/Agda/TypeChecking/Rules/Builtin/Coinduction.hs view
@@ -88,6 +88,7 @@                   , recEtaEquality'   = Inferred NoEta                   , recMutual         = Just []                   , recAbstr          = ConcreteDef+                  , recComp           = emptyCompKit                   }               }     addConstant sharp $@@ -98,6 +99,7 @@                     , conData   = defName infDefn                     , conAbstr  = ConcreteDef                     , conInd    = CoInductive+                    , conComp   = (emptyCompKit, Nothing)                     , conForced = []                     , conErased = []                     }@@ -118,7 +120,7 @@     Def sharp _ <- primSharp     kit         <- requireLevels     Def inf _   <- primInf-    let sharpCon = ConHead sharp CoInductive [flat]+    let sharpCon = ConHead sharp CoInductive [defaultArg flat]         level    = El (mkType 0) $ Def (typeName kit) []         tel     :: Telescope         tel      = ExtendTel (domH $ level)                  $ Abs "a" $@@ -139,7 +141,7 @@           , clauseCatchall  = False           , clauseUnreachable = Just False           }-        cc = Case (defaultArg 0) $ conCase sharp $ WithArity 1 $ Done [defaultArg "x"] $ var 0+        cc = Case (defaultArg 0) $ conCase sharp False $ WithArity 1 $ Done [defaultArg "x"] $ var 0         projection = Projection           { projProper   = Just inf           , projOrig     = flat
src/full/Agda/TypeChecking/Rules/Builtin/Coinduction.hs-boot view
@@ -1,7 +1,12 @@ module Agda.TypeChecking.Rules.Builtin.Coinduction where  import Agda.Syntax.Scope.Base+import Agda.Syntax.Internal (Type) import Agda.TypeChecking.Monad++typeOfInf   :: TCM Type+typeOfSharp :: TCM Type+typeOfFlat  :: TCM Type  bindBuiltinInf   :: ResolvedName -> TCM () bindBuiltinSharp :: ResolvedName -> TCM ()
src/full/Agda/TypeChecking/Rules/Data.hs view
@@ -6,26 +6,38 @@ import Control.Monad  import Data.List (genericTake)-import Data.Maybe (fromMaybe)+import Data.Maybe (fromMaybe, catMaybes, isJust)+import Data.Set (Set)+import qualified Data.Set as Set  import qualified Agda.Syntax.Abstract as A+import qualified Agda.Syntax.Concrete.Name as C import Agda.Syntax.Abstract.Views (deepUnscope) import Agda.Syntax.Internal import Agda.Syntax.Common import Agda.Syntax.Position import qualified Agda.Syntax.Info as Info+import Agda.Syntax.Scope.Monad+import Agda.Syntax.Fixity +import {-# SOURCE #-} Agda.TypeChecking.CompiledClause.Compile import Agda.TypeChecking.Monad+import Agda.TypeChecking.Monad.Builtin -- (primLevel) import Agda.TypeChecking.Constraints import Agda.TypeChecking.Conversion import Agda.TypeChecking.Substitute+import Agda.TypeChecking.Generalize+import Agda.TypeChecking.Implicit import Agda.TypeChecking.MetaVars+import Agda.TypeChecking.Names import Agda.TypeChecking.Reduce import Agda.TypeChecking.Pretty+import Agda.TypeChecking.Primitive hiding (Nat) import Agda.TypeChecking.Free import Agda.TypeChecking.Forcing import Agda.TypeChecking.Irrelevance import Agda.TypeChecking.Telescope+import Agda.TypeChecking.ProjectionLike  import {-# SOURCE #-} Agda.TypeChecking.Rules.Term ( isType_ ) @@ -33,6 +45,9 @@  import Agda.Utils.Except import Agda.Utils.List+import Agda.Utils.Maybe+import Agda.Utils.Monad+import qualified Agda.Utils.Pretty as P import Agda.Utils.Size  #include "undefined.h"@@ -44,28 +59,37 @@  -- | Type check a datatype definition. Assumes that the type has already been --   checked.-checkDataDef :: Info.DefInfo -> QName -> [A.LamBinding] -> [A.Constructor] -> TCM ()-checkDataDef i name ps cs =-    traceCall (CheckDataDef (getRange name) (qnameName name) ps cs) $ do -- TODO!! (qnameName)+checkDataDef :: Info.DefInfo -> QName -> UniverseCheck -> A.DataDefParams -> [A.Constructor] -> TCM ()+checkDataDef i name uc (A.DataDefParams gpars ps) cs =+    traceCall (CheckDataDef (getRange name) name ps cs) $ do          -- Add the datatype module         addSection (qnameToMName name)          -- Look up the type of the datatype.-        t <- instantiateFull =<< typeOfConst name+        def <- instantiateDef =<< getConstInfo name+        t   <- instantiateFull $ defType def+        let npars =+              case theDef def of+                DataOrRecSig n -> n+                _              -> __IMPOSSIBLE__          -- Make sure the shape of the type is visible         let unTelV (TelV tel a) = telePi tel a         t <- unTelV <$> telView t +        parNames <- getGeneralizedParameters gpars name+         -- Top level free vars         freeVars <- getContextSize          -- The parameters are in scope when checking the constructors.-        dataDef <- bindParameters ps t $ \tel t0 -> do+        dataDef <- bindGeneralizedParameters parNames t $ \ gtel t0 ->+                   bindParameters (npars - length parNames) ps t0 $ \ ptel t0 -> do              -- Parameters are always hidden in constructors-            let tel' = hideAndRelParams <$> tel+            let tel  = abstract gtel ptel+                tel' = hideAndRelParams <$> tel             -- let tel' = hideTel tel              -- The type we get from bindParameters is Θ -> s where Θ is the type of@@ -82,26 +106,32 @@               -- However, it might give the dreaded "Cannot instantiate meta..."               -- error which we replace by a more understandable error               -- in case of a suspected dependency.-              -- Jesper, 2017-09-14: since Set i depends non-strictly on i,-              -- we need to create the new meta in a nonstrict context.-              s <- applyRelevanceToContext NonStrict newSortMetaBelowInf+              s <- newSortMetaBelowInf               catchError_ (addContext ixTel $ equalType s0 $ raise nofIxs $ sort s) $ \ err ->                   if any (`freeIn` s0) [0..nofIxs - 1] then typeError . GenericDocError =<<-                     fsep [ text "The sort of" <+> prettyTCM name-                          , text "cannot depend on its indices in the type"+                     fsep [ "The sort of" <+> prettyTCM name+                          , "cannot depend on its indices in the type"                           , prettyTCM t0                           ]                   else throwError err-              return s+              reduce s +            -- when `--without-K`, all the indices should fit in the+            -- sort of the datatype (see #3420).+            let s' = case s of+                  Prop l -> Type l+                  _      -> s+            whenM withoutKOption $ checkIndexSorts s' ixTel+             reportSDoc "tc.data.sort" 20 $ vcat-              [ text "checking datatype" <+> prettyTCM name+              [ "checking datatype" <+> prettyTCM name               , nest 2 $ vcat-                [ text "type (parameters instantiated):   " <+> prettyTCM t0-                , text "type (full):   " <+> prettyTCM t-                , text "sort:   " <+> prettyTCM s-                , text "indices:" <+> text (show nofIxs)-                , text "params:"  <+> text (show $ deepUnscope ps)+                [ "type (parameters instantiated):   " <+> prettyTCM t0+                , "type (full):   " <+> prettyTCM t+                , "sort:   " <+> prettyTCM s+                , "indices:" <+> text (show nofIxs)+                , "gparams:" <+> text (show parNames)+                , "params: " <+> text (show $ deepUnscope ps)                 ]               ]             let npars = size tel@@ -116,6 +146,7 @@                   , dataSort       = s                   , dataAbstr      = Info.defAbstract i                   , dataMutual     = Nothing+                  , dataPathCons   = []     -- Path constructors are added later                   }              escapeContext npars $ do@@ -124,22 +155,16 @@                 -- polarity and argOcc.s determined by the positivity checker              -- Check the types of the constructors-            mapM_ (checkConstructor name tel' nofIxs s) cs+            pathCons <- forM cs $ \ c -> do+              isPathCons <- checkConstructor name uc tel' nofIxs s c+              return $ if isPathCons == PathCons then Just (A.axiomName c) else Nothing              -- Return the data definition-            return dataDef+            return dataDef{ dataPathCons = catMaybes pathCons }          let s      = dataSort dataDef             cons   = map A.axiomName cs  -- get constructor names -        -- If proof irrelevance is enabled we have to check that datatypes in-        -- Prop contain at most one element.-        do  proofIrr <- proofIrrelevance-            case (proofIrr, s, cs) of-                (True, Prop, _:_:_) -> setCurrentRange cons $-                                         typeError PropMustBeSingleton-                _                   -> return ()-         -- Add the datatype to the signature with its constructors.         -- It was previously added without them.         addConstant name $@@ -150,11 +175,10 @@ -- | Ensure that the type is a sort. --   If it is not directly a sort, compare it to a 'newSortMetaBelowInf'. forceSort :: Type -> TCM Sort-forceSort t = case unEl t of+forceSort t = reduce (unEl t) >>= \case   Sort s -> return s   _      -> do-    -- Universes depend non-strictly on their argument-    s <- applyRelevanceToContext NonStrict newSortMetaBelowInf+    s <- newSortMetaBelowInf     equalType t (sort s)     return s @@ -164,15 +188,16 @@ --   Returns the non-linear parameters. checkConstructor   :: QName         -- ^ Name of data type.+  -> UniverseCheck -- ^ Check universes?   -> Telescope     -- ^ Parameter telescope.   -> Nat           -- ^ Number of indices of the data type.   -> Sort          -- ^ Sort of the data type.   -> A.Constructor -- ^ Constructor declaration (type signature).-  -> TCM ()-checkConstructor d tel nofIxs s (A.ScopedDecl scope [con]) = do+  -> TCM IsPathCons+checkConstructor d uc tel nofIxs s (A.ScopedDecl scope [con]) = do   setScope scope-  checkConstructor d tel nofIxs s con-checkConstructor d tel nofIxs s con@(A.Axiom _ i ai Nothing c e) =+  checkConstructor d uc tel nofIxs s con+checkConstructor d uc tel nofIxs s con@(A.Axiom _ i ai Nothing c e) =     traceCall (CheckConstructor d tel s con) $ do {- WRONG       -- Andreas, 2011-04-26: the following happens to the right of ':'@@ -184,25 +209,54 @@         case getRelevance ai of           Relevant   -> return ()           Irrelevant -> typeError $ GenericError $ "Irrelevant constructors are not supported"-          _ -> __IMPOSSIBLE__+          NonStrict  -> typeError $ GenericError $ "Shape-irrelevant constructors are not supported"         -- check that the type of the constructor is well-formed-        t <- workOnTypes $ isType_ e-        -- check that the type of the constructor ends in the data type-        n <- getContextSize-        debugEndsIn t d n-        constructs n t d+        (t, isPathCons) <- checkConstructorType e d         -- compute which constructor arguments are forced-        forcedArgs <- computeForcingAnnotations t+        forcedArgs <- computeForcingAnnotations c t         -- check that the sort (universe level) of the constructor type         -- is contained in the sort of the data type         -- (to avoid impredicative existential types)         debugFitsIn s-        arity <- fitsIn forcedArgs t s+        -- To allow propositional squash, we turn @Prop ℓ@ into @Set ℓ@+        -- for the purpose of checking the type of the constructors.+        let s' = case s of+              Prop l -> Type l+              _      -> s+        arity <- traceCall (CheckConstructorFitsIn c t s') $ fitsIn uc forcedArgs t s'+        -- this may have instantiated some metas in s, so we reduce+        s <- reduce s         debugAdd c t +        (TelV fields _, boundary) <- telViewUpToPathBoundaryP (-1) t++        -- We assume that the current context matches the parameters+        -- of the datatype in an empty context (c.f. getContextSize above).+        params <- getContextTelescope+         -- add parameters to constructor type and put into signature         let con = ConHead c Inductive [] -- data constructors have no projectable fields and are always inductive-        escapeContext (size tel) $+        escapeContext (size tel) $ do++          cnames <- if nofIxs /= 0 || (Info.defAbstract i == AbstractDef) then return (emptyCompKit, Nothing) else do+            inTopContext $ do+              names <- forM [0 .. size fields - 1] (\ i -> freshAbstractQName'_ (P.prettyShow (A.qnameName c) ++ "-" ++ show i))++              -- nofIxs == 0 means the data type can be reconstructed+              -- by appling the QName d to the parameters.+              dataT <- El s <$> (pure $ Def d $ map Apply $ teleArgs params)++              reportSDoc "tc.data.con.comp" 5 $ vcat $+                [ "params =" <+> pretty params+                , "dataT  =" <+> pretty dataT+                , "fields =" <+> pretty fields+                , "names  =" <+> pretty names+                ]++              defineProjections d con params names fields dataT+              comp <- defineCompData d con params names fields dataT boundary+              return $ (comp, Just names)+           addConstant c $             defaultDefn defaultArgInfo c (telePi tel t) $ Constructor               { conPars   = size tel@@ -211,39 +265,684 @@               , conData   = d               , conAbstr  = Info.defAbstract i               , conInd    = Inductive+              , conComp   = cnames               , conForced = forcedArgs               , conErased = []  -- computed during compilation to treeless               } +          case snd cnames of+            Nothing -> return ()+            Just names -> mapM_ makeProjection names+         -- Add the constructor to the instance table, if needed         when (Info.defInstance i == InstanceDef) $ do           addNamedInstance c d +        return isPathCons+   where+    -- Issue 3362: we need to do the `constructs` call inside the+    -- generalization, so unpack the A.Generalize+    checkConstructorType (A.ScopedExpr s e) d = withScope_ s $ checkConstructorType e d+    checkConstructorType e d = do+      let check k e = do+            t <- workOnTypes $ isType_ e+            -- check that the type of the constructor ends in the data type+            n <- getContextSize+            debugEndsIn t d (n - k)+            isPathCons <- constructs (n - k) k t d+            return (t, isPathCons)++      case e of+        A.Generalized s e -> do+          (_, t, isPathCons) <- generalizeType' s (check 1 e)+          return (t, isPathCons)+        _ -> check 0 e+     debugEnter c e =       reportSDoc "tc.data.con" 5 $ vcat-        [ text "checking constructor" <+> prettyTCM c <+> text ":" <+> prettyTCM e+        [ "checking constructor" <+> prettyTCM c <+> ":" <+> prettyTCM e         ]     debugEndsIn t d n =       reportSDoc "tc.data.con" 15 $ vcat-        [ sep [ text "checking that"+        [ sep [ "checking that"               , nest 2 $ prettyTCM t-              , text "ends in" <+> prettyTCM d+              , "ends in" <+> prettyTCM d               ]-        , nest 2 $ text "nofPars =" <+> text (show n)+        , nest 2 $ "nofPars =" <+> text (show n)         ]     debugFitsIn s =       reportSDoc "tc.data.con" 15 $ sep-        [ text "checking that the type fits in"+        [ "checking that the type fits in"         , nest 2 $ prettyTCM s         ]     debugAdd c t =       reportSDoc "tc.data.con" 5 $ vcat-        [ text "adding constructor" <+> prettyTCM c <+> text ":" <+> prettyTCM t+        [ "adding constructor" <+> prettyTCM c <+> ":" <+> prettyTCM t         ]-checkConstructor _ _ _ _ _ = __IMPOSSIBLE__ -- constructors are axioms+checkConstructor _ _ _ _ _ _ = __IMPOSSIBLE__ -- constructors are axioms +defineCompData :: QName      -- datatype name+               -> ConHead+               -> Telescope  -- Γ parameters+               -> [QName]    -- projection names+               -> Telescope  -- Γ ⊢ Φ field types+               -> Type       -- Γ ⊢ T target type+               -> Boundary   -- [(i,t_i,b_i)],  Γ.Φ ⊢ [ (i=0) -> t_i; (i=1) -> u_i ] : B_i+               -> TCM CompKit+defineCompData d con params names fsT t boundary = do+  required <- mapM getTerm'+    [ builtinInterval+    , builtinIZero+    , builtinIOne+    , builtinIMin+    , builtinIMax+    , builtinINeg+    , builtinPOr+    , builtinItIsOne+    ]+  sortsOk <- sortOk t `and2M` allM (map unDom (flattenTel fsT)) sortOkField+  if not sortsOk || not (all isJust required) then return $ emptyCompKit else do+    hcomp  <- whenDefined (null boundary) [builtinHComp,builtinTrans] (defineTranspOrHCompD DoHComp  d con params names fsT t boundary)+    transp <- whenDefined True [builtinTrans]              (defineTranspOrHCompD DoTransp d con params names fsT t boundary)+    return $ CompKit+      { nameOfTransp = transp+      , nameOfHComp  = hcomp+      }+  where+    -- Δ^I, i : I |- sub Δ : Δ+    sub tel = parallelS [ var n `apply` [Arg defaultArgInfo $ var 0] | n <- [1..size tel] ]+    withArgInfo tel = zipWith Arg (map domInfo . telToList $ tel)+    defineTranspOrHCompD cmd d con params names fsT t boundary+      = do+      ((theName, gamma , ty, _cl_types , bodies), theSub) <-+        (case cmd of DoTransp -> defineTranspForFields' (guard (not $ null boundary) >> (Just $ Con con ConOSystem $ teleElims fsT boundary))+                     ; DoHComp -> defineHCompForFields)+          (\ t p -> apply (Def p []) [argN t]) d params fsT (map argN names) t+      iz <- primIZero+      body <- do+        case cmd of+          DoHComp -> return $ Con con ConOSystem (map Apply $ withArgInfo fsT bodies)+          DoTransp | null boundary -> return $ Con con ConOSystem (map Apply $ withArgInfo fsT bodies)+                   | otherwise -> do+            io <- primIOne+            tIMax <- primIMax+            tIMin <- primIMin+            tINeg <- primINeg+            tPOr  <- fromMaybe __IMPOSSIBLE__ <$> getTerm' builtinPOr+            tHComp <- primHComp+            -- Δ = params+            -- Δ ⊢ Φ = fsT+            -- (δ : Δ) ⊢ T = R δ+            -- (δ : Δ) ⊢ con : Φ → R δ  -- no indexing+            -- boundary = [(i,t_i,u_i)]+            -- Δ.Φ ⊢ [ (i=0) -> t_i; (i=1) -> u_i ] : B_i+            -- Δ.Φ | PiPath Φ boundary (R δ) |- teleElims fsT boundary : R δ+            -- Γ = ((δ : Δ^I), φ, us : Φ[δ 0]) = gamma+            -- Γ ⊢ ty = R (δ i1)+            -- (γ : Γ) ⊢ cl_types = (flatten Φ)[n ↦ f_n (transpR γ)]+            -- Γ ⊢ bodies : Φ[δ i1]+            -- Γ ⊢ t : ty+            -- Γ, i : I ⊢ theSub : Δ.Φ+            let +              -- Δ.Φ ⊢ u = Con con ConOSystem $ teleElims fsT boundary : R δ+              u = Con con ConOSystem $ teleElims fsT boundary+              -- Γ ⊢ u+              the_u = liftS (size fsT) d0 `applySubst` u+                where+                  -- δ : Δ^I, φ : F ⊢ [δ 0] : Δ+                  d0 :: Substitution+                  d0 = wkS 1 -- Δ^I, φ : F ⊢ Δ+                             (consS iz IdS `composeS` sub params) -- Δ^I ⊢ Δ+                                       -- Δ^I , i:I ⊢ sub params : Δ+              the_phi = raise (size fsT) $ var 0+              -- Γ ⊢ sigma : Δ.Φ+              -- sigma = [δ i1,bodies]+              sigma = reverse bodies ++# d1+               where+                -- δ i1+                d1 :: Substitution+                d1 = wkS (size gamma - size params) -- Γ ⊢ Δ+                       (consS io IdS `composeS` sub params) -- Δ^I ⊢ Δ+                                 -- Δ^I , i:I ⊢ sub params : Δ++              -- Δ.Φ ⊢ [ (i=0) -> t_i; (i=1) -> u_i ] : R δ+              bs = fullBoundary fsT boundary+              -- ψ = sigma `applySubst` map (\ i → i ∨ ~ i) . map fst $ boundary+              -- Γ ⊢ t : R (δ i1)+              w1' = Con con ConOSystem $ sigma `applySubst` teleElims fsT boundary+              -- (δ, φ, u0) : Γ ⊢+              -- w1 = hcomp (\ i → R (δ i1))+              --            (\ i → [ ψ ↦ α (~ i), φ ↦ u0])+              --            w1'+              imax x y = pure tIMax <@> x <@> y+              ineg r = pure tINeg <@> r+              lvlOfType = (\ (Type l) -> Level l) . getSort+              pOr la i j u0 u1 = pure tPOr <#> (lvlOfType <$> la) <@> i <@> j+                                           <#> (ilam "o" $ \ _ -> unEl <$> la) <@> u0 <@> u1+              absAp x y = liftM2 absApp x y++              mkFace (r,(u1,u2)) = runNamesT [] $ do+                -- Γ+                phi <- open the_phi  -- (δ , φ , us) ⊢ φ+                -- Γ ⊢ ty = Abs i. R (δ i)+                ty <- open (Abs "i" $ (liftS 1 (raiseS (size gamma - size params)) `composeS` sub params) `applySubst` t)++                bind "i" $ \ i -> do+                  -- Γ, i+                  [r,u1,u2] <- mapM (open . applySubst theSub) [r,u1,u2]+                  psi <- imax r (ineg r)+                  let+                    -- Γ, i ⊢ squeeze u = primTrans (\ j -> ty [i := i ∨ j]) (φ ∨ i) u+                    squeeze u = cl primTrans+                                          <#> (lam "j" $ \ j -> lvlOfType <$> ty `absAp` (imax i j))+                                          <@> (lam "j" $ \ j -> unEl <$> ty `absAp` (imax i j))+                                          <@> (phi `imax` i)+                                          <@> u+                  alpha <- pOr (ty `absAp` i)+                              (ineg r)+                              r+                           (ilam "o" $ \ _ -> squeeze u1) (ilam "o" $ \ _ -> squeeze u2)+                  return $ (psi, alpha)++            -- Γ ⊢ Abs i. [(ψ_n,α_n : [ψ] → R (δ i))]+            faces <- mapM mkFace bs++            runNamesT [] $ do+                -- Γ+                w1' <- open w1'+                phi <- open the_phi+                u   <- open the_u+                -- R (δ i1)+                ty <- open ty+                faces <- mapM (\ x -> liftM2 (,) (open . noabsApp __IMPOSSIBLE__ $ fmap fst x) (open $ fmap snd x)) faces+                let+                  thePsi = foldl1 imax (map fst faces)+                  hcomp ty phi sys a0 = pure tHComp <#> (lvlOfType <$> ty)+                                                    <#> (unEl <$> ty)+                                                    <#> phi+                                                    <@> sys+                                                    <@> a0+                let+                 sys = lam "i" $ \ i -> do+                  let+                    recurse [(psi,alpha)] = alpha `absAp` (ineg i)+                    recurse ((psi,alpha):xs) = pOr ty+                                                   psi  theOr+                                                   (alpha `absAp` (ineg i)) (recurse xs)+                      where+                        theOr = foldl1 imax (map fst xs)+                    recurse [] = __IMPOSSIBLE__+                    sys_alpha = recurse faces+                  pOr ty+                                                   thePsi    phi+                                                   sys_alpha (ilam "o" $ \ _ -> u)+                hcomp ty (thePsi `imax` phi) sys w1'+++      let++        -- δ : Δ^I, φ : F ⊢ [δ 0] : Δ+        d0 :: Substitution+        d0 = wkS 1 -- Δ^I, φ : F ⊢ Δ+                       (consS iz IdS `composeS` sub params) -- Δ^I ⊢ Δ+                                 -- Δ^I , i:I ⊢ sub params : Δ++        -- Δ.Φ ⊢ u = Con con ConOSystem $ teleElims fsT boundary : R δ+--        u = Con con ConOSystem $ teleElims fsT boundary+        up = ConP con (ConPatternInfo Nothing False Nothing False) $+               telePatterns (d0 `applySubst` fsT) (liftS (size fsT) d0 `applySubst` boundary)+--        gamma' = telFromList $ take (size gamma - 1) $ telToList gamma++        -- (δ , φ , fs : Φ[d0]) ⊢ u[liftS Φ d0]+        -- (δ , φ, u) : Γ ⊢ body+        -- Δ ⊢ Φ = fsT+        -- (δ , φ , fs : Φ[d0]) ⊢ u[liftS Φ d0] `consS` raiseS Φ : Γ+--        (tel',theta) = (abstract gamma' (d0 `applySubst` fsT), (liftS (size fsT) d0 `applySubst` u) `consS` raiseS (size fsT))++      let+        clause | null boundary+           = Clause+            { clauseTel = gamma+            , clauseType = Just . argN $ ty+            , namedClausePats = teleNamedArgs gamma+            , clauseFullRange = noRange+            , clauseLHSRange  = noRange+            , clauseCatchall = False+            , clauseBody = Just $ body+            , clauseUnreachable = Just False+            }++               | otherwise+           = Clause+            { clauseTel = gamma+            , clauseType = Just . argN $ ty+            , namedClausePats = take (size gamma - size fsT) (teleNamedArgs gamma) ++ [argN $ unnamed $ up]+            , clauseFullRange = noRange+            , clauseLHSRange  = noRange+            , clauseCatchall = False+            , clauseBody = Just $ body+            , clauseUnreachable = Just False+            }+        cs = [clause]+      addClauses theName cs+      (mst, cc) <- inTopContext (compileClauses Nothing cs)+      whenJust mst $ setSplitTree theName+      setCompiledClauses theName cc+      setTerminates theName True+      return $ Just theName++    whenDefined False _ _ = return Nothing+    whenDefined True xs m = do+      xs <- mapM getTerm' xs+      if all isJust xs then m else return Nothing++    sortOk :: Type -> TCM Bool+    sortOk a = reduce (getSort a) >>= \case+      Type{} -> return True+      _      -> return False++    sortOkField :: Type -> TCM Bool+    sortOkField a = reduce (getSort a) >>= \case+      Type{} -> return True+      -- fields might be elements of the interval+      Inf    -> return True+      _      -> return False++-- Andrea: TODO handle Irrelevant fields somehow.+defineProjections :: QName      -- datatype name+                  -> ConHead+                  -> Telescope  -- Γ parameters+                  -> [QName]    -- projection names+                  -> Telescope  -- Γ ⊢ Φ field types+                  -> Type       -- Γ ⊢ T target type+                  -> TCM ()+defineProjections dataname con params names fsT t = do+  let+    -- Γ , (d : T) ⊢ Φ[n ↦ proj n d]+    fieldTypes = ([ Def f [] `apply` [argN $ var 0] | f <- reverse names ] ++# raiseS 1) `applySubst`+                    flattenTel fsT  -- Γ , Φ ⊢ Φ+    -- ⊢ Γ , (d : T)+    projTel = abstract params (ExtendTel (defaultDom t) (Abs "d" EmptyTel))+  forM_ (zip3 (downFrom (size fieldTypes)) names fieldTypes) $ \ (i,projName,ty) -> do+    let+      projType = abstract projTel <$> ty++    inTopContext $ do+      reportSDoc "tc.data.proj" 20 $ sep [ "proj" <+> prettyTCM (i,ty) , nest 2 $ prettyTCM projType ]++    let+      cpi  = ConPatternInfo Nothing False (Just $ argN $ raise (size fsT) t) False+      conp = defaultArg $ ConP con cpi $ teleNamedArgs fsT+      clause = Clause+          { clauseTel = abstract params fsT+          , clauseType = Just . argN $ ([Con con ConOSystem (map Apply $ teleArgs fsT)] ++# raiseS (size fsT)) `applySubst` unDom ty+          , namedClausePats = raise (size fsT) (teleNamedArgs params) ++ [Named Nothing <$> conp]+          , clauseFullRange = noRange+          , clauseLHSRange  = noRange+          , clauseCatchall = False+          , clauseBody = Just $ var i+          , clauseUnreachable = Just False+          }++    noMutualBlock $ do+      let cs = [clause]+      (mst , cc) <- inTopContext $ compileClauses Nothing cs+      let fun = emptyFunction+                { funClauses = cs+                , funTerminates = Just True+                , funCompiled = Just cc+                , funSplitTree = mst+                , funMutual = Just []+                }+      addConstant projName $+        (defaultDefn defaultArgInfo projName (unDom projType) fun)+          { defNoCompilation = True }+      inTopContext $ do+        reportSDoc "tc.data.proj.fun" 60 $ sep [ "proj" <+> prettyTCM i, nest 2 $ pretty fun ]+++freshAbstractQName'_ :: String -> TCM QName+freshAbstractQName'_ s = freshAbstractQName noFixity' (C.Name noRange C.InScope [C.Id $ s])+++defineTranspForFields+  :: (Term -> QName -> Term) -- ^ how to apply a "projection" to a term+  -> QName       -- ^ some name, e.g. record name+  -> Telescope   -- ^ param types Δ+  -> Telescope   -- ^ fields' types Δ ⊢ Φ+  -> [Arg QName] -- ^ fields' names+  -> Type        -- ^ record type Δ ⊢ T+  -> TCM ((QName, Telescope, Type, [Dom Type], [Term]), Substitution)+defineTranspForFields = defineTranspForFields' Nothing+++-- invariant: resulting tel Γ is such that Γ = ... , (φ : I), (a0 : ...)+--            where a0 has type matching the arguments of primTrans.+defineTranspForFields'+  :: (Maybe Term)                    -- ^ PathCons, Δ.Φ ⊢ u : R δ+  -> (Term -> QName -> Term) -- ^ how to apply a "projection" to a term+  -> QName       -- ^ some name, e.g. record name+  -> Telescope   -- ^ param types Δ+  -> Telescope   -- ^ fields' types Δ ⊢ Φ+  -> [Arg QName] -- ^ fields' names+  -> Type        -- ^ record type Δ ⊢ T+  -> TCM ((QName, Telescope, Type, [Dom Type], [Term]), Substitution)+defineTranspForFields' pathCons applyProj name params fsT fns rect = do+  interval <- elInf primInterval+  let deltaI = expTelescope interval params+  iz <- primIZero+  io <- primIOne+  imin <- getPrimitiveTerm "primIMin"+  imax <- getPrimitiveTerm "primIMax"+  ineg <- getPrimitiveTerm "primINeg"+  transp <- getPrimitiveTerm builtinTrans+  por <- getPrimitiveTerm "primPOr"+  one <- primItIsOne+  reportSDoc "trans.rec" 20 $ text $ show params+  reportSDoc "trans.rec" 20 $ text $ show deltaI+  reportSDoc "trans.rec" 10 $ text $ show fsT++  let thePrefix = "transp-"+  theName <- freshAbstractQName'_ $ thePrefix ++ P.prettyShow (A.qnameName name)++  reportSLn "trans.rec" 5 $ ("Generated name: " ++ show theName ++ " " ++ showQNameId theName)++  theType <- (abstract deltaI <$>) $ runNamesT [] $ do+              rect' <- open (runNames [] $ bind "i" $ \ x -> let _ = x `asTypeOf` pure (undefined :: Term) in+                                                             pure rect')+              nPi' "phi" (elInf $ cl primInterval) $ \ phi ->+               (absApp <$> rect' <*> pure iz) --> (absApp <$> rect' <*> pure io)++  reportSDoc "trans.rec" 20 $ prettyTCM theType+  reportSDoc "trans.rec" 60 $ text $ "sort = " ++ show (getSort rect')++  noMutualBlock $ addConstant theName $ (defaultDefn defaultArgInfo theName theType+    (emptyFunction { funTerminates = Just True }))+    { defNoCompilation = True }+  -- ⊢ Γ = gamma = (δ : Δ^I) (φ : I) (u0 : R (δ i0))+  -- Γ ⊢     rtype = R (δ i1)+  TelV gamma rtype <- telView theType+++  let+      -- (γ : Γ) ⊢ transpR γ : rtype+      theTerm = Def theName [] `apply` teleArgs gamma++      -- (γ : Γ) ⊢ (flatten Φ[δ i1])[n ↦ f_n (transpR γ)]+      clause_types = parallelS [theTerm `applyProj` (unArg fn)+                               | fn <- reverse fns] `applySubst`+                       flattenTel (singletonS 0 io `applySubst` fsT') -- Γ, Φ[δ i1] ⊢ flatten Φ[δ i1]++      -- Γ, i : I ⊢ [δ i] : Δ+      delta_i = (liftS 1 (raiseS (size gamma - size deltaI)) `composeS` sub params)++      -- Γ, i : I ⊢ Φ[δ i]+      fsT' = (liftS 1 (raiseS (size gamma - size deltaI)) `composeS` sub params)  `applySubst`+               fsT -- Δ ⊢ Φ+      lam_i = Lam defaultArgInfo . Abs "i"++++      -- (δ , φ , u0) : Γ ⊢ φ : I+      -- the_phi = var 1+      -- -- (δ , φ , u0) : Γ ⊢ u0 : R (δ i0)+      -- the_u0  = var 0++      -- Γ' = (δ : Δ^I, φ : I)+      gamma' = telFromList $ take (size gamma - 1) $ telToList gamma++      -- δ : Δ^I, φ : F ⊢ [δ 0] : Δ+      d0 :: Substitution+      d0 = wkS 1 -- Δ^I, φ : F ⊢ Δ+                       (consS iz IdS `composeS` sub params) -- Δ^I ⊢ Δ+                                 -- Δ^I , i:I ⊢ sub params : Δ++      -- Ξ , Ξ ⊢ θ : Γ, Ξ ⊢ φ, Ξ ⊢ u : R (δ i0), Ξ ⊢ us : Φ[δ i0]+      (tel,theta,the_phi,the_u0, the_fields) =+        case pathCons of+          -- (δ : Δ).Φ ⊢ u : R δ+          Just u -> (abstract gamma' (d0 `applySubst` fsT) -- Ξ = δ : Δ^I, φ : F, _ : Φ[δ i0]+                    , (liftS (size fsT) d0 `applySubst` u) `consS` raiseS (size fsT)+                    , raise (size fsT) (var 0)+                    , (liftS (size fsT) d0 `applySubst` u)+                    , drop (size gamma') $ map unArg $ teleArgs tel)+          Nothing -> (gamma, IdS, var 1, var 0, map (\ fname -> var 0 `applyProj` unArg fname) fns )++      fsT_tel = (liftS 1 (raiseS (size tel - size deltaI)) `composeS` sub params) `applySubst` fsT++      iMin x y = imin `apply` [argN x, argN y]+      iMax x y = imax `apply` [argN x, argN y]+      iNeg x = ineg `apply` [argN x]++      -- .. ⊢ field : filled_ty' i0+      mkBody (field, filled_ty') = do+        let+          filled_ty = lam_i $ (unEl . unDom) filled_ty'+          -- Γ ⊢ l : I -> Level of filled_ty+        sort <- reduce $ getSort $ unDom filled_ty'+        case sort of+          Type l -> do+            let lvl = lam_i $ Level l+            return $ runNames [] $ do+             lvl <- open lvl+             [phi,field] <- mapM open [the_phi,field]+             pure transp <#> lvl <@> pure filled_ty+                                 <@> phi+                                 <@> field+          -- interval arg+          Inf  ->+            return $ runNames [] $ do+            [field] <- mapM open [field]+            field+          _ -> __IMPOSSIBLE__++  let+        -- ' Ξ , i : I ⊢ τ = [(\ j → δ (i ∧ j)), φ ∨ ~ i, u] : Ξ+        tau = parallelS $ us ++ (phi `iMax` iNeg (var 0))+                        : map (\ d -> Lam defaultArgInfo $ Abs "i" $ raise 1 d `apply` [argN $ (iMin (var 0) (var 1))]) ds+         where+          -- Ξ, i : I+          (us, phi:ds) = splitAt (size tel - size gamma') $ reverse (raise 1 (map unArg (teleArgs tel)))++  let+    go acc [] = return []+    go acc ((fname,field_ty) : ps) = do+      -- Ξ, i : I, Φ[δ i]|_f ⊢ Φ_f = field_ty+      -- Ξ ⊢ b : field_ty [i := i1][acc]+      -- Ξ ⊢ parallesS acc : Φ[δ i1]|_f+      -- Ξ , i : I ⊢ τ = [(\ j → δ (i ∨ j), φ ∨ ~ i, us] : Ξ+      -- Ξ , i : I ⊢ parallesS (acc[τ]) : Φ[δ i1]|_f+      -- Ξ, i : I ⊢ field_ty [parallesS (acc[τ])]+      let+        filled_ty = parallelS (tau `applySubst` acc) `applySubst` field_ty+      b <- mkBody (fname,filled_ty)+      bs <- go (b : acc) ps+      return $ b : bs++  bodys <- go [] (zip the_fields (map (fmap snd) $ telToList fsT_tel)) -- ∀ f.  Ξ, i : I, Φ[δ i]|_f ⊢ Φ[δ i]_f+  let+    -- Ξ, i : I ⊢ ... : Δ.Φ+    theSubst = reverse (tau `applySubst` bodys) ++# (liftS 1 (raiseS (size tel - size deltaI)) `composeS` sub params)+  return $ ((theName, tel, theta `applySubst` rtype, clause_types, bodys), theSubst)+  where+    -- record type in 'exponentiated' context+    -- (params : Δ^I), i : I |- T[params i]+    rect' = sub params `applySubst` rect+    -- Δ^I, i : I |- sub Δ : Δ+    sub tel = parallelS [ var n `apply` [Arg defaultArgInfo $ var 0] | n <- [1..size tel] ]+    -- given I type, and Δ telescope, build Δ^I such that+    -- (x : A, y : B x, ...)^I = (x : I → A, y : (i : I) → B (x i), ...)+    expTelescope :: Type -> Telescope -> Telescope+    expTelescope int tel = unflattenTel names ys+      where+        xs = flattenTel tel+        names = teleNames tel+        t = ExtendTel (defaultDom $ raise (size tel) int) (Abs "i" EmptyTel)+        s = sub tel+        ys = map (fmap (abstract t) . applySubst s) xs++-- invariant: resulting tel Γ is such that Γ = (δ : Δ), (φ : I), (u : ...), (a0 : R δ))+--            where u and a0 have types matching the arguments of primHComp.+defineHCompForFields+  :: (Term -> QName -> Term) -- ^ how to apply a "projection" to a term+  -> QName       -- ^ some name, e.g. record name+  -> Telescope   -- ^ param types Δ+  -> Telescope   -- ^ fields' types Δ ⊢ Φ+  -> [Arg QName] -- ^ fields' names+  -> Type        -- ^ record type (δ : Δ) ⊢ R[δ]+  -> TCM ((QName, Telescope, Type, [Dom Type], [Term]),Substitution)+defineHCompForFields applyProj name params fsT fns rect = do+  interval <- elInf primInterval+  let delta = params+  iz <- primIZero+  io <- primIOne+  imin <- getPrimitiveTerm "primIMin"+  imax <- getPrimitiveTerm "primIMax"+  tIMax <- getPrimitiveTerm "primIMax"+  ineg <- getPrimitiveTerm "primINeg"+  hcomp <- getPrimitiveTerm builtinHComp+  transp <- getPrimitiveTerm builtinTrans+  por <- getPrimitiveTerm "primPOr"+  one <- primItIsOne+  reportSDoc "comp.rec" 20 $ text $ show params+  reportSDoc "comp.rec" 20 $ text $ show delta+  reportSDoc "comp.rec" 10 $ text $ show fsT++  let thePrefix = "hcomp-"+  theName <- freshAbstractQName'_ $ thePrefix ++ P.prettyShow (A.qnameName name)++  reportSLn "hcomp.rec" 5 $ ("Generated name: " ++ show theName ++ " " ++ showQNameId theName)++  theType <- (abstract delta <$>) $ runNamesT [] $ do+              rect <- open rect+              nPi' "phi" (elInf $ cl primInterval) $ \ phi ->+               (nPi' "i" (elInf $ cl primInterval) $ \ i ->+                pPi' "o" phi $ \ _ -> rect) -->+               rect --> rect++  reportSDoc "hcomp.rec" 20 $ prettyTCM theType+  reportSDoc "hcomp.rec" 60 $ text $ "sort = " ++ show (getSort rect)++  noMutualBlock $ addConstant theName $ (defaultDefn defaultArgInfo theName theType+    (emptyFunction { funTerminates = Just True }))+    { defNoCompilation = True }+  --   ⊢ Γ = gamma = (δ : Δ) (φ : I) (_ : (i : I) -> Partial φ (R δ)) (_ : R δ)+  -- Γ ⊢     rtype = R δ+  TelV gamma rtype <- telView theType++  let -- Γ ⊢ R δ+      drect_gamma = raiseS (size gamma - size delta) `applySubst` rect++  reportSDoc "hcomp.rec" 60 $ text $ "sort = " ++ show (getSort drect_gamma)++  let++      -- (γ : Γ) ⊢ hcompR γ : rtype+      compTerm = Def theName [] `apply` teleArgs gamma++      -- (δ, φ, u, u0) : Γ ⊢ φ : I+      the_phi = var 2+      -- (δ, φ, u, u0) : Γ ⊢ u : (i : I) → [φ] → R (δ i)+      the_u   = var 1+      -- (δ, φ, u, u0) : Γ ⊢ u0 : R (δ i0)+      the_u0  = var 0++      -- ' (δ, φ, u, u0) : Γ ⊢ fillR Γ : (i : I) → rtype[ δ ↦ (\ j → δ (i ∧ j))]+      fillTerm = runNames [] $ do+        rect <- open                           $ unEl    drect_gamma+        lvl  <- open . (\ (Type l) -> Level l) $ getSort drect_gamma+        params     <- mapM open $ take (size delta) $ teleArgs gamma+        [phi,w,w0] <- mapM open [the_phi,the_u,the_u0]+        -- (δ : Δ, φ : I, w : .., w0 : R δ) ⊢+        -- ' fillR Γ = λ i → hcompR δ (φ ∨ ~ i) (\ j → [ φ ↦ w (i ∧ j) , ~ i ↦ w0 ]) w0+        --           = hfillR δ φ w w0+        lam "i" $ \ i -> do+          args <- sequence params+          psi  <- pure imax <@> phi <@> (pure ineg <@> i)+          u <- lam "j" (\ j -> pure por <#> lvl+                                        <@> phi+                                        <@> (pure ineg <@> i)+                                        <#> (lam "_" $ \ o -> rect)+                                        <@> (w <@> (pure imin <@> i <@> j))+                                        <@> (lam "_" $ \ o -> w0) -- TODO wait for i = 0+                       )+          u0 <- w0+          pure $ Def theName [] `apply` (args ++ [argN psi, argN u, argN u0])+        where+          underArg k m = Arg <$> (argInfo <$> m) <*> (k (unArg <$> m))++      -- (γ : Γ) ⊢ (flatten Φ)[n ↦ f_n (compR γ)]+      clause_types = parallelS [compTerm `applyProj` (unArg fn)+                               | fn <- reverse fns] `applySubst`+                       flattenTel (raiseS (size gamma - size delta) `applySubst` fsT) -- Γ, Φ ⊢ flatten Φ+      -- Δ ⊢ Φ = fsT+      -- Γ, i : I ⊢ Φ'+      fsT' = raiseS ((size gamma - size delta) + 1) `applySubst` fsT++      -- Γ, i : I ⊢ (flatten Φ')[n ↦ f_n (fillR Γ i)]+      filled_types = parallelS [raise 1 fillTerm `apply` [argN $ var 0] `applyProj` (unArg fn)+                               | fn <- reverse fns] `applySubst`+                       flattenTel fsT' -- Γ, i : I, Φ' ⊢ flatten Φ'+++  comp <- do+        let+          imax i j = pure tIMax <@> i <@> j+        let forward la bA r u = pure transp <#> (lam "i" $ \ i -> la <@> (i `imax` r))+                                            <@> (lam "i" $ \ i -> bA <@> (i `imax` r))+                                            <@> r+                                            <@> u+        return $ \ la bA phi u u0 ->+          pure hcomp <#> (la <@> pure io) <#> (bA <@> pure io) <#> phi+                      <@> (lam "i" $ \ i -> ilam "o" $ \ o ->+                              forward la bA i (u <@> i <..> o))+                      <@> forward la bA (pure iz) u0+  let+      mkBody (fname, filled_ty') = do+        let+          proj t = (`applyProj` unArg fname) <$> t+          filled_ty = Lam defaultArgInfo (Abs "i" $ (unEl . unDom) filled_ty')+          -- Γ ⊢ l : I -> Level of filled_ty+        Type l <- reduce $ getSort $ unDom filled_ty'+        let lvl = Lam defaultArgInfo (Abs "i" $ Level l)+        return $ runNames [] $ do+             lvl <- open lvl+             [phi,w,w0] <- mapM open [the_phi,the_u,the_u0]+             filled_ty <- open filled_ty++             comp lvl+                  filled_ty+                  phi+                  (lam "i" $ \ i -> lam "o" $ \ o -> proj $ w <@> i <@> o) -- TODO wait for phi = 1+                  (proj w0)++  reportSDoc "hcomp.rec" 60 $ text $ "filled_types sorts:" ++ show (map (getSort . unDom) filled_types)++  bodys <- mapM mkBody (zip fns filled_types)+  return $ ((theName, gamma, rtype, clause_types, bodys),IdS)+++getGeneralizedParameters :: Set Name -> QName -> TCM [Maybe Name]+getGeneralizedParameters gpars name | Set.null gpars = return []+getGeneralizedParameters gpars name = do+  -- Drop the named parameters that shouldn't be in scope (if the user+  -- wrote a split data type)+  let inscope x = x <$ guard (Set.member x gpars)+  map (>>= inscope) . defGeneralizedParams <$> (instantiateDef =<< getConstInfo name)++-- | Bind the named generalized parameters.+bindGeneralizedParameters :: [Maybe Name] -> Type -> (Telescope -> Type -> TCM a) -> TCM a+bindGeneralizedParameters [] t ret = ret EmptyTel t+bindGeneralizedParameters (name : names) t ret =+  case unEl t of+    Pi a b -> ext $ bindGeneralizedParameters names (unAbs b) $ \ tel t -> ret (ExtendTel a (tel <$ b)) t+      where+        ext | Just x <- name = addContext (x, a)+            | otherwise      = addContext (absName b, a)+    _      -> __IMPOSSIBLE__+ -- | Bind the parameters of a datatype. -- --   We allow omission of hidden parameters at the definition site.@@ -254,14 +953,8 @@ --       c : A -> D A --   @ -bindParameters :: [A.LamBinding] -> Type -> (Telescope -> Type -> TCM a) -> TCM a-bindParameters = bindParameters' []---- | Auxiliary function for 'bindParameters'.-bindParameters'-  :: [Type]         -- ^ @n@ replicas of type if @LamBinding@s are @DomainFree@s-                    --   that came from a @DomainFull@ of @n@ binders.-                    --   Should be comsumed whenever a @DomainFree@s are consumed.+bindParameters+  :: Int            -- ^ Number of parameters   -> [A.LamBinding] -- ^ Bindings from definition site.   -> Type           -- ^ Pi-type of bindings coming from signature site.   -> (Telescope -> Type -> TCM a)@@ -269,92 +962,141 @@      --   The parameters are part of the context when the continutation is invoked.   -> TCM a -bindParameters' _ [] a ret = ret EmptyTel a--bindParameters' ts (A.DomainFull (A.TypedBindings _ (Arg info (A.TBind _ xs e))) : bs) a ret = do-  unless (null ts) __IMPOSSIBLE__-  t <- workOnTypes $ isType_ e-  bindParameters' (t <$ xs) (map (mergeHiding . fmap (A.DomainFree info)) xs ++ bs) a ret+bindParameters 0 [] a ret = ret EmptyTel a -bindParameters' _ (A.DomainFull (A.TypedBindings _ (Arg _ A.TLet{})) : _) _ _ =  -- line break!-  __IMPOSSIBLE__+bindParameters 0 (par : _) _ _ = setCurrentRange par $+  typeError . GenericDocError =<< do+    text "Unexpected parameter" <+> prettyA par -bindParameters' ts0 ps0@(A.DomainFree info x : ps) t ret = do+bindParameters npars [] t ret =   case unEl t of-    -- Andreas, 2011-04-07 ignore relevance information in binding?!-    Pi arg@(Dom info' a) b -> do-      if | info == info'                  -> do-            -- Andreas, 2016-12-30, issue #1886:-            -- If type for binding is present, check its correctness.-            ts <- caseList ts0 (return []) $ \ t0 ts -> do-              equalType t0 a-              return ts-            continue ts ps $ A.unBind x+    Pi a b | not (visible a) -> do+              x <- freshName_ (absName b)+              bindParameter npars [] x a b ret+           | otherwise ->+              typeError . GenericDocError =<<+                sep [ "Expected binding for parameter"+                    , text (absName b) <+> text ":" <+> prettyTCM (unDom a) ]+    _ -> __IMPOSSIBLE__ -         | visible info, notVisible info' ->-            continue ts0 ps0 =<< freshName_ (absName b)+bindParameters npars par@(A.DomainFull (A.TBind _ xs e) : bs) a ret =+  setCurrentRange par $+  typeError . GenericDocError =<< do+    let s | length xs > 1 = "s"+          | otherwise     = ""+    text ("Unexpected type signature for parameter" ++ s) <+> sep (map prettyA xs) -         | otherwise                      -> __IMPOSSIBLE__-             -- Andreas, 2016-12-30 Concrete.Definition excludes this case-      where-      continue ts ps x = do-        addContext (x, arg) $-          bindParameters' (raise 1 ts) ps (absBody b) $ \ tel s ->-            ret (ExtendTel arg $ Abs (nameToArgName x) tel) s-    _ -> __IMPOSSIBLE__+bindParameters _ (A.DomainFull A.TLet{} : _) _ _ = __IMPOSSIBLE__ +bindParameters _ (par@(A.DomainFree arg) : ps) _ _+  | getModality arg /= defaultModality = setCurrentRange par $+     typeError . GenericDocError =<< do+       text "Unexpected modality/relevance annotation in" <+> prettyA par +bindParameters npars ps0@(par@(A.DomainFree arg) : ps) t ret = do+  let x          = namedArg arg+      TelV tel _ = telView' t+  case insertImplicit arg $ telToList tel of+    NoInsertNeeded -> continue ps $ A.unBind x+    ImpInsert _    -> continue ps0 =<< freshName_ (absName b)+    BadImplicits   -> setCurrentRange par $+     typeError . GenericDocError =<< do+       text "Unexpected parameter" <+> prettyA par+    NoSuchName x   -> setCurrentRange par $+      typeError . GenericDocError =<< do+        text ("No parameter of name " ++ x)+  where+    Pi dom@(Dom{domInfo = info', unDom = a}) b = unEl t+    continue ps x = bindParameter npars ps x dom b ret++bindParameter :: Int -> [A.LamBinding] -> Name -> Dom Type -> Abs Type -> (Telescope -> Type -> TCM a) -> TCM a+bindParameter npars ps x a b ret =+  addContext (x, a) $+    bindParameters (npars - 1) ps (absBody b) $ \ tel s ->+      ret (ExtendTel a $ Abs (nameToArgName x) tel) s+ -- | Check that the arguments to a constructor fits inside the sort of the datatype.---   The first argument is the type of the constructor.+--   The third argument is the type of the constructor. -- --   As a side effect, return the arity of the constructor. -fitsIn :: [IsForced] -> Type -> Sort -> TCM Int-fitsIn forceds t s = do+fitsIn :: UniverseCheck -> [IsForced] -> Type -> Sort -> TCM Int+fitsIn uc forceds t s = do   reportSDoc "tc.data.fits" 10 $-    sep [ text "does" <+> prettyTCM t-        , text "of sort" <+> prettyTCM (getSort t)-        , text "fit in" <+> prettyTCM s <+> text "?"+    sep [ "does" <+> prettyTCM t+        , "of sort" <+> prettyTCM (getSort t)+        , "fit in" <+> prettyTCM s <+> "?"         ]   -- The code below would be simpler, but doesn't allow datatypes   -- to be indexed by the universe level.   -- s' <- instantiateFull (getSort t)   -- noConstraints $ s' `leqSort` s-  t <- reduce t-  case unEl t of-    Pi dom b -> do-      withoutK <- optWithoutK <$> pragmaOptions+++  vt <- do+    t <- pathViewAsPi t+    return $ case t of+                  Left (a,b)     -> Just (True ,a,b)+                  Right (El _ t) | Pi a b <- t+                                 -> Just (False,a,b)+                  _              -> Nothing+  case vt of+    Just (isPath, dom, b) -> do+      withoutK <- withoutKOption       let (forced,forceds') = nextIsForced forceds       unless (isForced forced && not withoutK) $ do         sa <- reduce $ getSort dom-        unless (sa == SizeUniv) $ sa `leqSort` s+        unless (isPath || uc == NoUniverseCheck || sa == SizeUniv) $ sa `leqSort` s       addContext (absName b, dom) $ do-        succ <$> fitsIn forceds' (absBody b) (raise 1 s)-    _ -> return 0 -- getSort t `leqSort` s  -- Andreas, 2013-04-13 not necessary since constructor type ends in data type+        succ <$> fitsIn uc forceds' (absBody b) (raise 1 s)+    _ -> do+      getSort t `leqSort` s+      return 0 +-- | When --without-K is enabled, we should check that the sorts of+--   the index types fit into the sort of the datatype.+checkIndexSorts :: Sort -> Telescope -> TCM ()+checkIndexSorts s = \case+  EmptyTel -> return ()+  ExtendTel a tel' -> do+    getSort a `leqSort` s+    underAbstraction a tel' $ checkIndexSorts (raise 1 s)+ -- | Return the parameters that share variables with the indices -- nonLinearParameters :: Int -> Type -> TCM [Int] -- nonLinearParameters nPars t = +data IsPathCons = PathCons | PointCons+  deriving (Eq,Show)+ -- | Check that a type constructs something of the given datatype. The first---   argument is the number of parameters to the datatype.+--   argument is the number of parameters to the datatype and the second the+--   number of additional non-parameters in the context (1 when generalizing, 0+--   otherwise). ---constructs :: Int -> Type -> QName -> TCM ()-constructs nofPars t q = constrT 0 t+constructs :: Int -> Int -> Type -> QName -> TCM IsPathCons+constructs nofPars nofExtraVars t q = constrT nofExtraVars t     where         -- The number n counts the proper (non-parameter) constructor arguments.-        constrT :: Nat -> Type -> TCM ()+        constrT :: Nat -> Type -> TCM IsPathCons         constrT n t = do             t <- reduce t+            pathV <- pathViewAsPi'whnf             case unEl t of                 Pi _ (NoAbs _ b)  -> constrT n b                 Pi a b            -> underAbstraction a b $ constrT (n + 1)                   -- OR: addCxtString (absName b) a $ constrT (n + 1) (absBody b)+                _ | Left ((a,b),_) <- pathV t -> do+                      _ <- case b of+                             NoAbs _ b -> constrT n b+                             b         -> underAbstraction a b $ constrT (n + 1)+                      return PathCons                 Def d es | d == q -> do                   let vs = fromMaybe __IMPOSSIBLE__ $ allApplyElims es                   (pars, ixs) <- normalise $ splitAt nofPars vs                   -- check that the constructor parameters are the data parameters                   checkParams n pars+                  return PointCons                 MetaV{} -> do                   def <- getConstInfo q                   -- Analyse the type of q (name of the data type)@@ -366,17 +1108,18 @@                              take nofPars $ downFrom (nofPars + n)                   -- The indices are fresh metas                   xs <- newArgsMeta =<< piApplyM td us-                  let t' = El (dataSort $ theDef def) $ Def q $ map Apply $ us ++ xs+                  let t' = El (raise n $ dataSort $ theDef def) $ Def q $ map Apply $ us ++ xs                   -- Andreas, 2017-11-07, issue #2840                   -- We should not postpone here, otherwise we might upset the positivity checker.-                  noConstraints $ equalType t t'-                  constrT n t'+                  ifM (tryConversion $ equalType t t')+                      (constrT n t')+                      (typeError $ ShouldEndInApplicationOfTheDatatype t)                 _ -> typeError $ ShouldEndInApplicationOfTheDatatype t          checkParams n vs = zipWithM_ sameVar vs ps             where-                nvs = size vs-                ps = genericTake nvs $ downFrom (n + nvs)+                nvs = length vs+                ps  = reverse $ take nvs [n..]                  sameVar arg i                   -- skip irrelevant parameters@@ -415,11 +1158,13 @@       def <- getConstInfo q       case theDef def of         Axiom       {} -> return (Just False)+        DataOrRecSig{} -> return Nothing         Function    {} -> return Nothing         Datatype    { dataInduction = CoInductive } -> return (Just True)         Datatype    { dataInduction = Inductive   } -> return (Just False)         Record      {  recInduction = Just CoInductive } -> return (Just True)         Record      {  recInduction = _                } -> return (Just False)+        GeneralizableVar{} -> __IMPOSSIBLE__         Constructor {} -> __IMPOSSIBLE__         Primitive   {} -> __IMPOSSIBLE__         AbstractDefn{} -> __IMPOSSIBLE__@@ -432,3 +1177,4 @@     Sort  {} -> return (Just False)     MetaV {} -> return Nothing     DontCare{} -> __IMPOSSIBLE__+    Dummy s    -> __IMPOSSIBLE_VERBOSE__ s
src/full/Agda/TypeChecking/Rules/Decl.hs view
@@ -21,6 +21,8 @@ import Data.Map (Map) import qualified Data.Sequence as Seq import qualified Data.Set as Set+import qualified Data.IntSet as IntSet+import qualified Data.Map as Map import Data.Set (Set)  import Agda.Interaction.Options@@ -28,6 +30,7 @@  import qualified Agda.Syntax.Abstract as A import Agda.Syntax.Abstract.Views (deepUnscopeDecl, deepUnscopeDecls)+import qualified Agda.Syntax.Concrete.Name as C import Agda.Syntax.Internal import qualified Agda.Syntax.Reflected as R import qualified Agda.Syntax.Info as Info@@ -41,9 +44,12 @@ import Agda.TypeChecking.Monad.Builtin import qualified Agda.TypeChecking.Monad.Benchmark as Bench +import Agda.TypeChecking.CheckInternal import Agda.TypeChecking.Constraints import Agda.TypeChecking.Conversion+import Agda.TypeChecking.IApplyConfluence import Agda.TypeChecking.Errors+import Agda.TypeChecking.Generalize import Agda.TypeChecking.Injectivity import Agda.TypeChecking.Irrelevance import Agda.TypeChecking.Positivity@@ -77,6 +83,7 @@ import Agda.Utils.Except import Agda.Utils.Functor import Agda.Utils.Function+import qualified Agda.Utils.HashMap as HMap import Agda.Utils.Lens import Agda.Utils.Maybe import Agda.Utils.Monad@@ -90,8 +97,8 @@ -- | Cached checkDecl checkDeclCached :: A.Declaration -> TCM () checkDeclCached d@A.ScopedDecl{} = checkDecl d-checkDeclCached d@(A.Section minfo mname tbinds _) = do-  e <- readFromCachedLog+checkDeclCached d@(A.Section minfo mname (A.GeneralizeTel _ tbinds) _) = do+  e <- readFromCachedLog  -- Can ignore the set of generalizable vars (they occur in the telescope)   reportSLn "cache.decl" 10 $ "checkDeclCached: " ++ show (isJust e)   case e of     Just (EnterSection minfo' mname' tbinds', _)@@ -130,7 +137,7 @@    -- changes to CS inside a RecDef or Mutual ought not happen,    -- but they do happen, so we discard them.    ignoreChanges m = do-     cs <- gets $ stLoadedFileCache . stPersistentState+     cs <- getsTC $ stLoadedFileCache . stPersistentState      cleanCachedLog      _ <- m      modifyPersistentState $ \st -> st{stLoadedFileCache = cs}@@ -150,7 +157,7 @@  checkDecl :: A.Declaration -> TCM () checkDecl d = setCurrentRange d $ do-    reportSDoc "tc.decl" 10 $ text "checking declaration"+    reportSDoc "tc.decl" 10 $ "checking declaration"     debugPrintDecl d     reportSDoc "tc.decl" 90 $ (text . show) (deepUnscopeDecl d)     reportSDoc "tc.decl" 10 $ prettyA d  -- Might loop, see e.g. Issue 1597@@ -167,8 +174,9 @@         impossible  m = m $>  __IMPOSSIBLE__                         -- We're definitely inside a mutual block. -    finalChecks <- case d of+    (finalChecks, metas) <- metasCreatedBy $ case d of       A.Axiom{}                -> meta $ checkTypeSignature d+      A.Generalize s i info x e -> meta $ inConcreteMode $ checkGeneralize s i info x e       A.Field{}                -> typeError FieldOutsideRecord       A.Primitive i x e        -> meta $ checkPrimitive i x e       A.Mutual i ds            -> mutual i ds $ checkMutual i ds@@ -178,16 +186,16 @@       A.Pragma i p             -> none $ checkPragma i p       A.ScopedDecl scope ds    -> none $ setScope scope >> mapM_ checkDeclCached ds       A.FunDef i x delayed cs  -> impossible $ check x i $ checkFunDef delayed i x cs-      A.DataDef i x ps cs      -> impossible $ check x i $ checkDataDef i x ps cs-      A.RecDef i x ind eta c ps tel cs -> mutual empty [d] $ check x i $ do-                                    checkRecDef i x ind eta c ps tel cs+      A.DataDef i x uc ps cs   -> impossible $ check x i $ checkDataDef i x uc ps cs+      A.RecDef i x uc ind eta c ps tel cs -> impossible $ check x i $ do+                                    checkRecDef i x uc ind eta c ps tel cs                                     blockId <- mutualBlockOf x                                      -- Andreas, 2016-10-01 testing whether                                     -- envMutualBlock is set correctly.                                     -- Apparently not.                                     verboseS "tc.decl.mutual" 70 $ do-                                      current <- asks envMutualBlock+                                      current <- asksTC envMutualBlock                                       unless (Just blockId == current) $ do                                         reportSLn "" 0 $ unlines                                           [ "mutual block id discrepancy for " ++ prettyShow x@@ -213,34 +221,37 @@       A.UnquoteDecl mi i x e   -> checkUnquoteDecl mi i x e       A.UnquoteDef i x e       -> impossible $ checkUnquoteDef i x e -    whenNothingM (asks envMutualBlock) $ do+    whenNothingM (asksTC envMutualBlock) $ do        -- Syntax highlighting.-      highlight_ d+      highlight_ DontHightlightModuleContents d        -- Post-typing checks.       whenJust finalChecks $ \ theMutualChecks -> do         reportSLn "tc.decl" 20 $ "Attempting to solve constraints before freezing."         wakeupConstraints_   -- solve emptiness and instance constraints-        checkingWhere <- asks envCheckingWhere+        checkingWhere <- asksTC envCheckingWhere         solveSizeConstraints $ if checkingWhere then DontDefaultToInfty else DefaultToInfty         wakeupConstraints_   -- Size solver might have unblocked some constraints-        reportSLn "tc.decl" 20 $ "Freezing all metas."-        _ <- freezeMetas+        case d of+            A.Generalize{} -> pure ()+            _ -> do+              reportSLn "tc.decl" 20 $ "Freezing all metas."+              void $ freezeMetas' $ \ (MetaId x) -> IntSet.member x metas+         theMutualChecks      where      -- check record or data type signature-    checkSig i x ps t = checkTypeSignature $-      A.Axiom A.NoFunSig i defaultArgInfo Nothing x-              (A.Pi (Info.ExprRange (fuseRange ps t)) ps t)+    checkSig i x gtel t = checkTypeSignature' (Just gtel) $+      A.Axiom A.NoFunSig i defaultArgInfo Nothing x t      check x i m = Bench.billTo [Bench.Definition x] $ do-      reportSDoc "tc.decl" 5 $ text "Checking" <+> prettyTCM x <> text "."+      reportSDoc "tc.decl" 5 $ "Checking" <+> prettyTCM x <> "."       reportSLn "tc.decl.abstract" 25 $ show (Info.defAbstract i)       r <- abstract (Info.defAbstract i) m-      reportSDoc "tc.decl" 5 $ text "Checked" <+> prettyTCM x <> text "."+      reportSDoc "tc.decl" 5 $ "Checked" <+> prettyTCM x <> "."       return r      isAbstract = fmap Info.defAbstract (A.getDefInfo d) == Just AbstractDef@@ -249,9 +260,8 @@     abstract ConcreteDef = inConcreteMode     abstract AbstractDef = inAbstractMode --- Some checks that should be run at the end of a mutual--- block (or non-mutual record declaration). The set names--- contains the names defined in the mutual block.+-- Some checks that should be run at the end of a mutual block. The+-- set names contains the names defined in the mutual block. mutualChecks :: Info.MutualInfo -> A.Declaration -> [A.Declaration] -> MutualId -> Set QName -> TCM () mutualChecks mi d ds mid names = do   -- Andreas, 2014-04-11: instantiate metas in definition types@@ -264,8 +274,11 @@     checkPositivity_ mi names   -- Andreas, 2013-02-27: check termination before injectivity,   -- to avoid making the injectivity checker loop.-  local (\ e -> e { envMutualBlock = Just mid }) $ checkTermination_ d+  localTC (\ e -> e { envMutualBlock = Just mid }) $ checkTermination_ d   revisitRecordPatternTranslation nameList -- Andreas, 2016-11-19 issue #2308++  mapM_ checkIApplyConfluence_ nameList+   -- Andreas, 2015-03-26 Issue 1470:   -- Restricting coinduction to recursive does not solve the   -- actual problem, and prevents interesting sound applications@@ -315,12 +328,12 @@  checkUnquoteDecl :: Info.MutualInfo -> [Info.DefInfo] -> [QName] -> A.Expr -> TCM FinalChecks checkUnquoteDecl mi is xs e = do-  reportSDoc "tc.unquote.decl" 20 $ text "Checking unquoteDecl" <+> sep (map prettyTCM xs)+  reportSDoc "tc.unquote.decl" 20 $ "Checking unquoteDecl" <+> sep (map prettyTCM xs)   Nothing <$ unquoteTop xs e  checkUnquoteDef :: [Info.DefInfo] -> [QName] -> A.Expr -> TCM () checkUnquoteDef _ xs e = do-  reportSDoc "tc.unquote.decl" 20 $ text "Checking unquoteDef" <+> sep (map prettyTCM xs)+  reportSDoc "tc.unquote.decl" 20 $ "Checking unquoteDef" <+> sep (map prettyTCM xs)   () <$ unquoteTop xs e  -- | Run a reflected TCM computatation expected to define a given list of@@ -350,8 +363,8 @@   t' <- instantiateFull t   modifySignature $ updateDefinition q $ updateDefType $ const t'   reportSDoc "tc.decl.inst" 30 $ vcat-    [ text "  t  = " <+> prettyTCM t-    , text "  t' = " <+> prettyTCM t'+    [ "  t  = " <+> prettyTCM t+    , "  t' = " <+> prettyTCM t'     ]  -- Andreas, 2014-04-11@@ -370,15 +383,21 @@ --   def <- instantiateFull def --   modifySignature $ updateDefinition q $ const def --- | Highlight a declaration.-highlight_ :: A.Declaration -> TCM ()-highlight_ d = do+data HighlightModuleContents = DontHightlightModuleContents | DoHighlightModuleContents+  deriving (Eq)++-- | Highlight a declaration. Called after checking a mutual block (to ensure+--   we have the right definitions for all names). For modules inside mutual+--   blocks we haven't highlighted their contents, but for modules not in a+--   mutual block we have. Hence the flag.+highlight_ :: HighlightModuleContents -> A.Declaration -> TCM ()+highlight_ hlmod d = do   let highlight d = generateAndPrintSyntaxInfo d Full True   Bench.billTo [Bench.Highlighting] $ case d of     A.Axiom{}                -> highlight d     A.Field{}                -> __IMPOSSIBLE__     A.Primitive{}            -> highlight d-    A.Mutual i ds            -> mapM_ highlight_ $ deepUnscopeDecls ds+    A.Mutual i ds            -> mapM_ (highlight_ DoHighlightModuleContents) $ deepUnscopeDecls ds     A.Apply{}                -> highlight d     A.Import{}               -> highlight d     A.Pragma{}               -> highlight d@@ -388,14 +407,15 @@     A.DataSig{}              -> highlight d     A.Open{}                 -> highlight d     A.PatternSynDef{}        -> highlight d+    A.Generalize{}           -> highlight d     A.UnquoteDecl{}          -> highlight d     A.UnquoteDef{}           -> highlight d-    A.Section i x tel _      -> highlight (A.Section i x tel [])-      -- Each block in the section has already been highlighted,-      -- all that remains is the module declaration.+    A.Section i x tel ds     -> do+      highlight (A.Section i x tel [])+      when (hlmod == DoHighlightModuleContents) $ mapM_ (highlight_ hlmod) (deepUnscopeDecls ds)     A.RecSig{}               -> highlight d-    A.RecDef i x ind eta c ps tel cs ->-      highlight (A.RecDef i x ind eta c [] dummy cs)+    A.RecDef i x uc ind eta c ps tel cs ->+      highlight (A.RecDef i x uc ind eta c A.noDataDefParams dummy cs)       -- The telescope has already been highlighted.       where       -- Andreas, 2016-01-22, issue 1790@@ -414,16 +434,12 @@ checkTermination_ :: A.Declaration -> TCM () checkTermination_ d = Bench.billTo [Bench.Termination] $ do   reportSLn "tc.decl" 20 $ "checkDecl: checking termination..."-  case d of-      -- Record module definitions should not be termination-checked twice.-      A.RecDef {} -> return ()-      _ -> disableDestructiveUpdate $ do-        termErrs <- termDecl d-        -- If there are some termination errors, we collect them in-        -- the state.-        -- The termination checker already marked non-terminating functions as such.-        unless (null termErrs) $ do-          warning $ TerminationIssue termErrs+  termErrs <- termDecl d+  -- If there are some termination errors, we collect them in the+  -- state. The termination checker already marked non-terminating+  -- functions as such.+  unless (null termErrs) $ do+    warning $ TerminationIssue termErrs  -- | Check a set of mutual names for positivity. checkPositivity_ :: Info.MutualInfo -> Set QName -> TCM ()@@ -442,7 +458,7 @@ --   for the old coinduction.) checkCoinductiveRecords :: [A.Declaration] -> TCM () checkCoinductiveRecords ds = forM_ ds $ \case-  A.RecDef _ q (Just (Ranged r CoInductive)) _ _ _ _ _ -> setCurrentRange r $ do+  A.RecDef _ q _ (Just (Ranged r CoInductive)) _ _ _ _ _ -> setCurrentRange r $ do     unlessM (isRecursiveRecord q) $ typeError $ GenericError $       "Only recursive records can be coinductive"   _ -> return ()@@ -476,7 +492,7 @@           _ -> reportSLn "tc.inj.check" 20 $              prettyShow q ++ " is not verified as terminating, thus, not considered for injectivity"       _ -> do-        abstr <- asks envAbstractMode+        abstr <- asksTC envAbstractMode         reportSLn "tc.inj.check" 20 $           "we are in " ++ show abstr ++ " and " ++              prettyShow q ++ " is abstract or not a function, thus, not considered for injectivity"@@ -512,33 +528,71 @@   let pubAbs = defAccess == PublicAccess && defAbstract == AbstractDef   if not pubAbs then m else do     (a, ms) <- metasCreatedBy m-    xs <- freezeMetas' $ (`Set.member` ms)+    xs <- freezeMetas' $ (`IntSet.member` ms) . metaId     reportSDoc "tc.decl.ax" 20 $ vcat-      [ text "Abstract type signature produced new metas: " <+> sep (map prettyTCM $ Set.toList ms)-      , text "We froze the following ones of these:       " <+> sep (map prettyTCM xs)+      [ "Abstract type signature produced new metas: " <+> sep (map prettyTCM $ IntSet.toList ms)+      , "We froze the following ones of these:       " <+> sep (map prettyTCM xs)       ]     return a +checkGeneralize :: Set QName -> Info.DefInfo -> ArgInfo -> QName -> A.Expr -> TCM ()+checkGeneralize s i info x e = do++    -- Check the signature and collect the created metas.+    (telNames, tGen) <-+      generalizeType s $ locallyTC eGeneralizeMetas (const YesGeneralize) $+        workOnTypes $ isType_ e+    let n = length telNames++    reportSDoc "tc.decl.gen" 10 $ sep+      [ "checked type signature of generalizable variable" <+> prettyTCM x <+> ":"+      , nest 2 $ prettyTCM tGen+      ]++    addConstant x $ (defaultDefn info x tGen GeneralizableVar)+                    { defArgGeneralizable = SomeGeneralizableArgs n }++ -- | Type check an axiom. checkAxiom :: A.Axiom -> Info.DefInfo -> ArgInfo ->               Maybe [Occurrence] -> QName -> A.Expr -> TCM ()-checkAxiom funSig i info0 mp x e = whenAbstractFreezeMetasAfter i $ do+checkAxiom = checkAxiom' Nothing++-- | Data and record type signatures need to remember the generalized+--   parameters for when checking the corresponding definition, so for these we+--   pass in the parameter telescope separately.+checkAxiom' :: Maybe A.GeneralizeTelescope -> A.Axiom -> Info.DefInfo -> ArgInfo ->+               Maybe [Occurrence] -> QName -> A.Expr -> TCM ()+checkAxiom' gentel funSig i info0 mp x e = whenAbstractFreezeMetasAfter i $ do   -- Andreas, 2016-07-19 issues #418 #2102:   -- We freeze metas in type signatures of abstract definitions, to prevent   -- leakage of implementation details.    -- Andreas, 2012-04-18  if we are in irrelevant context, axioms is irrelevant   -- even if not declared as such (Issue 610).-  rel <- max (getRelevance info0) <$> asks envRelevance+  rel <- max (getRelevance info0) <$> asksTC envRelevance   let info = setRelevance rel info0-  -- rel <- ifM ((Irrelevant ==) <$> asks envRelevance) (return Irrelevant) (return rel0)-  t <- workOnTypes $ isType_ e+  -- rel <- ifM ((Irrelevant ==) <$> asksTC envRelevance) (return Irrelevant) (return rel0)+  (genParams, npars, t) <- workOnTypes $ case gentel of+        Nothing     -> ([], 0,) <$> isType_ e+        Just gentel ->+          checkGeneralizeTelescope gentel $ \ genParams ptel -> do+            t <- workOnTypes $ isType_ e+            return (genParams, size ptel, abstract ptel t)+   reportSDoc "tc.decl.ax" 10 $ sep     [ text $ "checked type signature"-    , nest 2 $ prettyTCM rel <> prettyTCM x <+> text ":" <+> prettyTCM t-    , nest 2 $ text "of sort " <+> prettyTCM (getSort t)+    , nest 2 $ prettyTCM rel <> prettyTCM x <+> ":" <+> prettyTCM t+    , nest 2 $ "of sort " <+> prettyTCM (getSort t)     ] +  when (not $ null genParams) $+    reportSLn "tc.decl.ax" 40 $ "  generalized params: " ++ show genParams++  -- Jesper, 2018-06-05: should be done AFTER generalizing+  --whenM (optDoubleCheck <$> pragmaOptions) $ workOnTypes $ do+  --  checkInternal (unEl t) (sort $ getSort t)+   -- Andreas, 2015-03-17 Issue 1428: Do not postulate sizes in parametrized   -- modules!   when (funSig == A.NoFunSig) $ do@@ -567,9 +621,11 @@       (defaultDefn info x t $          case funSig of            A.FunSig   -> set funMacro (Info.defMacro i == MacroDef) emptyFunction+           A.NoFunSig | isJust gentel -> DataOrRecSig npars            A.NoFunSig -> Axiom)   -- NB: used also for data and record type sigs-        { defArgOccurrences = occs-        , defPolarity       = pols+        { defArgOccurrences    = occs+        , defPolarity          = pols+        , defGeneralizedParams = genParams         }    -- Add the definition to the instance table, if needed@@ -579,7 +635,7 @@   traceCall (IsType_ e) $ do -- need Range for error message     -- Andreas, 2016-06-21, issue #2054     -- Do not default size metas to ∞ in local type signatures-    checkingWhere <- asks envCheckingWhere+    checkingWhere <- asksTC envCheckingWhere     solveSizeConstraints $ if checkingWhere then DontDefaultToInfty else DefaultToInfty    -- Andreas, 2011-05-31, that freezing below is probably wrong:@@ -588,13 +644,23 @@ -- | Type check a primitive function declaration. checkPrimitive :: Info.DefInfo -> QName -> A.Expr -> TCM () checkPrimitive i x e =-    traceCall (CheckPrimitive (getRange i) (qnameName x) e) $ do  -- TODO!! (qnameName)+    traceCall (CheckPrimitive (getRange i) x e) $ do     (name, PrimImpl t' pf) <- lookupPrimitiveFunctionQ x-    -- Primitive functions on nats are BUILTIN not 'primitive'+    -- Certain "primitive" functions are BUILTIN rather than+    -- primitive.     let builtinPrimitives =-          [ "primNatPlus", "primNatMinus" , "primNatTimes"-          , "primNatDivSucAux", "primNatModSucAux"-          , "primNatEquality", "primNatLess" ]+          [ "primNatPlus"+          , "primNatMinus"+          , "primNatTimes"+          , "primNatDivSucAux"+          , "primNatModSucAux"+          , "primNatEquality"+          , "primNatLess"+          , "primLevelZero"+          , "primLevelSuc"+          , "primLevelMax"+          , "primSetOmega"+          ]     when (elem name builtinPrimitives) $ typeError $ NoSuchPrimitiveFunction name     t <- isType_ e     noConstraints $ equalType t t'@@ -622,65 +688,11 @@         A.BuiltinPragma x e -> bindBuiltin x e         A.BuiltinNoDefPragma b x -> bindBuiltinNoDef b x         A.RewritePragma q   -> addRewriteRule q-        A.CompiledTypePragma x hs -> do-          def <- getConstInfo x-          case theDef def of-            Axiom{} -> addHaskellType x hs-            _       -> typeError $ GenericError-                        "COMPILED_TYPE directive only works on postulates"-        A.CompiledDataPragma x hs hcs -> do-          def <- getConstInfo x-          -- Check that the pragma appears in the same module-          -- as the datatype.-          assertCurrentModule x $-              "COMPILED_DATA directives must appear in the same module " ++-              "as their corresponding datatype definition,"-          case theDef def of-            Datatype{dataCons = cs} -> addHaskellData x hs hcs-            Record{recConHead = ch} -> addHaskellData x hs hcs-            _ -> typeError $ GenericError "COMPILED_DATA on non datatype"         A.CompilePragma b x s -> do           assertCurrentModule x $               "COMPILE pragmas must appear in the same module " ++               "as their corresponding definitions,"           addPragma b x s-        A.CompiledPragma x hs -> do-          def <- getConstInfo x-          let addCompiled = addHaskellCode x hs-          case theDef def of-            Axiom{} -> addCompiled-            Function{} -> addCompiled-            _   -> typeError $ GenericError "COMPILED directive only works on postulates and functions"--        A.CompiledExportPragma x hs -> do-          def <- getConstInfo x-          let correct = case theDef def of-                            Function{} -> True-                            Constructor{} -> False-                            _   -> False-          if not correct-            then typeError $ GenericError "COMPILED_EXPORT directive only works on functions"-            else addHaskellExport x hs-        A.CompiledJSPragma x ep ->-          addJSCode x ep-        A.CompiledUHCPragma x cr -> do-          def <- getConstInfo x-          case theDef def of-            Axiom{} -> addCoreCode x cr-            _ -> typeError $ GenericError "COMPILED_UHC directive only works on postulates" -- only allow postulates for the time being-        A.CompiledDataUHCPragma x crd crcs -> do-          -- TODO mostly copy-paste from the CompiledDataPragma, should be refactored into a seperate function-          def <- getConstInfo x-          -- Check that the pragma appears in the same module-          -- as the datatype.-          m <- currentModule-          let m' = qnameModule $ defName def-          unless (m == m') $ typeError $ GenericError $-              "COMPILED_DATA_UHC directives must appear in the same module " ++-              "as their corresponding datatype definition,"-          case theDef def of-            Datatype{dataCons = cs} -> addCoreType x crd crcs-            _ -> typeError $ GenericError "COMPILED_DATA_UHC on non datatype"         A.StaticPragma x -> do           def <- getConstInfo x           case theDef def of@@ -717,21 +729,24 @@    verboseS "tc.decl.mutual" 20 $ do     reportSDoc "tc.decl.mutual" 20 $ vcat $-      (text "Checking mutual block" <+> text (show blockId) <> text ":") :+      ("Checking mutual block" <+> text (show blockId) <> ":") :       map (nest 2 . prettyA) ds    insertMutualBlockInfo blockId i-  local (\e -> e { envTerminationCheck = () <$ Info.mutualTermCheck i }) $+  localTC (\e -> e { envTerminationCheck = () <$ Info.mutualTermCheck i }) $     mapM_ checkDecl ds    (blockId, ) . mutualNames <$> lookupMutualBlock blockId  -- | Type check the type signature of an inductive or recursive definition. checkTypeSignature :: A.TypeSignature -> TCM ()-checkTypeSignature (A.ScopedDecl scope ds) = do+checkTypeSignature = checkTypeSignature' Nothing++checkTypeSignature' :: Maybe A.GeneralizeTelescope -> A.TypeSignature -> TCM ()+checkTypeSignature' gtel (A.ScopedDecl scope ds) = do   setScope scope-  mapM_ checkTypeSignature ds-checkTypeSignature (A.Axiom funSig i info mp x e) =+  mapM_ (checkTypeSignature' gtel) ds+checkTypeSignature' gtel (A.Axiom funSig i info mp x e) =   Bench.billTo [Bench.Definition x] $   Bench.billTo [Bench.Typing, Bench.TypeSig] $     let abstr = case Info.defAccess i of@@ -741,13 +756,14 @@             | otherwise -> inConcreteMode           PublicAccess  -> inConcreteMode           OnlyQualified -> __IMPOSSIBLE__-    in abstr $ checkAxiom funSig i info mp x e-checkTypeSignature _ = __IMPOSSIBLE__   -- type signatures are always axioms+    in abstr $ checkAxiom' gtel funSig i info mp x e+checkTypeSignature' _ _ =+  __IMPOSSIBLE__   -- type signatures are always axioms   -- | Type check a module. -checkSection :: Info.ModuleInfo -> ModuleName -> A.Telescope -> [A.Declaration] -> TCM ()+checkSection :: Info.ModuleInfo -> ModuleName -> A.GeneralizeTelescope -> [A.Declaration] -> TCM () checkSection _ x tel ds = newSection x tel $ mapM_ checkDeclCached ds  @@ -770,22 +786,22 @@      check tel []             = return tel     check EmptyTel (_:_)     = bad-    check (ExtendTel (Dom info _) btel) args0@(Arg info' (Named rname _) : args) =+    check (ExtendTel dom@Dom{domInfo = info} btel) args0@(Arg info' (Named rname _) : args) =       let name = fmap rangedThing rname-          y    = absName btel+          my   = fmap rangedThing $ domName dom           tel  = absBody btel in       case (argInfoHiding info, argInfoHiding info', name) of         (Instance{}, NotHidden, _)        -> check tel args0         (Instance{}, Hidden, _)           -> check tel args0         (Instance{}, Instance{}, Nothing) -> check tel args         (Instance{}, Instance{}, Just x)-          | x == y                        -> check tel args+          | Just x == my                  -> check tel args           | otherwise                     -> check tel args0         (Hidden, NotHidden, _)            -> check tel args0         (Hidden, Instance{}, _)           -> check tel args0         (Hidden, Hidden, Nothing)         -> check tel args         (Hidden, Hidden, Just x)-          | x == y                        -> check tel args+          | Just x == my                  -> check tel args           | otherwise                     -> check tel args0         (NotHidden, NotHidden, _)         -> check tel args         (NotHidden, Hidden, _)            -> bad@@ -842,13 +858,13 @@     -- Take the module parameters that will be instantiated by @args@.     let tel'' = telFromList $ take (size tel' - size etaTel) $ telToList tel'     reportSDoc "tc.mod.apply" 15 $ vcat-      [ text "applying section" <+> prettyTCM m2-      , nest 2 $ text "args =" <+> sep (map prettyA args)-      , nest 2 $ text "ptel =" <+> escapeContext (size ptel) (prettyTCM ptel)-      , nest 2 $ text "tel  =" <+> prettyTCM tel-      , nest 2 $ text "tel' =" <+> prettyTCM tel'-      , nest 2 $ text "tel''=" <+> prettyTCM tel''-      , nest 2 $ text "eta  =" <+> escapeContext (size ptel) (addContext tel'' $ prettyTCM etaTel)+      [ "applying section" <+> prettyTCM m2+      , nest 2 $ "args =" <+> sep (map prettyA args)+      , nest 2 $ "ptel =" <+> escapeContext (size ptel) (prettyTCM ptel)+      , nest 2 $ "tel  =" <+> prettyTCM tel+      , nest 2 $ "tel' =" <+> prettyTCM tel'+      , nest 2 $ "tel''=" <+> prettyTCM tel''+      , nest 2 $ "eta  =" <+> escapeContext (size ptel) (addContext tel'' $ prettyTCM etaTel)       ]     -- Now, type check arguments.     ts <- (noConstraints $ checkArguments_ DontExpandLast (getRange i) args tel') >>= \case@@ -858,17 +874,17 @@     -- Perform the application of the module parameters.     let aTel = tel' `apply` ts     reportSDoc "tc.mod.apply" 15 $ vcat-      [ nest 2 $ text "aTel =" <+> prettyTCM aTel+      [ nest 2 $ "aTel =" <+> prettyTCM aTel       ]     -- Andreas, 2014-04-06, Issue 1094:     -- Add the section with well-formed telescope.     addContext (KeepNames aTel) $ do       reportSDoc "tc.mod.apply" 80 $-        text "addSection" <+> prettyTCM m1 <+> (getContextTelescope >>= \ tel -> inTopContext (prettyTCM tel))+        "addSection" <+> prettyTCM m1 <+> (getContextTelescope >>= \ tel -> inTopContext (prettyTCM tel))       addSection m1      reportSDoc "tc.mod.apply" 20 $ vcat-      [ sep [ text "applySection", prettyTCM m1, text "=", prettyTCM m2, fsep $ map prettyTCM (vs ++ ts) ]+      [ sep [ "applySection", prettyTCM m1, "=", prettyTCM m2, fsep $ map prettyTCM (vs ++ ts) ]       , nest 2 $ pretty copyInfo       ]     args <- instantiateFull $ vs ++ ts@@ -877,7 +893,7 @@     addContext (KeepNames aTel) $       applySection m1 (ptel `abstract` aTel) m2 (raise n args ++ etaArgs) copyInfo -checkSectionApplication' i m1 (A.RecordModuleIFS x) copyInfo = do+checkSectionApplication' i m1 (A.RecordModuleInstance x) copyInfo = do   let name = mnameToQName x   tel' <- lookupSection x   vs   <- moduleParamsToApply x@@ -888,31 +904,32 @@       telInst = instFinal tel        -- Locate last (rightmost) parameter and make it @Instance@.+      -- Issue #3463: also name it so it can be given by name.       instFinal :: Telescope -> Telescope       -- Telescopes do not have @NoAbs@.       instFinal (ExtendTel _ NoAbs{}) = __IMPOSSIBLE__       -- Found last parameter: switch it to @Instance@.-      instFinal (ExtendTel (Dom info t) (Abs n EmptyTel)) =-                 ExtendTel (Dom ifo' t) (Abs n EmptyTel)-        where ifo' = makeInstance info-      -- Otherwise, keep searching for last parameter:+      instFinal (ExtendTel dom (Abs n EmptyTel)) =+                 ExtendTel do' (Abs n EmptyTel)+        where do' = makeInstance dom { domName = Just $ unranged "r" }+      -- Otherwise, keep searchinf for last parameter:       instFinal (ExtendTel arg (Abs n tel)) =                  ExtendTel arg (Abs n (instFinal tel))       -- Before instFinal is invoked, we have checked that the @tel@ is not empty.       instFinal EmptyTel = __IMPOSSIBLE__    reportSDoc "tc.mod.apply" 20 $ vcat-    [ sep [ text "applySection", prettyTCM name, text "{{...}}" ]-    , nest 2 $ text "x       =" <+> prettyTCM x-    , nest 2 $ text "name    =" <+> prettyTCM name-    , nest 2 $ text "tel     =" <+> prettyTCM tel-    , nest 2 $ text "telInst =" <+> prettyTCM telInst-    , nest 2 $ text "vs      =" <+> sep (map prettyTCM vs)-    -- , nest 2 $ text "args    =" <+> sep (map prettyTCM args)+    [ sep [ "applySection", prettyTCM name, "{{...}}" ]+    , nest 2 $ "x       =" <+> prettyTCM x+    , nest 2 $ "name    =" <+> prettyTCM name+    , nest 2 $ "tel     =" <+> prettyTCM tel+    , nest 2 $ "telInst =" <+> prettyTCM telInst+    , nest 2 $ "vs      =" <+> sep (map prettyTCM vs)+    -- , nest 2 $ "args    =" <+> sep (map prettyTCM args)     ]   reportSDoc "tc.mod.apply" 60 $ vcat-    [ nest 2 $ text "vs      =" <+> text (show vs)-    -- , nest 2 $ text "args    =" <+> text (show args)+    [ nest 2 $ "vs      =" <+> text (show vs)+    -- , nest 2 $ "args    =" <+> text (show args)     ]   when (tel == EmptyTel) $     typeError $ GenericError $ prettyShow (qnameToConcrete name) ++ " is not a parameterised section"@@ -920,12 +937,12 @@   addContext telInst $ do     vs <- moduleParamsToApply x     reportSDoc "tc.mod.apply" 20 $ vcat-      [ nest 2 $ text "vs      =" <+> sep (map prettyTCM vs)-      , nest 2 $ text "args    =" <+> sep (map (parens . prettyTCM) args)+      [ nest 2 $ "vs      =" <+> sep (map prettyTCM vs)+      , nest 2 $ "args    =" <+> sep (map (parens . prettyTCM) args)       ]     reportSDoc "tc.mod.apply" 60 $ vcat-      [ nest 2 $ text "vs      =" <+> text (show vs)-      , nest 2 $ text "args    =" <+> text (show args)+      [ nest 2 $ "vs      =" <+> text (show vs)+      , nest 2 $ "args    =" <+> text (show args)       ]     addSection m1     applySection m1 telInst x (vs ++ args) copyInfo@@ -960,6 +977,7 @@       A.RecSig       {} -> "RecSig"       A.RecDef       {} -> "RecDef"       A.PatternSynDef{} -> "PatternSynDef"+      A.Generalize   {} -> "Generalize"       A.UnquoteDecl  {} -> "UnquoteDecl"       A.ScopedDecl   {} -> "ScopedDecl"       A.UnquoteDef   {} -> "UnquoteDef"@@ -972,7 +990,7 @@         A.Section info mname tel ds -> do           reportSLn "tc.decl" 45 $             "section " ++ prettyShow mname ++ " has "-              ++ show (length tel) ++ " parameters and "+              ++ show (length $ A.generalizeTel tel) ++ " parameters and "               ++ show (length ds) ++ " declarations"           reportSDoc "tc.decl" 45 $ prettyA $ A.Section info mname tel []           forM_ ds $ \ d -> do
src/full/Agda/TypeChecking/Rules/Def.hs view
@@ -9,16 +9,20 @@ import Prelude hiding ( mapM, null ) #endif -import Control.Arrow ((***))+import Control.Arrow ((***),first,second) import Control.Monad.State hiding (forM, mapM) import Control.Monad.Reader hiding (forM, mapM)  import Data.Function+import qualified Data.List as List import Data.Maybe import Data.Traversable (Traversable, traverse, forM, mapM) import qualified Data.Map as Map import qualified Data.Set as Set+import Data.Semigroup (Semigroup((<>))) +import Agda.Interaction.Options+ import Agda.Syntax.Common import qualified Agda.Syntax.Concrete as C import Agda.Syntax.Concrete (exprFieldA)@@ -36,28 +40,32 @@ import Agda.TypeChecking.Monad import Agda.TypeChecking.Monad.Builtin import qualified Agda.TypeChecking.Monad.Benchmark as Bench+import Agda.TypeChecking.Warnings ( warning )  import Agda.TypeChecking.Constraints import Agda.TypeChecking.Conversion+import Agda.TypeChecking.Coverage.SplitTree import Agda.TypeChecking.Inlining import Agda.TypeChecking.MetaVars import Agda.TypeChecking.Reduce import Agda.TypeChecking.Patterns.Abstract (expandPatternSynonyms)-import Agda.TypeChecking.Pretty+import Agda.TypeChecking.Pretty hiding ((<>))+import qualified Agda.TypeChecking.Pretty as Pr import Agda.TypeChecking.Substitute import Agda.TypeChecking.Free-import Agda.TypeChecking.CheckInternal (checkType, inferSort)+import Agda.TypeChecking.CheckInternal import Agda.TypeChecking.With import Agda.TypeChecking.Telescope import Agda.TypeChecking.Injectivity import Agda.TypeChecking.Irrelevance import Agda.TypeChecking.SizedTypes.Solve import Agda.TypeChecking.RecordPatterns+import Agda.TypeChecking.Records import Agda.TypeChecking.CompiledClause (CompiledClauses'(..), hasProjectionPatterns) import Agda.TypeChecking.CompiledClause.Compile import Agda.TypeChecking.Primitive hiding (Nat) -import Agda.TypeChecking.Rules.Term                ( checkExpr, inferExpr, inferExprForWith, checkDontExpandLast, checkTelescope, catchIlltypedPatternBlockedOnMeta )+import Agda.TypeChecking.Rules.Term import Agda.TypeChecking.Rules.LHS                 ( checkLeftHandSide, LHSResult(..), bindAsPatterns ) import Agda.TypeChecking.Rules.LHS.Problem         ( AsBinding(..) ) import {-# SOURCE #-} Agda.TypeChecking.Rules.Decl ( checkDecls )@@ -65,6 +73,7 @@ import Agda.Utils.Except ( MonadError(catchError, throwError) ) import Agda.Utils.Functor import Agda.Utils.Lens+import Agda.Utils.List import Agda.Utils.Maybe ( whenNothing ) import Agda.Utils.Monad import Agda.Utils.Null@@ -87,7 +96,7 @@         info  <- flip setRelevance defaultArgInfo <$> relOfConst name         case isAlias cs t of           Just (e, mc, x) ->-            traceCall (CheckFunDefCall (getRange i) (qnameName name) cs) $ do+            traceCall (CheckFunDefCall (getRange i) name cs) $ do               -- Andreas, 2012-11-22: if the alias is in an abstract block               -- it has been frozen.  We unfreeze it to enable type inference.               -- See issue 729.@@ -100,7 +109,7 @@         when (ismacro || Info.defMacro i == MacroDef) $ checkMacroType t     `catchIlltypedPatternBlockedOnMeta` \ (err, x) -> do         reportSDoc "tc.def" 20 $ vcat $-          [ text "checking function definition got stuck on meta: " <+> text (show x) ]+          [ "checking function definition got stuck on meta: " <+> text (show x) ]         addConstraint $ CheckFunDef delayed i name cs  checkMacroType :: Type -> TCM ()@@ -112,7 +121,7 @@       resType = abstract (telFromList (drop (length telList - 1) telList)) tr   expectedType <- el primAgdaTerm --> el (primAgdaTCM <#> primLevelZero <@> primUnit)   equalType resType expectedType-    `catchError` \ _ -> typeError . GenericDocError =<< sep [ text "Result type of a macro must be"+    `catchError` \ _ -> typeError . GenericDocError =<< sep [ "Result type of a macro must be"                                                             , nest 2 $ prettyTCM expectedType ]  -- | A single clause without arguments and without type signature is an alias.@@ -132,24 +141,18 @@  -- | Check a trivial definition of the form @f = e@ checkAlias :: Type -> ArgInfo -> Delayed -> Info.DefInfo -> QName -> A.Expr -> Maybe C.Expr -> TCM ()-checkAlias t' ai delayed i name e mc = atClause name 0 (A.RHS e mc) $ do-  reportSDoc "tc.def.alias" 10 $ text "checkAlias" <+> vcat-    [ text (prettyShow name) <+> colon  <+> prettyTCM t'+checkAlias t ai delayed i name e mc = atClause name 0 (A.RHS e mc) $ do+  reportSDoc "tc.def.alias" 10 $ "checkAlias" <+> vcat+    [ text (prettyShow name) <+> colon  <+> prettyTCM t     , text (prettyShow name) <+> equals <+> prettyTCM e     ] -{--  -- Infer the type of the rhs-  (v, t) <- applyRelevanceToContext (getRelevance ai) $-                                    inferOrCheck e (Just t')-  -- v <- coerce v t t'--}--  -- Infer the type of the rhs-  v <- applyRelevanceToContext (getRelevance ai) $ checkDontExpandLast e t'-  let t = t'+  -- Infer the type of the rhs.+  -- Andreas, 2018-06-09, issue #2170.+  -- The context will only be resurrected if we have --irrelevant-projections.+  v <- applyModalityToContextFunBody ai $ checkDontExpandLast CmpLeq e t -  reportSDoc "tc.def.alias" 20 $ text "checkAlias: finished checking"+  reportSDoc "tc.def.alias" 20 $ "checkAlias: finished checking"    solveSizeConstraints DontDefaultToInfty @@ -178,6 +181,7 @@                           , clauseUnreachable = Just False                           } ]                       , funCompiled = Just $ Done [] $ bodyMod v+                      , funSplitTree = Just $ SplittingDone 0                       , funDelayed  = delayed                       , funAbstr    = Info.defAbstract i                       }@@ -187,7 +191,7 @@   when (Info.defInstance i == InstanceDef) $ do     addTypedInstance name t -  reportSDoc "tc.def.alias" 20 $ text "checkAlias: leaving"+  reportSDoc "tc.def.alias" 20 $ "checkAlias: leaving"   -- | Type check a definition by pattern matching.@@ -218,20 +222,20 @@              -> TCM () checkFunDefS t ai delayed extlam with i name withSub cs = do -    traceCall (CheckFunDefCall (getRange i) (qnameName name) cs) $ do   -- TODO!! (qnameName)+    traceCall (CheckFunDefCall (getRange i) name cs) $ do         reportSDoc "tc.def.fun" 10 $-          sep [ text "checking body of" <+> prettyTCM name-              , nest 2 $ text ":" <+> prettyTCM t-              , nest 2 $ text "full type:" <+> (prettyTCM . defType =<< getConstInfo name)+          sep [ "checking body of" <+> prettyTCM name+              , nest 2 $ ":" <+> prettyTCM t+              , nest 2 $ "full type:" <+> (prettyTCM . defType =<< getConstInfo name)               ]          reportSDoc "tc.def.fun" 70 $-          sep $ [ text "clauses:" ] ++ map (nest 2 . text . show . A.deepUnscope) cs+          sep $ [ "clauses:" ] ++ map (nest 2 . text . show . A.deepUnscope) cs          cs <- return $ map A.lhsToSpine cs          reportSDoc "tc.def.fun" 70 $-          sep $ [ text "spine clauses:" ] ++ map (nest 2 . text . show . A.deepUnscope) cs+          sep $ [ "spine clauses:" ] ++ map (nest 2 . text . show . A.deepUnscope) cs          -- Ensure that all clauses have the same number of trailing hidden patterns         -- This is necessary since trailing implicits are no longer eagerly inserted.@@ -244,7 +248,7 @@         cs <- traceCall NoHighlighting $ do -- To avoid flicker.           forM (zip cs [0..]) $ \ (c, clauseNo) -> do             atClause name clauseNo (A.clauseRHS c) $ do-              c <- applyRelevanceToContext (getRelevance ai) $ do+              (c,b) <- applyModalityToContextFunBody ai $ do                 checkClause t withSub c               -- Andreas, 2013-11-23 do not solve size constraints here yet               -- in case we are checking the body of an extended lambda.@@ -255,24 +259,61 @@               -- Andreas, 2013-10-27 add clause as soon it is type-checked               -- TODO: instantiateFull?               inTopContext $ addClauses name [c]-              return c+              return (c,b) +        (cs, CPC isOneIxs) <- return $ (second mconcat . unzip) cs++        let isSystem = not . null $ isOneIxs++        canBeSystem <- do+          -- allow VarP and ConP i0/i1 fallThrough = yes, DotP+          let pss = map namedClausePats cs+              allowed p = case p of+                VarP{} -> True+                -- pattern inserted by splitPartial+                ConP _ cpi [] | conPFallThrough cpi -> True+                DotP{} -> True+                _      -> False+          return $! all (allowed . namedArg) (concat pss)+        when isSystem $ unless canBeSystem $+          typeError $ GenericError "no pattern matching or path copatterns in systems!"++         reportSDoc "tc.def.fun" 70 $ inTopContext $ do-          sep $ [ text "checked clauses:" ] ++ map (nest 2 . text . show) cs+          sep $ [ "checked clauses:" ] ++ map (nest 2 . text . show) cs          -- After checking, remove the clauses again.         -- (Otherwise, @checkInjectivity@ loops for issue 801).         modifyFunClauses name (const [])          reportSDoc "tc.cc" 25 $ inTopContext $ do-          sep [ text "clauses before injectivity test"+          sep [ "clauses before injectivity test"               , nest 2 $ prettyTCM $ map (QNamed name) cs  -- broken, reify (QNamed n cl) expect cl to live at top level               ]         reportSDoc "tc.cc" 60 $ inTopContext $ do-          sep [ text "raw clauses: "+          sep [ "raw clauses: "               , nest 2 $ sep $ map (text . show . QNamed name) cs               ] ++        -- Systems have their own coverage and "coherence" check, we+        -- also add an absurd clause for the cases not needed.+        (cs,sys) <- if not isSystem then return (cs, Nothing) else do+                 fullType <- flip abstract t <$> getContextTelescope+                 sys <- inTopContext $ checkSystemCoverage name isOneIxs fullType cs+                 tel <- getContextTelescope+                 let c = Clause+                       { clauseFullRange = noRange+                       , clauseLHSRange  = noRange+                       , clauseTel = tel+                       , namedClausePats = teleNamedArgs tel+                       , clauseBody = Nothing+                       , clauseType = Just (defaultArg t)+                       , clauseCatchall = False+                       , clauseUnreachable = Just False+                       }+                 return (cs ++ [c], Just sys)+         -- Annotate the clauses with which arguments are actually used.         cs <- instantiateFull {- =<< mapM rebindClause -} cs         -- Andreas, 2010-11-12@@ -290,31 +331,44 @@           checkInjectivity name cs          reportSDoc "tc.cc" 15 $ inTopContext $ do-          sep [ text "clauses before compilation"+          sep [ "clauses before compilation"               , nest 2 $ sep $ map (prettyTCM . QNamed name) cs               ] +        reportSDoc "tc.cc.raw" 65 $ do+          sep [ "clauses before compilation"+              , nest 2 $ sep $ map (text . show) cs+              ]+         -- add clauses for the coverage checker (needs to reduce)         inTopContext $ addClauses name cs +        reportSDoc "tc.cc.type" 60 $ "  type   : " <+> (text . prettyShow) t+        reportSDoc "tc.cc.type" 60 $ "  context: " <+> (text . prettyShow =<< getContextTelescope)+         fullType <- flip telePi t <$> getContextTelescope +        reportSLn  "tc.cc.type" 80 $ show fullType+         -- Coverage check and compile the clauses-        cc <- Bench.billTo [Bench.Coverage] $-          inTopContext $ compileClauses (Just (name, fullType)) cs+        (mst, cc) <- Bench.billTo [Bench.Coverage] $+          inTopContext $ compileClauses (if isSystem then Nothing else (Just (name, fullType)))+                                        cs          -- Clause compilation runs the coverage checker, which might add         -- some extra clauses.         cs <- defClauses <$> getConstInfo name          reportSDoc "tc.cc" 60 $ inTopContext $ do-          sep [ text "compiled clauses of" <+> prettyTCM name+          sep [ "compiled clauses of" <+> prettyTCM name               , nest 2 $ pretty cc               ]          -- The macro tag might be on the type signature         ismacro <- isMacro . theDef <$> getConstInfo name +        covering <- funCovering . theDef <$> getConstInfo name+         -- Add the definition         inTopContext $ addConstant name =<< do           -- If there was a pragma for this definition, we can set the@@ -324,17 +378,19 @@              emptyFunction              { funClauses        = cs              , funCompiled       = Just cc+             , funSplitTree      = mst              , funDelayed        = delayed              , funInv            = inv              , funAbstr          = Info.defAbstract i-             , funExtLam         = extlam+             , funExtLam         = (\ e -> e { extLamSys = sys }) <$> extlam              , funWith           = with              , funCopatternLHS   = hasProjectionPatterns cc+             , funCovering       = covering              }           useTerPragma $ defaultDefn ai name fullType defn          reportSDoc "tc.def.fun" 10 $ do-          sep [ text "added " <+> prettyTCM name <+> text ":"+          sep [ "added " <+> prettyTCM name <+> ":"               , nest 2 $ prettyTCM . defType =<< getConstInfo name               ] @@ -342,7 +398,7 @@ --   which comes from a possible termination pragma. useTerPragma :: Definition -> TCM Definition useTerPragma def@Defn{ defName = name, theDef = fun@Function{}} = do-  tc <- asks envTerminationCheck+  tc <- asksTC envTerminationCheck   let terminates = case tc of         NonTerminating -> Just False         Terminating    -> Just True@@ -394,24 +450,146 @@     , wfClauses    :: [A.Clause]           -- ^ The given clauses for the with function     } +checkSystemCoverage+  :: QName+  -> [Int]+  -> Type+  -> [Clause]+  -> TCM System+checkSystemCoverage f [n] t cs = do+  reportSDoc "tc.sys.cover" 10 $ text (show (n , length cs)) <+> prettyTCM t+  TelV gamma t <- telViewUpTo n t+  addContext gamma $ do+  TelV (ExtendTel a _) _ <- telViewUpTo 1 t+  a <- reduce $ unEl $ unDom a++  case a of+    Def q [Apply phi] -> do+      [iz,io] <- mapM getBuiltinName' [builtinIZero, builtinIOne]+      ineg <- primINeg+      imin <- primIMin+      imax <- primIMax+      i0 <- primIZero+      i1 <- primIOne+      let+        isDir (ConP q _ []) | Just (conName q) == iz = Just False+        isDir (ConP q _ []) | Just (conName q) == io = Just True+        isDir _ = Nothing++        collectDirs :: [Int] -> [DeBruijnPattern] -> [(Int,Bool)]+        collectDirs [] [] = []+        collectDirs (i : is) (p : ps) | Just d <- isDir p = (i,d) : collectDirs is ps+                                      | otherwise         = collectDirs is ps+        collectDirs _ _ = __IMPOSSIBLE__++        dir :: (Int,Bool) -> Term+        dir (i,False) = ineg `apply` [argN $ var i]+        dir (i,True) = var i++        -- andI and orI have cases for singletons to improve error messages.+        andI, orI :: [Term] -> Term+        andI [] = i1+        andI [t] = t+        andI (t:ts) = (\ x -> imin `apply` [argN t, argN x]) $ andI ts++        orI [] = i0+        orI [t] = t+        orI (t:ts) = imax `apply` [argN t, argN (orI ts)]++      let+        pats = map (take n . map (namedThing . unArg) . namedClausePats) cs+        alphas :: [[(Int,Bool)]] -- the face maps corresponding to each clause+        alphas = map (collectDirs (downFrom n)) pats+        phis :: [Term] -- the φ terms for each clause (i.e. the alphas as terms)+        phis = map andI $ map (map dir) alphas+        psi = orI $ phis+        pcs = zip phis cs+        boolToI True = i1+        boolToI False = i0++      reportSDoc "tc.sys.cover" 20 $ fsep $ map prettyTCM pats+      interval <- elInf primInterval+      reportSDoc "tc.sys.cover" 10 $ "equalTerm " <+> prettyTCM (unArg phi) <+> prettyTCM psi+      equalTerm interval (unArg phi) psi++      forM_ (init $ init $ List.tails pcs) $ \ ((phi1,cl1):pcs') -> do+        forM_ pcs' $ \ (phi2,cl2) -> do+          phi12 <- reduce (imin `apply` [argN phi1, argN phi2])+          forallFaceMaps phi12 (\ _ _ -> __IMPOSSIBLE__) $ \ sigma -> do+            let args = sigma `applySubst` teleArgs gamma+                t' = sigma `applySubst` t+                fromReduced (YesReduction _ x) = x+                fromReduced (NoReduction x) = ignoreBlocking x+                body cl = do+                  let extra = length (drop n $ namedClausePats cl)+                  TelV delta _ <- telViewUpTo extra t'+                  fmap (abstract delta) $ addContext delta $ do+                    fmap fromReduced $ runReduceM $+                      appDef' (Def f []) [cl] [] (map notReduced $ raise (size delta) args ++ teleArgs delta)+            v1 <- body cl1+            v2 <- body cl2+            equalTerm t' v1 v2++      sys <- forM (zip alphas cs) $ \ (alpha,cl) -> do++            let+                -- Δ = Γ_α , Δ'α+                delta = clauseTel cl+                -- Δ ⊢ b+                Just b = clauseBody cl+                -- Δ ⊢ ps : Γ , o : [φ] , Δ'+                -- we assume that there's no pattern matching other+                -- than from the system+                ps = namedClausePats cl+                extra = length (drop (size gamma + 1) ps)+                -- size Δ'α = size Δ' = extra+                -- Γ , α ⊢ u+                takeLast n xs = drop (length xs - n) xs+                weak [] = idS+                weak (i:is) = weak is `composeS` liftS i (raiseS 1)+                tel = telFromList (takeLast extra (telToList delta))+                u = abstract tel (liftS extra (weak $ List.sort $ map fst alpha) `applySubst` b)+            return (map (first var) alpha,u)++      reportSDoc "tc.sys.cover.sys" 20 $ fsep $ prettyTCM gamma : map prettyTCM sys+      reportSDoc "tc.sys.cover.sys" 40 $ fsep $ (text . show) gamma : map (text . show) sys+      return (System gamma sys) -- gamma uses names from the type, not the patterns, could we do better?+    _ -> __IMPOSSIBLE__+checkSystemCoverage _ _ t cs = __IMPOSSIBLE__+++-- * Info that is needed after all clauses have been processed.+data ClausesPostChecks = CPC+    { cpcPartialSplits :: [Int]+      -- ^ Which argument indexes have a partial split.+    }++instance Semigroup ClausesPostChecks where+  (<>) (CPC xs) (CPC xs') = CPC (List.nub $ mappend xs xs')++instance Monoid ClausesPostChecks where+  mempty  = CPC []+  mappend = (<>)+ -- | Type check a function clause.  checkClause   :: Type          -- ^ Type of function defined by this clause.   -> Maybe Substitution  -- ^ Module parameter substitution arising from with-abstraction.   -> A.SpineClause -- ^ Clause.-  -> TCM Clause    -- ^ Type-checked clause.+  -> TCM (Clause,ClausesPostChecks)  -- ^ Type-checked clause  checkClause t withSub c@(A.Clause (A.SpineLHS i x aps) strippedPats rhs0 wh catchall) = do-    reportSDoc "tc.lhs.top" 30 $ text "Checking clause" $$ prettyA c+    reportSDoc "tc.lhs.top" 30 $ "Checking clause" $$ prettyA c     unlessNull (trailingWithPatterns aps) $ \ withPats -> do       typeError $ UnexpectedWithPatterns $ map namedArg withPats     traceCall (CheckClause t c) $ do       aps <- expandPatternSynonyms aps       cxtNames <- reverse . map (fst . unDom) <$> getContext       when (not $ null strippedPats) $ reportSDoc "tc.lhs.top" 50 $-        text "strippedPats:" <+> vcat [ prettyA p <+> text "=" <+> prettyTCM v <+> text ":" <+> prettyTCM a | A.ProblemEq p v a <- strippedPats ]-      checkLeftHandSide (CheckPatternShadowing c) (Just x) aps t withSub strippedPats $ \ lhsResult@(LHSResult npars delta ps absurdPat trhs patSubst asb) -> do+        "strippedPats:" <+> vcat [ prettyA p <+> "=" <+> prettyTCM v <+> ":" <+> prettyTCM a | A.ProblemEq p v a <- strippedPats ]+      closed_t <- flip abstract t <$> getContextTelescope+      checkLeftHandSide (CheckPatternShadowing c) (Just x) aps t withSub strippedPats $ \ lhsResult@(LHSResult npars delta ps absurdPat trhs patSubst asb psplit) -> do         -- Note that we might now be in irrelevant context,         -- in case checkLeftHandSide walked over an irrelevant projection pattern. @@ -445,27 +623,51 @@         -- Note that the with function doesn't necessarily share any part of         -- the context with the parent (but withSub will take you from parent         -- to child).+         inTopContext $ Bench.billTo [Bench.Typing, Bench.With] $ checkWithFunction cxtNames with +        whenM (optDoubleCheck <$> pragmaOptions) $ case body of+          Just v  -> do+            reportSDoc "tc.lhs.top" 30 $ vcat+              [ "double checking rhs"+              , nest 2 (prettyTCM v <+> " : " <+> prettyTCM (unArg trhs))+              ]+            noConstraints $ dontAssignMetas $ checkInternal v $ unArg trhs+          Nothing -> return ()+         reportSDoc "tc.lhs.top" 10 $ vcat-          [ text "Clause before translation:"+          [ "Clause before translation:"           , nest 2 $ vcat-            [ text "delta =" <+> do escapeContext (size delta) $ prettyTCM delta-            , text "ps    =" <+> do P.fsep <$> prettyTCMPatterns ps-            , text "body  =" <+> maybe (text "_|_") prettyTCM body+            [ "delta =" <+> do escapeContext (size delta) $ prettyTCM delta+            , "ps    =" <+> do P.fsep <$> prettyTCMPatterns ps+            , "body  =" <+> maybe "_|_" prettyTCM body+            , "type  =" <+> prettyTCM t             ]           ]          reportSDoc "tc.lhs.top" 60 $ escapeContext (size delta) $ vcat-          [ text "Clause before translation (raw):"+          [ "Clause before translation (raw):"           , nest 2 $ vcat-            [ text "ps    =" <+> text (show ps)-            , text "body  =" <+> text (show body)+            [ "ps    =" <+> text (show ps)+            , "body  =" <+> text (show body)+            , "type  =" <+> text (show t)             ]           ] +        -- check naturality wrt the interval.+        let+          iApplyVars :: [NamedArg DeBruijnPattern] -> [(Int, (Term,Term))]+          iApplyVars ps = flip concatMap (map namedArg ps) $ \case+                             IApplyP _ t u x -> [(dbPatVarIndex x,(t,u))]+                             VarP{} -> []+                             ProjP{}-> []+                             LitP{} -> []+                             DotP{} -> []+                             DefP _ _ ps -> iApplyVars ps+                             ConP _ _ ps -> iApplyVars ps+         -- compute body modification for irrelevant definitions, see issue 610-        rel <- asks envRelevance+        rel <- asksTC envRelevance         let bodyMod body = case rel of               Irrelevant -> dontCare <$> body               _          -> body@@ -474,7 +676,7 @@         -- treat them as catchalls.         let catchall' = catchall || isNothing body -        return $+        return $ (, CPC psplit)           Clause { clauseLHSRange  = getRange i                  , clauseFullRange = getRange c                  , clauseTel       = killRange delta@@ -496,16 +698,20 @@   -> A.RHS                   -- ^ Rhs to check.   -> TCM (Maybe Term, WithFunctionProblem)                                               -- Note: the as-bindings are already bound (in checkClause)-checkRHS i x aps t lhsResult@(LHSResult _ delta ps absurdPat trhs _ _asb) rhs0 = handleRHS rhs0+checkRHS i x aps t lhsResult@(LHSResult _ delta ps absurdPat trhs _ _asb _) rhs0 = handleRHS rhs0   where   handleRHS rhs =     case rhs of        -- Case: ordinary RHS       A.RHS e _ -> Bench.billTo [Bench.Typing, Bench.CheckRHS] $ do-        when absurdPat $ typeError $ AbsurdPatternRequiresNoRHS aps-        v <- checkExpr e $ unArg trhs-        return (Just v, NoWithFunction)+        -- If there is an absurd pattern, we do not need a RHS. If we have+        -- one we complain, ignore it and return the same @(Nothing, NoWithFunction)@+        -- as the case dealing with @A.AbsurdRHS@.+        mv <- if absurdPat+              then Nothing <$ setCurrentRange rhs (warning $ AbsurdPatternRequiresNoRHS ps)+              else Just <$> checkExpr e (unArg trhs)+        return (mv, NoWithFunction)        -- Case: no RHS       A.AbsurdRHS -> do@@ -524,16 +730,16 @@         -- a futile rewrite with a reflexive equation.         -- Thus, we restore the state in this case,         -- unless the rewrite expression contains questionmarks.-        st <- get+        st <- getTC         let recurse = do-             st' <- get+             st' <- getTC              -- Comparing the whole stInteractionPoints maps is a bit              -- wasteful, but we assume              -- 1. rewriting with a reflexive equality to happen rarely,              -- 2. especially with ?-holes in the rewrite expression              -- 3. and a large overall number of ?s.              let sameIP = (==) `on` (^.stInteractionPoints)-             when (sameIP st st') $ put st+             when (sameIP st st') $ putTC st              handleRHS $ A.RewriteRHS qes strippedPats rhs wh          -- Get value and type of rewrite-expression.@@ -555,7 +761,7 @@             return (eqt, El s dom, unArg a, unArg b)             -- Note: the sort _s of the equality need not be the sort of the type @dom@!           OtherType{} -> typeError . GenericDocError =<< do-            text "Cannot rewrite by equation of type" <+> prettyTCM t'+            "Cannot rewrite by equation of type" <+> prettyTCM t'          -- Get the name of builtin REFL. @@ -579,7 +785,7 @@         -- Process 'rewrite' clause like a suitable 'with' clause.          -- The REFL constructor might have an argument-        let reflPat  = A.ConP (ConPatInfo ConOCon patNoRange False) (unambiguous $ conName reflCon) $+        let reflPat  = A.ConP (ConPatInfo ConOCon patNoRange ConPatEager) (unambiguous $ conName reflCon) $               maybeToList $ fmap (\ ai -> Arg ai $ unnamed $ A.WildP patNoRange) reflInfo          -- Andreas, 2015-12-25  Issue #1740:@@ -602,21 +808,21 @@             cl = A.Clause (A.LHS i $ insertPatternsLHSCore pats $ A.LHSHead x $ killRange aps)                    strippedPats rhs'' outerWhere False         reportSDoc "tc.rewrite" 60 $ vcat-          [ text "rewrite"-          , text "  rhs' = " <> (text . show) rhs'+          [ "rewrite"+          , "  rhs' = " Pr.<> (text . show) rhs'           ]         checkWithRHS x qname t lhsResult [withExpr] [withType] [cl]        -- Case: @with@       A.WithRHS aux es cs -> do         reportSDoc "tc.with.top" 15 $ vcat-          [ text "TC.Rules.Def.checkclause reached A.WithRHS"+          [ "TC.Rules.Def.checkclause reached A.WithRHS"           , sep $ prettyA aux : map (parens . prettyA) es           ]         reportSDoc "tc.with.top" 20 $ do           nfv <- getCurrentModuleFreeVars           m   <- currentModule-          sep [ text "with function module:" <+>+          sep [ "with function module:" <+>                 prettyList (map prettyTCM $ mnameToList m)               ,  text $ "free variables: " ++ show nfv               ]@@ -641,7 +847,7 @@   -> [A.Clause]              -- ^ With-clauses to check.   -> TCM (Maybe Term, WithFunctionProblem)                                 -- Note: as-bindings already bound (in checkClause)-checkWithRHS x aux t (LHSResult npars delta ps _absurdPat trhs _ _asb) vs0 as cs = Bench.billTo [Bench.Typing, Bench.With] $ do+checkWithRHS x aux t (LHSResult npars delta ps _absurdPat trhs _ _asb _) vs0 as cs = Bench.billTo [Bench.Typing, Bench.With] $ do         let withArgs = withArguments vs0 as             perm = fromMaybe __IMPOSSIBLE__ $ dbPatPerm ps         (vs, as)  <- normalise (vs0, as)@@ -649,12 +855,12 @@         -- Andreas, 2012-09-17: for printing delta,         -- we should remove it from the context first         reportSDoc "tc.with.top" 25 $ escapeContext (size delta) $ vcat-          [ text "delta  =" <+> prettyTCM delta+          [ "delta  =" <+> prettyTCM delta           ]         reportSDoc "tc.with.top" 25 $ vcat-          [ text "vs     =" <+> prettyTCM vs-          , text "as     =" <+> prettyTCM as-          , text "perm   =" <+> text (show perm)+          [ "vs     =" <+> prettyTCM vs+          , "as     =" <+> prettyTCM as+          , "perm   =" <+> text (show perm)           ]          -- Split the telescope into the part needed to type the with arguments@@ -668,12 +874,12 @@         -- Andreas, 2012-09-17: for printing delta,         -- we should remove it from the context first         reportSDoc "tc.with.top" 25 $ escapeContext (size delta) $ vcat-          [ text "delta1 =" <+> prettyTCM delta1-          , text "delta2 =" <+> addContext delta1 (prettyTCM delta2)+          [ "delta1 =" <+> prettyTCM delta1+          , "delta2 =" <+> addContext delta1 (prettyTCM delta2)           ]         reportSDoc "tc.with.top" 25 $ vcat-          [ text "perm'  =" <+> text (show perm')-          , text "fPerm  =" <+> text (show finalPerm)+          [ "perm'  =" <+> text (show perm')+          , "fPerm  =" <+> text (show finalPerm)           ]          -- Create the body of the original function@@ -690,25 +896,25 @@             v    = Def aux $ map Apply $ us0 ++ us1 ++ map defaultArg withArgs ++ us2         -- Andreas, 2013-02-26 add with-name to signature for printing purposes         addConstant aux =<< do-          useTerPragma $ defaultDefn defaultArgInfo aux typeDontCare emptyFunction+          useTerPragma $ defaultDefn defaultArgInfo aux __DUMMY_TYPE__ emptyFunction          -- Andreas, 2013-02-26 separate msgs to see which goes wrong         reportSDoc "tc.with.top" 20 $-          text "    with arguments" <+> do escapeContext (size delta) $ addContext delta1 $ prettyList (map prettyTCM vs)+          "    with arguments" <+> do escapeContext (size delta) $ addContext delta1 $ prettyList (map prettyTCM vs)         reportSDoc "tc.with.top" 20 $-          text "             types" <+> do escapeContext (size delta) $ addContext delta1 $ prettyList (map prettyTCM as)+          "             types" <+> do escapeContext (size delta) $ addContext delta1 $ prettyList (map prettyTCM as)         reportSDoc "tc.with.top" 20 $-          text "with function call" <+> prettyTCM v+          "with function call" <+> prettyTCM v         reportSDoc "tc.with.top" 20 $-          text "           context" <+> (prettyTCM =<< getContextTelescope)+          "           context" <+> (prettyTCM =<< getContextTelescope)         reportSDoc "tc.with.top" 20 $-          text "             delta" <+> do escapeContext (size delta) $ prettyTCM delta+          "             delta" <+> do escapeContext (size delta) $ prettyTCM delta         reportSDoc "tc.with.top" 20 $-          text "            delta1" <+> do escapeContext (size delta) $ prettyTCM delta1+          "            delta1" <+> do escapeContext (size delta) $ prettyTCM delta1         reportSDoc "tc.with.top" 20 $-          text "            delta2" <+> do escapeContext (size delta) $ addContext delta1 $ prettyTCM delta2+          "            delta2" <+> do escapeContext (size delta) $ addContext delta1 $ prettyTCM delta2         reportSDoc "tc.with.top" 20 $-          text "              body" <+> prettyTCM v+          "              body" <+> prettyTCM v          return (Just v, WithFunction x aux t delta delta1 delta2 vs as t' ps npars perm' perm finalPerm cs) @@ -722,19 +928,19 @@       withSub = liftS (size delta2) (wkS (countWithArgs as) idS) `composeS` renaming __IMPOSSIBLE__ (reverseP perm')    reportSDoc "tc.with.top" 10 $ vcat-    [ text "checkWithFunction"+    [ "checkWithFunction"     , nest 2 $ vcat-      [ text "delta1 =" <+> prettyTCM delta1-      , text "delta2 =" <+> addContext delta1 (prettyTCM delta2)-      , text "t      =" <+> prettyTCM t-      , text "as     =" <+> addContext delta1 (prettyTCM as)-      , text "vs     =" <+> do addContext delta1 $ prettyTCM vs-      , text "b      =" <+> do addContext delta1 $ addContext delta2 $ prettyTCM b-      , text "qs     =" <+> do addContext delta $ prettyTCMPatternList qs-      , text "perm'  =" <+> text (show perm')-      , text "perm   =" <+> text (show perm)-      , text "fperm  =" <+> text (show finalPerm)-      , text "withSub=" <+> text (show withSub)+      [ "delta1 =" <+> prettyTCM delta1+      , "delta2 =" <+> addContext delta1 (prettyTCM delta2)+      , "t      =" <+> prettyTCM t+      , "as     =" <+> addContext delta1 (prettyTCM as)+      , "vs     =" <+> do addContext delta1 $ prettyTCM vs+      , "b      =" <+> do addContext delta1 $ addContext delta2 $ prettyTCM b+      , "qs     =" <+> do addContext delta $ prettyTCMPatternList qs+      , "perm'  =" <+> text (show perm')+      , "perm   =" <+> text (show perm)+      , "fperm  =" <+> text (show finalPerm)+      , "withSub=" <+> text (show withSub)       ]     ] @@ -746,20 +952,15 @@                              -- We normalise to get rid of Def's coming                              -- from module applications.   (withFunType, n) <- withFunctionType delta1 vs as delta2 b-  reportSDoc "tc.with.type" 10 $ sep [ text "with-function type:", nest 2 $ prettyTCM withFunType ]-  reportSDoc "tc.with.type" 50 $ sep [ text "with-function type:", nest 2 $ pretty withFunType ]+  reportSDoc "tc.with.type" 10 $ sep [ "with-function type:", nest 2 $ prettyTCM withFunType ]+  reportSDoc "tc.with.type" 50 $ sep [ "with-function type:", nest 2 $ pretty withFunType ]    -- Andreas, 2013-10-21   -- Check generated type directly in internal syntax.-  setCurrentRange cs-    (traceCall NoHighlighting $   -- To avoid flicker.-     checkType withFunType)-    `catchError` \err -> case err of-      TypeError s e -> do-        put s-        wt <- reify withFunType-        enterClosure e $ traceCall (CheckWithFunctionType wt) . typeError-      err           -> throwError err+  setCurrentRange cs $+    traceCall NoHighlighting $   -- To avoid flicker.+    traceCall (CheckWithFunctionType withFunType) $+    checkType withFunType    -- With display forms are closed   df <- safeInTopContext $ makeOpen =<< withDisplayForm f aux delta1 delta2 n qs perm' perm@@ -768,7 +969,7 @@    case dget df of     Display n ts dt ->-      reportSDoc "tc.with.top" 20 $ text "Display" <+> fsep+      reportSDoc "tc.with.top" 20 $ "Display" <+> fsep         [ text (show n)         , prettyList $ map prettyTCM ts         , prettyTCM dt@@ -779,9 +980,9 @@   -- solveSizeConstraints -- Andreas, 2012-10-16 does not seem necessary    reportSDoc "tc.with.top" 10 $ sep-    [ text "added with function" <+> (prettyTCM aux) <+> text "of type"+    [ "added with function" <+> (prettyTCM aux) <+> "of type"     , nest 2 $ prettyTCM withFunType-    , nest 2 $ text "-|" <+> (prettyTCM =<< getContextTelescope)+    , nest 2 $ "-|" <+> (prettyTCM =<< getContextTelescope)     ]   reportSDoc "tc.with.top" 70 $ vcat     [ nest 2 $ text $ "raw with func. type = " ++ show withFunType@@ -812,7 +1013,7 @@       [] -> ret       [A.ScopedDecl scope ds] -> withScope_ scope $ loop ds       [A.Section _ m tel ds]  -> newSection m tel $ do-          local (\ e -> e { envCheckingWhere = True }) $ do+          localTC (\ e -> e { envCheckingWhere = True }) $ do             checkDecls ds             ret       _ -> __IMPOSSIBLE__@@ -845,22 +1046,22 @@  -- | Enter a new section during type-checking. -newSection :: ModuleName -> A.Telescope -> TCM a -> TCM a-newSection m tel cont = do+newSection :: ModuleName -> A.GeneralizeTelescope -> TCM a -> TCM a+newSection m gtel@(A.GeneralizeTel _ tel) cont = do   reportSDoc "tc.section" 10 $-    text "checking section" <+> prettyTCM m <+> fsep (map prettyAs tel)+    "checking section" <+> prettyTCM m <+> fsep (map prettyA tel) -  checkTelescope tel $ \ tel' -> do+  checkGeneralizeTelescope gtel $ \ _ tel' -> do     reportSDoc "tc.section" 10 $-      text "adding section:" <+> prettyTCM m <+> text (show (size tel'))+      "adding section:" <+> prettyTCM m <+> text (show (size tel'))      addSection m      reportSDoc "tc.section" 10 $ inTopContext $-      nest 4 $ text "actual tele:" <+> do prettyTCM =<< lookupSection m+      nest 4 $ "actual tele:" <+> do prettyTCM =<< lookupSection m      withCurrentModule m cont  -- | Set the current clause number. atClause :: QName -> Int -> A.RHS -> TCM a -> TCM a-atClause name i rhs = local $ \ e -> e { envClause = IPClause name i rhs }+atClause name i rhs = localTC $ \ e -> e { envClause = IPClause name i rhs }
src/full/Agda/TypeChecking/Rules/Def.hs-boot view
@@ -10,6 +10,6 @@  checkFunDef' :: I.Type -> ArgInfo -> Delayed -> Maybe ExtLamInfo -> Maybe QName -> DefInfo -> QName -> [Clause] -> TCM () -newSection :: ModuleName -> A.Telescope -> TCM a -> TCM a+newSection :: ModuleName -> A.GeneralizeTelescope -> TCM a -> TCM a  useTerPragma :: Definition -> TCM Definition
src/full/Agda/TypeChecking/Rules/LHS.hs view
@@ -28,13 +28,15 @@ import Data.Either (partitionEithers) import Data.IntMap (IntMap) import qualified Data.IntMap as IntMap+import Data.List (delete, sortBy, stripPrefix, (\\), findIndex) import qualified Data.List as List import Data.Monoid ( Monoid, mempty, mappend ) import Data.Semigroup ( Semigroup ) import qualified Data.Semigroup as Semigroup+import Data.Map (Map) import qualified Data.Map as Map -import Agda.Interaction.Highlighting.Generate (storeDisambiguatedName)+import Agda.Interaction.Highlighting.Generate (storeDisambiguatedName, disambiguateRecordFields) import Agda.Interaction.Options import Agda.Interaction.Options.Lenses @@ -43,6 +45,7 @@ import Agda.Syntax.Abstract (IsProjP(..)) import qualified Agda.Syntax.Abstract as A import Agda.Syntax.Abstract.Views (asView, deepUnscope)+import Agda.Syntax.Concrete (FieldAssignment'(..),NameInScope(..),LensInScope(..)) import Agda.Syntax.Common as Common import Agda.Syntax.Info as A import Agda.Syntax.Literal@@ -66,6 +69,8 @@ import Agda.TypeChecking.Reduce import Agda.TypeChecking.Substitute import Agda.TypeChecking.Telescope+import Agda.TypeChecking.Primitive hiding (Nat)+import Agda.TypeChecking.Monad.Builtin  import {-# SOURCE #-} Agda.TypeChecking.Rules.Term (checkExpr) import Agda.TypeChecking.Rules.LHS.Problem@@ -114,8 +119,8 @@  instance IsFlexiblePattern A.Pattern where   maybeFlexiblePattern p = do-    reportSDoc "tc.lhs.flex" 30 $ text "maybeFlexiblePattern" <+> prettyA p-    reportSDoc "tc.lhs.flex" 60 $ text "maybeFlexiblePattern (raw) " <+> (text . show . deepUnscope) p+    reportSDoc "tc.lhs.flex" 30 $ "maybeFlexiblePattern" <+> prettyA p+    reportSDoc "tc.lhs.flex" 60 $ "maybeFlexiblePattern (raw) " <+> (text . show . deepUnscope) p     case p of       A.DotP{}  -> return DotFlex       A.VarP{}  -> return ImplicitFlex@@ -138,6 +143,8 @@       I.VarP{}  -> mzero       I.LitP{}  -> mzero       I.ProjP{} -> mzero+      I.IApplyP{} -> mzero+      I.DefP{} -> mzero -- TODO Andrea check semantics  -- | Lists of flexible patterns are 'RecordFlex'. instance IsFlexiblePattern a => IsFlexiblePattern [a] where@@ -155,15 +162,15 @@  :: [ProblemEq] -> TCM [ProblemEq] updateProblemEqs eqs = do   reportSDoc "tc.lhs.top" 20 $ vcat-    [ text "updateProblem: equations to update"-    , nest 2 (vcat $ map prettyTCM eqs)+    [ "updateProblem: equations to update"+    , nest 2 $ if null eqs then "(none)" else vcat $ map prettyTCM eqs     ]    eqs' <- updates eqs    reportSDoc "tc.lhs.top" 20 $ vcat-    [ text "updateProblem: new equations"-    , nest 2 (vcat $ map prettyTCM eqs')+    [ "updateProblem: new equations"+    , nest 2 $ if null eqs' then "(none)" else vcat $ map prettyTCM eqs'     ]    return eqs'@@ -175,13 +182,14 @@      update :: ProblemEq -> TCM [ProblemEq]     update eq@(ProblemEq A.WildP{} _ _) = return []+    update eq@(ProblemEq p@A.ProjP{} _ _) = typeError $ IllformedProjectionPattern p     update eq@(ProblemEq p v a) = reduce v >>= constructorForm >>= \case       Con c ci es -> do         let vs = fromMaybe __IMPOSSIBLE__ $ allApplyElims es         -- we should only simplify equations between fully applied constructors         contype <- getFullyAppliedConType c =<< reduce (unDom a)         caseMaybe contype (return [eq]) $ \((d,_,pars),b) -> do-        TelV ctel _ <- telView b+        TelV ctel _ <- telViewPath b         let bs = instTel ctel (map unArg vs)          p <- expandLitPattern p@@ -199,7 +207,7 @@             -- Insert implicit patterns             ps <- insertImplicitPatterns ExpandLast ps ctel             reportSDoc "tc.lhs.imp" 20 $-              text "insertImplicitPatternsT returned" <+> fsep (map prettyA ps)+              "insertImplicitPatternsT returned" <+> fsep (map prettyA ps)              -- Check argument count and hiding (not just count: #3074)             let checkArgs [] [] = return ()@@ -213,7 +221,7 @@                         which Hidden     = "implicit"                         which Instance{} = "instance"                 checkArgs [] vs = genericDocError =<< do-                    fsep $ pwords "Too few arguments to constructor" ++ [prettyTCM c <> text ","] +++                    fsep $ pwords "Too few arguments to constructor" ++ [prettyTCM c <> ","] ++                            pwords ("expected " ++ show n ++ " more explicit "  ++ arguments)                   where n = length (filter visible vs)                         arguments | n == 1    = "argument"@@ -225,10 +233,18 @@             updates $ zipWith3 ProblemEq (map namedArg ps) (map unArg vs) bs            A.RecP pi fs -> do-            axs <- recordFieldNames . theDef <$> getConstInfo d+            axs <- recFields . theDef <$> getConstInfo d++            -- Andreas, 2018-09-06, issue #3122.+            -- Associate the concrete record field names used in the record pattern+            -- to their counterpart in the record type definition.+            disambiguateRecordFields (map _nameFieldA fs) (map unArg axs)++            let cxs = map (fmap (nameConcrete . qnameName)) axs+             -- In fs omitted explicit fields are replaced by underscores,             -- and the fields are put in the correct order.-            ps <- insertMissingFields d (const $ A.WildP patNoRange) fs axs+            ps <- insertMissingFields d (const $ A.WildP patNoRange) fs cxs              -- We also need to insert missing implicit or instance fields.             ps <- insertImplicitPatterns ExpandLast ps ctel@@ -240,6 +256,10 @@        Lit l | A.LitP l' <- p , l == l' -> return [] +      _ | A.EqualP{} <- p -> do+        itisone <- liftTCM primItIsOne+        ifM (tryConversion $ equalTerm (unDom a) v itisone) (return []) (return [eq])+       _ -> return [eq]      instTel :: Telescope -> [Term] -> [Dom Type]@@ -276,6 +296,7 @@     isSolved A.DefP{}        = __IMPOSSIBLE__     isSolved A.AsP{}         = __IMPOSSIBLE__  -- removed by asView     isSolved A.PatternSynP{} = __IMPOSSIBLE__  -- expanded before+    isSolved A.EqualP{}      = False -- __IMPOSSIBLE__     isSolved A.WithP{}       = __IMPOSSIBLE__  -- | For each user-defined pattern variable in the 'Problem', check@@ -291,10 +312,11 @@ noShadowingOfConstructors mkCall eqs =   traceCall mkCall $ mapM_ noShadowing eqs   where-  noShadowing (ProblemEq p _ (Dom info (El _ a))) = case snd $ asView p of+  noShadowing (ProblemEq p _ (Dom{domInfo = info, unDom = El _ a})) = case snd $ asView p of    A.WildP       {} -> return ()    A.AbsurdP     {} -> return ()    A.DotP        {} -> return ()+   A.EqualP      {} -> return ()    A.ConP        {} -> __IMPOSSIBLE__    A.RecP        {} -> __IMPOSSIBLE__    A.ProjP       {} -> __IMPOSSIBLE__@@ -310,10 +332,10 @@    A.VarP (A.BindName x) -> when (getOrigin info == UserWritten) $ do     reportSDoc "tc.lhs.shadow" 30 $ vcat       [ text $ "checking whether pattern variable " ++ prettyShow x ++ " shadows a constructor"-      , nest 2 $ text "type of variable =" <+> prettyTCM a-      , nest 2 $ text "position of variable =" <+> (text . show) (getRange x)+      , nest 2 $ "type of variable =" <+> prettyTCM a+      , nest 2 $ "position of variable =" <+> (text . show) (getRange x)       ]-    reportSDoc "tc.lhs.shadow" 70 $ nest 2 $ text "a =" <+> pretty a+    reportSDoc "tc.lhs.shadow" 70 $ nest 2 $ "a =" <+> pretty a     a <- reduce a     case a of       Def t _ -> do@@ -323,7 +345,7 @@             case filter ((A.nameConcrete x ==) . A.nameConcrete . A.qnameName) cs of               []      -> return ()               (c : _) -> setCurrentRange x $-                typeError $ PatternShadowsConstructor x c+                typeError $ PatternShadowsConstructor (nameConcrete x) c           AbstractDefn{} -> return ()             -- Abstract constructors cannot be brought into scope,             -- even by a bigger import list.@@ -331,9 +353,11 @@             -- Alternatively, we could do getConstInfo in ignoreAbstractMode,             -- then Agda would complain if a variable shadowed an abstract constructor.           Axiom       {} -> return ()+          DataOrRecSig{} -> return ()           Function    {} -> return ()           Record      {} -> return ()           Constructor {} -> __IMPOSSIBLE__+          GeneralizableVar{} -> __IMPOSSIBLE__           -- TODO: in the future some stuck primitives might allow constructors           Primitive   {} -> return ()       Var   {} -> return ()@@ -350,21 +374,22 @@       Level {} -> __IMPOSSIBLE__       Con   {} -> __IMPOSSIBLE__       DontCare{} -> __IMPOSSIBLE__+      Dummy s    -> __IMPOSSIBLE_VERBOSE__ s  -- | Check that a dot pattern matches it's instantiation. checkDotPattern :: DotPattern -> TCM ()-checkDotPattern (Dot e v (Dom info a)) =+checkDotPattern (Dot e v (Dom{domInfo = info, unDom = a})) =   traceCall (CheckDotPattern e v) $ do   reportSDoc "tc.lhs.dot" 15 $-    sep [ text "checking dot pattern"+    sep [ "checking dot pattern"         , nest 2 $ prettyA e-        , nest 2 $ text "=" <+> prettyTCM v-        , nest 2 $ text ":" <+> prettyTCM a+        , nest 2 $ "=" <+> prettyTCM v+        , nest 2 $ ":" <+> prettyTCM a         ]-  applyRelevanceToContext (getRelevance info) $ do+  applyModalityToContext info $ do     u <- checkExpr e a     reportSDoc "tc.lhs.dot" 50 $-      sep [ text "equalTerm"+      sep [ "equalTerm"           , nest 2 $ pretty a           , nest 2 $ pretty u           , nest 2 $ pretty v@@ -373,13 +398,14 @@     noConstraints $ equalTerm a u v  checkAbsurdPattern :: AbsurdPattern -> TCM ()-checkAbsurdPattern (Absurd r a) = isEmptyType r a+checkAbsurdPattern (Absurd r a) = ensureEmptyType r a  data LeftoverPatterns = LeftoverPatterns   { patternVariables :: IntMap [A.Name]   , asPatterns       :: [AsBinding]   , dotPatterns      :: [DotPattern]   , absurdPatterns   :: [AbsurdPattern]+  , otherPatterns    :: [A.Pattern]   }  instance Semigroup LeftoverPatterns where@@ -388,10 +414,11 @@     , asPatterns       = asPatterns x ++ asPatterns y     , dotPatterns      = dotPatterns x ++ dotPatterns y     , absurdPatterns   = absurdPatterns x ++ absurdPatterns y+    , otherPatterns    = otherPatterns x ++ otherPatterns y     }  instance Monoid LeftoverPatterns where-  mempty  = LeftoverPatterns empty [] [] []+  mempty  = LeftoverPatterns empty [] [] [] []   mappend = (Semigroup.<>)  -- | Classify remaining patterns after splitting is complete into pattern@@ -399,13 +426,14 @@ --   Precondition: there are no more constructor patterns. getLeftoverPatterns :: [ProblemEq] -> TCM LeftoverPatterns getLeftoverPatterns eqs = do-  reportSDoc "tc.lhs.top" 30 $ text "classifying leftover patterns"+  reportSDoc "tc.lhs.top" 30 $ "classifying leftover patterns"   mconcat <$> mapM getLeftoverPattern eqs   where-    patternVariable x i  = LeftoverPatterns (singleton (i,[x])) [] [] []-    asPattern x v a      = LeftoverPatterns empty [AsB x v (unDom a)] [] []-    dotPattern e v a     = LeftoverPatterns empty [] [Dot e v a] []-    absurdPattern info a = LeftoverPatterns empty [] [] [Absurd info a]+    patternVariable x i  = LeftoverPatterns (singleton (i,[x])) [] [] [] []+    asPattern x v a      = LeftoverPatterns empty [AsB x v (unDom a)] [] [] []+    dotPattern e v a     = LeftoverPatterns empty [] [Dot e v a] [] []+    absurdPattern info a = LeftoverPatterns empty [] [] [Absurd info a] []+    otherPattern p       = LeftoverPatterns empty [] [] [] [p]      getLeftoverPattern :: ProblemEq -> TCM LeftoverPatterns     getLeftoverPattern (ProblemEq p v a) = case p of@@ -413,18 +441,11 @@         Just i  -> return $ patternVariable x i         Nothing -> return $ asPattern x v a       (A.WildP _)       -> return mempty-      (A.AsP info (A.BindName x) p) -> (asPattern x v a `mappend`) <$> do+      (A.AsP info (A.BindName x) p)  -> (asPattern x v a `mappend`) <$> do         getLeftoverPattern $ ProblemEq p v a       (A.DotP info e)   -> return $ dotPattern e v a       (A.AbsurdP info)  -> return $ absurdPattern (getRange info) (unDom a)--      A.ConP{}        -> __IMPOSSIBLE__-      A.ProjP{}       -> __IMPOSSIBLE__-      A.DefP{}        -> __IMPOSSIBLE__-      A.LitP{}        -> __IMPOSSIBLE__-      A.PatternSynP{} -> __IMPOSSIBLE__-      A.RecP{}        -> __IMPOSSIBLE__-      A.WithP{}       -> __IMPOSSIBLE__+      _                 -> return $ otherPattern p  -- | Build a renaming for the internal patterns using variable names from --   the user patterns. If there are multiple user names for the same internal@@ -449,10 +470,10 @@                 -> TCM [NamedArg DeBruijnPattern] transferOrigins ps qs = do   reportSDoc "tc.lhs.origin" 40 $ vcat-    [ text "transferOrigins"+    [ "transferOrigins"     , nest 2 $ vcat-      [ text "ps  =   " <+> prettyA ps-      , text "qs  =   " <+> pretty qs+      [ "ps  =   " <+> prettyA ps+      , "qs  =   " <+> pretty qs       ]     ]   transfers ps qs@@ -475,19 +496,19 @@     transfer :: A.Pattern -> DeBruijnPattern -> TCM DeBruijnPattern     transfer p q = case (snd (asView p) , q) of -      (A.ConP pi _ ps , ConP c (ConPatternInfo mo mb l) qs) -> do-        let cpi = ConPatternInfo (mo $> PatOCon) mb l+      (A.ConP pi _ ps , ConP c (ConPatternInfo mo ft mb l) qs) -> do+        let cpi = ConPatternInfo (mo $> PatOCon) ft mb l         ConP c cpi <$> transfers ps qs -      (A.RecP pi fs , ConP c (ConPatternInfo mo mb l) qs) -> do+      (A.RecP pi fs , ConP c (ConPatternInfo mo ft mb l) qs) -> do         let Def d _  = unEl $ unArg $ fromMaybe __IMPOSSIBLE__ mb-            axs = map (nameConcrete . qnameName) (conFields c) `withArgsFrom` qs-            cpi = ConPatternInfo (mo $> PatORec) mb l+            axs = map (nameConcrete . qnameName . unArg) (conFields c) `withArgsFrom` qs+            cpi = ConPatternInfo (mo $> PatORec) ft mb l         ps <- insertMissingFields d (const $ A.WildP patNoRange) fs axs         ConP c cpi <$> transfers ps qs -      (p , ConP c (ConPatternInfo mo mb l) qs) -> do-        let cpi = ConPatternInfo (mo $> patOrigin p) mb l+      (p , ConP c (ConPatternInfo mo ft mb l) qs) -> do+        let cpi = ConPatternInfo (mo $> patOrigin p) ft mb l         return $ ConP c cpi qs        (p , VarP _ x) -> return $ VarP (patOrigin p) x@@ -497,13 +518,14 @@       _ -> return q      patOrigin :: A.Pattern -> PatOrigin-    patOrigin (A.VarP (A.BindName x)) = PatOVar x+    patOrigin (A.VarP x)      = PatOVar (A.unBind x)     patOrigin A.DotP{}        = PatODot     patOrigin A.ConP{}        = PatOCon     patOrigin A.RecP{}        = PatORec     patOrigin A.WildP{}       = PatOWild     patOrigin A.AbsurdP{}     = PatOAbsurd     patOrigin A.LitP{}        = PatOLit+    patOrigin A.EqualP{}      = PatOCon --TODO: origin for EqualP     patOrigin A.AsP{}         = __IMPOSSIBLE__     patOrigin A.ProjP{}       = __IMPOSSIBLE__     patOrigin A.DefP{}        = __IMPOSSIBLE__@@ -514,7 +536,7 @@     matchingArgs p q       -- The arguments match if       -- 1. they are both projections,-      | isJust (A.maybePostfixProjP p) = isJust (isProjP q)+      | isJust (A.isProjP p) = isJust (isProjP q)       -- 2. or they are both visible,       | visible p && visible q = True       -- 3. or they have the same hiding and the argument is not named,@@ -530,39 +552,54 @@ --   Returns the list of patterns with the duplicate user patterns removed. checkPatternLinearity :: [ProblemEq] -> TCM [ProblemEq] checkPatternLinearity eqs = do-  reportSDoc "tc.lhs.top" 30 $ text "Checking linearity of pattern variables"+  reportSDoc "tc.lhs.linear" 30 $ "Checking linearity of pattern variables"   check Map.empty eqs   where+    check :: Map A.BindName Term -> [ProblemEq] -> TCM [ProblemEq]     check _ [] = return []-    check vars (eq@(ProblemEq p u a) : eqs) = case p of-      A.VarP x | Just v <- Map.lookup x vars -> do-        noConstraints $ equalTerm (unDom a) u v-        check vars eqs-      A.VarP x | otherwise -> (eq:) <$> do-        check (Map.insert x u vars) eqs-      A.AsP _ x p ->-        check vars $ [ProblemEq (A.VarP x) u a, ProblemEq p u a] ++ eqs-      A.WildP{}       -> continue-      A.DotP{}        -> continue-      A.AbsurdP{}     -> continue-      A.ConP{}        -> __IMPOSSIBLE__-      A.ProjP{}       -> __IMPOSSIBLE__-      A.DefP{}        -> __IMPOSSIBLE__-      A.LitP{}        -> __IMPOSSIBLE__-      A.PatternSynP{} -> __IMPOSSIBLE__-      A.RecP{}        -> __IMPOSSIBLE__-      A.WithP{}       -> __IMPOSSIBLE__+    check vars (eq@(ProblemEq p u a) : eqs) = do+      reportSDoc "tc.lhs.linear" 40 $ sep+        [ "linearity: checking pattern "+        , prettyA p+        , " equal to term "+        , prettyTCM u+        ]+      case p of+        A.VarP x -> do+          verboseS "tc.lhs.linear" 60 $ do+            let y = A.unBind x+            reportSLn "tc.lhs.linear" 60 $+              "pattern variable " ++ show (A.nameConcrete y) ++ " with id " ++ show (A.nameId y)+          case Map.lookup x vars of+            Just v -> do+              noConstraints $ equalTerm (unDom a) u v+              check vars eqs+            Nothing -> (eq:) <$> do+              check (Map.insert x u vars) eqs+        A.AsP _ x p ->+          check vars $ [ProblemEq (A.VarP x) u a, ProblemEq p u a] ++ eqs+        A.WildP{}       -> continue+        A.DotP{}        -> continue+        A.AbsurdP{}     -> continue+        A.ConP{}        -> __IMPOSSIBLE__+        A.ProjP{}       -> __IMPOSSIBLE__+        A.DefP{}        -> __IMPOSSIBLE__+        A.LitP{}        -> __IMPOSSIBLE__+        A.PatternSynP{} -> __IMPOSSIBLE__+        A.RecP{}        -> __IMPOSSIBLE__+        A.EqualP{}      -> __IMPOSSIBLE__+        A.WithP{}       -> __IMPOSSIBLE__        where continue = (eq:) <$> check vars eqs --- | Construct the context for a left hand side, making up hidden (dotted) names+-- | Construct the context for a left hand side, making up out-of-scope names --   for unnamed variables. computeLHSContext :: [Maybe A.Name] -> Telescope -> TCM Context computeLHSContext = go [] []   where     go cxt _ []        tel@ExtendTel{} = do       reportSDoc "impossible" 10 $-        text "computeLHSContext: no patterns left, but tel =" <+> prettyTCM tel+        "computeLHSContext: no patterns left, but tel =" <+> prettyTCM tel       __IMPOSSIBLE__     go cxt _ (_ : _)   EmptyTel = __IMPOSSIBLE__     go cxt _ []        EmptyTel = return cxt@@ -573,15 +610,15 @@      dummyName taken s =       if isUnderscore s then freshNoName_-      else unshadowedName taken <$> freshName_ ("." ++ argNameToString s)+      else setNotInScope <$> freshName_ (argNameToString s)  -- | Bind as patterns bindAsPatterns :: [AsBinding] -> TCM a -> TCM a bindAsPatterns []                ret = ret bindAsPatterns (AsB x v a : asb) ret = do-  reportSDoc "tc.lhs.as" 10 $ text "as pattern" <+> prettyTCM x <+>-    sep [ text ":" <+> prettyTCM a-        , text "=" <+> prettyTCM v+  reportSDoc "tc.lhs.as" 10 $ "as pattern" <+> prettyTCM x <+>+    sep [ ":" <+> prettyTCM a+        , "=" <+> prettyTCM v         ]   addLetBinding defaultArgInfo x v a $ bindAsPatterns asb ret @@ -590,8 +627,8 @@ recheckStrippedWithPattern :: ProblemEq -> TCM () recheckStrippedWithPattern (ProblemEq p v a) = checkInternal v (unDom a)   `catchError` \_ -> typeError . GenericDocError =<< vcat-    [ text "Ill-typed pattern after with abstraction: " <+> prettyA p-    , text "(perhaps you can replace it by `_`?)"+    [ "Ill-typed pattern after with abstraction: " <+> prettyA p+    , "(perhaps you can replace it by `_`?)"     ]  -- | Result of checking the LHS of a clause.@@ -618,16 +655,19 @@     -- ^ As-bindings from the left-hand side. Return instead of bound since we     -- want them in where's and right-hand sides, but not in with-clauses     -- (Issue 2303).+  , lhsPartialSplit :: [Int]+    -- ^ have we done a partial split?   }  instance InstantiateFull LHSResult where-  instantiateFull' (LHSResult n tel ps abs t sub as) = LHSResult n+  instantiateFull' (LHSResult n tel ps abs t sub as psplit) = LHSResult n     <$> instantiateFull' tel     <*> instantiateFull' ps     <*> instantiateFull' abs     <*> instantiateFull' t     <*> instantiateFull' sub     <*> instantiateFull' as+    <*> pure psplit  -- | Check a LHS. Main function. --@@ -664,8 +704,14 @@       eqs0 = zipWith3 ProblemEq (map namedArg cps) (map var $ downFrom $ size tel) (flattenTel tel)    let finalChecks :: LHSState a -> TCM a-      finalChecks (LHSState delta qs0 (Problem eqs rps _) b) = do+      finalChecks (LHSState delta qs0 (Problem eqs rps _) b psplit) = do +        reportSDoc "tc.lhs.top" 20 $ vcat+          [ "lhs: final checks with remaining equations"+          , nest 2 $ if null eqs then "(none)" else vcat $ map prettyTCM eqs+          , "qs0 =" <+> addContext delta (prettyTCMPatternList qs0)+          ]+         unless (null rps) __IMPOSSIBLE__          -- Update modalities of delta to match the modalities of the variables@@ -723,9 +769,11 @@          eqs <- addContext delta $ checkPatternLinearity eqs -        LeftoverPatterns patVars asb0 dots absurds+        LeftoverPatterns patVars asb0 dots absurds otherPats           <- addContext delta $ getLeftoverPatterns eqs +        unless (null otherPats) __IMPOSSIBLE__+         -- Get the user-written names for the pattern variables         let (vars, asb1) = getUserVariableNames delta patVars             asb          = asb0 ++ asb1@@ -738,37 +786,36 @@          let hasAbsurd = not . null $ absurds -        let lhsResult = LHSResult (length cxt) delta qs hasAbsurd b patSub asb+        let lhsResult = LHSResult (length cxt) delta qs hasAbsurd b patSub asb (catMaybes psplit)          -- Debug output         reportSDoc "tc.lhs.top" 10 $-          vcat [ text "checked lhs:"+          vcat [ "checked lhs:"                , nest 2 $ vcat-                 [ text "delta   = " <+> prettyTCM delta-                 , text "dots    = " <+> addContext delta (brackets $ fsep $ punctuate comma $ map prettyTCM dots)-                 , text "asb     = " <+> addContext delta (brackets $ fsep $ punctuate comma $ map prettyTCM asb)-                 , text "absurds = " <+> addContext delta (brackets $ fsep $ punctuate comma $ map prettyTCM absurds)-                 , text "qs      = " <+> addContext delta (prettyList $ map pretty qs)+                 [ "delta   = " <+> prettyTCM delta+                 , "dots    = " <+> addContext delta (brackets $ fsep $ punctuate comma $ map prettyTCM dots)+                 , "asb     = " <+> addContext delta (brackets $ fsep $ punctuate comma $ map prettyTCM asb)+                 , "absurds = " <+> addContext delta (brackets $ fsep $ punctuate comma $ map prettyTCM absurds)+                 , "qs      = " <+> addContext delta (prettyList $ map pretty qs)                  ]                ]         reportSDoc "tc.lhs.top" 30 $           nest 2 $ vcat-                 [ text "vars   = " <+> text (show vars)+                 [ "vars   = " <+> text (show vars)                  ]-        reportSDoc "tc.lhs.top" 20 $ nest 2 $ text "withSub  = " <+> pretty withSub-        reportSDoc "tc.lhs.top" 20 $ nest 2 $ text "weakSub  = " <+> pretty weakSub-        reportSDoc "tc.lhs.top" 20 $ nest 2 $ text "patSub   = " <+> pretty patSub-        reportSDoc "tc.lhs.top" 20 $ nest 2 $ text "paramSub = " <+> pretty paramSub+        reportSDoc "tc.lhs.top" 20 $ nest 2 $ "withSub  = " <+> pretty withSub+        reportSDoc "tc.lhs.top" 20 $ nest 2 $ "weakSub  = " <+> pretty weakSub+        reportSDoc "tc.lhs.top" 20 $ nest 2 $ "patSub   = " <+> pretty patSub+        reportSDoc "tc.lhs.top" 20 $ nest 2 $ "paramSub = " <+> pretty paramSub          newCxt <- computeLHSContext vars delta -        updateContext paramSub (const newCxt)-          $ applyRelevanceToContext (getRelevance b) $ do+        updateContext paramSub (const newCxt) $ do -          reportSDoc "tc.lhs.top" 10 $ text "bound pattern variables"-          reportSDoc "tc.lhs.top" 60 $ nest 2 $ text "context = " <+> (pretty =<< getContextTelescope)-          reportSDoc "tc.lhs.top" 10 $ nest 2 $ text "type  = " <+> prettyTCM b-          reportSDoc "tc.lhs.top" 60 $ nest 2 $ text "type  = " <+> pretty b+          reportSDoc "tc.lhs.top" 10 $ "bound pattern variables"+          reportSDoc "tc.lhs.top" 60 $ nest 2 $ "context = " <+> (pretty =<< getContextTelescope)+          reportSDoc "tc.lhs.top" 10 $ nest 2 $ "type  = " <+> prettyTCM b+          reportSDoc "tc.lhs.top" 60 $ nest 2 $ "type  = " <+> pretty b            bindAsPatterns asb $ do @@ -792,7 +839,7 @@   let st = over (lhsProblem . problemEqs) (++ withEqs) st0    -- doing the splits:-  (result, block) <- inTopContext $ runWriterT $ checkLHS f st+  (result, block) <- inTopContext $ runWriterT $ (`runReaderT` (size cxt)) $ checkLHS f st   return result  -- | Determine in which order the splits should be tried by@@ -805,6 +852,7 @@       A.LitP{}    -> True       A.RecP{}    -> True       A.ConP{}    -> True+      A.EqualP{}  -> True        A.VarP{}    -> False       A.WildP{}   -> False@@ -820,27 +868,33 @@  -- | The loop (tail-recursive): split at a variable in the problem until problem is solved checkLHS-  :: forall tcm a. (MonadTCM tcm, MonadWriter Blocked_ tcm, HasConstInfo tcm, MonadError TCErr tcm, MonadDebug tcm)+  :: forall tcm a. (MonadTCM tcm, MonadReduce tcm, MonadWriter Blocked_ tcm, HasConstInfo tcm, MonadError TCErr tcm, MonadDebug tcm, MonadReader Nat tcm)   => Maybe QName      -- ^ The name of the definition we are checking.   -> LHSState a       -- ^ The current state.   -> tcm a-checkLHS mf st@(LHSState tel ip problem target) = do+checkLHS mf = updateRelevance checkLHS_ where+    -- If the target type is irrelevant or in Prop,+    -- we need to check the lhs in irr. cxt. (see Issue 939).+ updateRelevance cont st@(LHSState tel ip problem target psplit) = do+      let m = getModality target+      applyModalityToContext m $ do+        cont $ over (lhsTel . listTel) (map $ inverseApplyModality m) st+        -- Andreas, 2018-10-23, issue #3309+        -- the modalities in the clause telescope also need updating.++ checkLHS_ st@(LHSState tel ip problem target psplit) = do+   if isSolvedProblem problem then     liftTCM $ (problem ^. problemCont) st   else do-    unlessM (optPatternMatching <$> gets getPragmaOptions) $+    unlessM (optPatternMatching <$> getsTC getPragmaOptions) $       unless (problemAllVariables problem) $         typeError $ GenericError $ "Pattern matching is disabled"      let splitsToTry = splitStrategy $ problem ^. problemEqs      foldr trySplit trySplitRest splitsToTry >>= \case-      Right st' -> do-        -- If the new target type is irrelevant, we need to continue in irr. cxt.-        -- (see Issue 939).-        let rel = getRelevance $ st' ^. lhsTarget-        applyRelevanceToContext rel $ checkLHS mf st'-+      Right st' -> checkLHS mf st'       -- If no split works, give error from first split.       -- This is conservative, but might not be the best behavior.       -- It might be better to print all the errors instead.@@ -864,11 +918,11 @@      splitArg :: ProblemEq -> ExceptT TCErr tcm (LHSState a)     -- Split on constructor/literal pattern-    splitArg (ProblemEq p v (Dom _ a)) = traceCall (CheckPattern p tel a) $ do+    splitArg (ProblemEq p v Dom{unDom = a}) = traceCall (CheckPattern p tel a) $ do        reportSDoc "tc.lhs.split" 30 $ sep-        [ text "split looking at pattern"-        , nest 2 $ text "p =" <+> prettyA p+        [ "split looking at pattern"+        , nest 2 $ "p =" <+> prettyA p         ]        -- in order to split, v must be a variable.@@ -883,6 +937,7 @@         (A.LitP l)        -> splitLit delta1 dom adelta2 l         p@A.RecP{}        -> splitCon delta1 dom adelta2 p Nothing         p@(A.ConP _ c ps) -> splitCon delta1 dom adelta2 p $ Just c+        p@(A.EqualP _ ts) -> splitPartial delta1 dom adelta2 ts          A.VarP{}        -> __IMPOSSIBLE__         A.WildP{}       -> __IMPOSSIBLE__@@ -898,42 +953,205 @@     splitRest :: NamedArg A.Pattern -> ExceptT TCErr tcm (LHSState a)     splitRest p = setCurrentRange p $ do       reportSDoc "tc.lhs.split" 20 $ sep-        [ text "splitting problem rest"-        , nest 2 $ text "projection pattern =" <+> prettyA p-        , nest 2 $ text "eliminates type    =" <+> prettyTCM target+        [ "splitting problem rest"+        , nest 2 $ "projection pattern =" <+> prettyA p+        , nest 2 $ "eliminates type    =" <+> prettyTCM target         ]       reportSDoc "tc.lhs.split" 80 $ sep         [ nest 2 $ text $ "projection pattern (raw) = " ++ show p         ]        -- @p@ should be a projection pattern projection from @target@-      (orig, ambProjName) <- ifJust (A.maybePostfixProjP p) return $+      (orig, ambProjName) <- ifJust (A.isProjP p) return $         addContext tel $ softTypeError $ CannotEliminateWithPattern p (unArg target) -      (projName, projType) <- suspendErrors $-        addContext tel $ disambiguateProjection (getHiding p) ambProjName target+      (projName, projType) <- suspendErrors $ do+        -- Andreas, 2018-10-18, issue #3289: postfix projections do not have hiding+        -- information for their principal argument; we do not parse @{r}.p@ and the like.+        let h = if orig == ProjPostfix then Nothing else Just $ getHiding p+        addContext tel $ disambiguateProjection h ambProjName target        -- Compute the new rest type by applying the projection type to 'self'.       -- Note: we cannot be in a let binding.       f <- ifJust mf return $ hardTypeError $              GenericError "Cannot use copatterns in a let binding"       let self = Def f $ patternsToElims ip-      target' <- traverse (`piApply1` self) projType+      target' <- traverse (`piApplyM` self) projType        -- Compute the new state-      let projP    = target' $> Named Nothing (ProjP orig projName)+      let projP    = applyWhen (orig == ProjPostfix) (setHiding NotHidden) $+                       target' $> Named Nothing (ProjP orig projName)           ip'      = ip ++ [projP]           -- drop the projection pattern (already splitted)           problem' = over problemRestPats tail problem-      liftTCM $ updateProblemRest (LHSState tel ip' problem' target')+      liftTCM $ updateProblemRest (LHSState tel ip' problem' target' psplit)  +    -- | Split a Partial.+    --+    -- Example for splitPartial:+    -- @+    --   g : ∀ i j → Partial (i ∨ j) A+    --   g i j (i = 1) = a i j+    --   g i j (j = 1) = b i j+    -- @+    -- leads to, in the first clause:+    -- @+    --   dom   = IsOne (i ∨ j)+    --   ts    = [(i, 1)]+    --   phi   = i+    --   sigma = [1/i]+    -- @+    -- Final clauses:+    -- @+    --   g : ∀ i j → Partial (i ∨ j) A+    --   g 1? j  .itIsOne = a 1 j+    --   g i  1? .itIsOne = b i 1+    -- @+    -- Herein, ? indicates a 'conPFallThrough' pattern.+    --+    -- Example for splitPartial:+    -- @+    --   h : ∀ i j → Partial (i & ¬ j) A+    --   h i j (i = 1) (j = 0)+    --   -- ALT: h i j (i & ¬ j = 1)+    -- @+    -- gives+    -- @+    --   dom = IsOne (i & ¬ j)+    --   ts  = [(i,1), (j,0)]  -- ALT: [(i & ¬ j, 1)]+    --   phi = i & ¬ j+    --   sigma = [1/i,0/j]+    -- @+    --+    -- Example for splitPartial:+    -- @+    --   g : ∀ i j → Partial (i ∨ j) A+    --   g i j (i ∨ j = 1) = a i j+    -- @+    -- leads to, in the first clause:+    -- @+    --   dom   = IsOne (i ∨ j)+    --   ts    = [(i ∨ j, 1)]+    --   phi   = i ∨ j+    --   sigma = fails because several substitutions [[1/i],[1/j]] correspond to phi+    -- @++    splitPartial :: Telescope     -- ^ The types of arguments before the one we split on+                 -> Dom Type      -- ^ The type of the argument we split on+                 -> Abs Telescope -- ^ The types of arguments after the one we split on+                 -> [(A.Expr, A.Expr)] -- ^ [(φ₁ = b1),..,(φn = bn)]+                 -> ExceptT TCErr tcm (LHSState a)+    splitPartial delta1 dom adelta2 ts = do++      unless (domFinite dom) $ softTypeError $ GenericError $ "Not a finite domain: " ++ show dom++      tInterval <- liftTCM $ elInf primInterval++      names <- liftTCM $ addContext tel $ do+        LeftoverPatterns{patternVariables = vars} <- getLeftoverPatterns $ problem ^. problemEqs+        return $ take (size delta1) $ fst $ getUserVariableNames tel vars++      -- Problem: The context does not match the checkpoints in checkLHS,+      --          however we still need a proper checkpoint substitution+      --          for checkExpr below.+      --+      -- Solution: partial splits are not allowed when there are+      --           constructor patterns (checked in checkDef), so+      --           newContext is an extension of the definition+      --           context.+      --+      -- i.e.: Given+      --+      --             Γ = context where def is checked, also last checkpoint.+      --+      --       Then+      --+      --             newContext = Γ Ξ+      --             cpSub = raiseS |Ξ|+      --+      lhsCxtSize <- ask -- size of the context before checkLHS call.+      reportSDoc "tc.lhs.split.partial" 10 $ "lhsCxtSize =" <+> prettyTCM lhsCxtSize++      newContext <- liftTCM $ computeLHSContext names delta1+      reportSDoc "tc.lhs.split.partial" 10 $ "newContext =" <+> prettyTCM newContext++      let cpSub = raiseS $ size newContext - lhsCxtSize++      (gamma,sigma) <- liftTCM $ updateContext cpSub (const newContext) $ do+         ts <- forM ts $ \ (t,u) -> do+                 reportSDoc "tc.lhs.split.partial" 10 $ "currentCxt =" <+> (prettyTCM =<< getContext)+                 reportSDoc "tc.lhs.split.partial" 10 $ text "t, u (Expr) =" <+> prettyTCM (t,u)+                 t <- checkExpr t tInterval+                 u <- checkExpr u tInterval+                 reportSDoc "tc.lhs.split.partial" 10 $ text "t, u        =" <+> pretty (t, u)+                 u <- intervalView =<< reduce u+                 case u of+                   IZero -> primINeg <@> pure t+                   IOne  -> return t+                   _     -> typeError $ GenericError $ "Only 0 or 1 allowed on the rhs of face"+         -- Example: ts = (i=0) (j=1) will result in phi = ¬ i & j+         phi <- case ts of+                   [] -> do+                     a <- reduce (unEl $ unDom dom)+                     -- builtinIsOne is defined, since this is a precondition for having Partial+                     isone <- fromMaybe __IMPOSSIBLE__ <$>  -- newline because of CPP+                       getBuiltinName' builtinIsOne+                     case a of+                       Def q [Apply phi] | q == isone -> return (unArg phi)+                       _           -> typeError . GenericDocError =<< do+                         prettyTCM a <+> " is not IsOne."++                   _  -> foldl (\ x y -> primIMin <@> x <@> y) primIOne (map pure ts)+         reportSDoc "tc.lhs.split.partial" 10 $ text "phi           =" <+> prettyTCM phi+         reportSDoc "tc.lhs.split.partial" 30 $ text "phi           =" <+> pretty phi+         phi <- reduce phi+         reportSDoc "tc.lhs.split.partial" 10 $ text "phi (reduced) =" <+> prettyTCM phi+         refined <- forallFaceMaps phi (\ bs m t -> typeError $ GenericError $ "face blocked on meta")+                            (\ sigma -> (,sigma) <$> getContextTelescope)+         case refined of+           [(gamma,sigma)] -> return (gamma,sigma)+           []              -> typeError $ GenericError $ "The face constraint is unsatisfiable."+           _               -> typeError $ GenericError $ "Cannot have disjunctions in a face constraint."+      itisone <- liftTCM primItIsOne+      -- substitute the literal in p1 and dpi+      reportSDoc "tc.lhs.faces" 60 $ text $ show sigma++      let oix = size adelta2 -- de brujin index of IsOne+          o_n = fromMaybe __IMPOSSIBLE__ $+            flip findIndex ip (\ x -> case namedThing (unArg x) of+                                           VarP _ x -> dbPatVarIndex x == oix+                                           _        -> False)+          delta2' = absApp adelta2 itisone+          delta2 = applySubst sigma delta2'+          mkConP (Con c _ [])+             = ConP c (noConPatternInfo { conPType = Just (Arg defaultArgInfo tInterval)+                                              , conPFallThrough = True })+                          []+          mkConP (Var i []) = VarP PatOSystem (DBPatVar "x" i)+          mkConP _          = __IMPOSSIBLE__+          rho0 = fmap mkConP sigma++          rho    = liftS (size delta2) $ consS (DotP PatOSystem itisone) rho0++          delta'   = abstract gamma delta2+          eqs'     = applyPatSubst rho $ problem ^. problemEqs+          ip'      = applySubst rho ip+          target'  = applyPatSubst rho target++      -- Compute the new state+      eqs' <- liftTCM $ addContext delta' $ updateProblemEqs eqs'+      let problem' = set problemEqs eqs' problem+      reportSDoc "tc.lhs.split.partial" 60 $ text (show problem')+      liftTCM $ updateProblemRest (LHSState delta' ip' problem' target' (psplit ++ [Just o_n]))++     splitLit :: Telescope     -- ^ The types of arguments before the one we split on              -> Dom Type      -- ^ The type of the literal we split on              -> Abs Telescope -- ^ The types of arguments after the one we split on              -> Literal       -- ^ The literal written by the user              -> ExceptT TCErr tcm (LHSState a)-    splitLit delta1 dom@(Dom info a) adelta2 lit = do+    splitLit delta1 dom@Dom{domInfo = info, unDom = a} adelta2 lit = do       let delta2 = absApp adelta2 (Lit lit)           delta' = abstract delta1 delta2           rho    = singletonS (size delta2) (LitP lit)@@ -947,9 +1165,15 @@           target'  = applyPatSubst rho target        -- Andreas, 2010-09-07 cannot split on irrelevant args-      when (unusableRelevance $ getRelevance info) $-        addContext delta1 $ hardTypeError $ SplitOnIrrelevant dom+      unless (usableRelevance info) $+        addContext delta1 $ softTypeError $ SplitOnIrrelevant dom +      -- Andreas, 2018-10-17, we can however split on erased things+      -- if there is a single constructor (checked in Coverage).+      --+      -- Thus, no checking of (usableQuantity info) here.++       -- check that a is indeed the type of lit (otherwise fail softly)       -- if not, fail softly since it could be instantiated by a later split.       suspendErrors $ equalType a =<< litType lit@@ -957,7 +1181,7 @@       -- Compute the new state       eqs' <- liftTCM $ addContext delta' $ updateProblemEqs eqs'       let problem' = set problemEqs eqs' problem-      liftTCM $ updateProblemRest (LHSState delta' ip' problem' target')+      liftTCM $ updateProblemRest (LHSState delta' ip' problem' target' psplit)       splitCon :: Telescope     -- ^ The types of arguments before the one we split on@@ -967,28 +1191,39 @@              -> Maybe AmbiguousQName  -- ^ @Just c@ for a (possibly ambiguous) constructor @c@, or                                       --   @Nothing@ for a record pattern              -> ExceptT TCErr tcm (LHSState a)-    splitCon delta1 dom@(Dom info a) adelta2 focusPat ambC = do+    splitCon delta1 dom@Dom{domInfo = info, unDom = a} adelta2 focusPat ambC = do       let delta2 = absBody adelta2        reportSDoc "tc.lhs.split" 10 $ vcat-        [ text "checking lhs"-        , nest 2 $ text "tel =" <+> prettyTCM tel-        , nest 2 $ text "rel =" <+> (text $ show $ getRelevance info)+        [ "checking lhs"+        , nest 2 $ "tel =" <+> prettyTCM tel+        , nest 2 $ "rel =" <+> (text $ show $ getRelevance info)         ]        reportSDoc "tc.lhs.split" 15 $ vcat-        [ text "split problem"+        [ "split problem"         , nest 2 $ vcat-          [ text "delta1 = " <+> prettyTCM delta1-          , text "a      = " <+> addContext delta1 (prettyTCM a)-          , text "delta2 = " <+> addContext delta1 (addContext ("x", dom) (prettyTCM delta2))+          [ "delta1 = " <+> prettyTCM delta1+          , "a      = " <+> addContext delta1 (prettyTCM a)+          , "delta2 = " <+> addContext delta1+                              (addContext ("x" :: String, dom) (prettyTCM delta2))           ]         ] +      -- We cannot split on (shape-)irrelevant arguments.+      reportSLn "tc.lhs.split" 30 $ "split ConP: relevance is " ++ show (getRelevance info)+      unless (usableRelevance info) $ addContext delta1 $+        softTypeError $ SplitOnIrrelevant dom++      -- Andreas, 2018-10-17, we can however split on erased things+      -- if there is a single constructor (checked in Coverage).+      --+      -- Thus, no checking of (usableQuantity info) here.+       -- We should be at a data/record type-      (d, pars, ixs) <- addContext delta1 $ isDataOrRecordType dom+      (dr, d, pars, ixs) <- addContext delta1 $ isDataOrRecordType a -      checkSortOfSplitVar a+      checkSortOfSplitVar dr a (Just target)        -- The constructor should construct an element of this datatype       (c, b) <- liftTCM $ addContext delta1 $ case ambC of@@ -997,15 +1232,18 @@        -- Don't split on lazy constructor       case focusPat of-        A.ConP cpi _ _ | patLazy cpi -> softTypeError $+        A.ConP cpi _ _ | patLazy cpi == ConPatLazy -> softTypeError $           ForcedConstructorNotInstantiated focusPat         _ -> return ()        -- The type of the constructor will end in an application of the datatype-      TelV gamma (El _ ctarget) <- liftTCM $ telView b+      (TelV gamma (El _ ctarget), boundary) <- liftTCM $ telViewPathBoundaryP b       let Def d' es' = ctarget           cixs = drop (size pars) $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es' +      -- Δ₁Γ ⊢ boundary+      reportSDoc "tc.lhs.split.con" 50 $ text "  boundary = " <+> prettyTCM boundary+       unless (d == d') {-'-} __IMPOSSIBLE__        -- Get names for the constructor arguments from the user patterns@@ -1021,22 +1259,23 @@         _ -> __IMPOSSIBLE__        -- Andreas 2010-09-07  propagate relevance info to new vars-      let updRel = composeRelevance (getRelevance info)-      gamma <- return $ mapRelevance updRel <$> gamma+      -- Andreas 2018-10-17  propagate modality+      let updMod = composeModality (getModality info)+      gamma <- return $ mapModality updMod <$> gamma        -- Get the type of the datatype.       da <- (`piApply` pars) . defType <$> getConstInfo d-      reportSDoc "tc.lhs.split" 30 $ text "  da = " <+> prettyTCM da+      reportSDoc "tc.lhs.split" 30 $ "  da = " <+> prettyTCM da        reportSDoc "tc.lhs.top" 15 $ addContext delta1 $-        sep [ text "preparing to unify"+        sep [ "preparing to unify"             , nest 2 $ vcat-              [ text "c      =" <+> prettyTCM c <+> text ":" <+> prettyTCM b-              , text "d      =" <+> prettyTCM (Def d (map Apply pars)) <+> text ":" <+> prettyTCM da-              , text "gamma  =" <+> prettyTCM gamma-              , text "pars   =" <+> brackets (fsep $ punctuate comma $ map prettyTCM pars)-              , text "ixs    =" <+> brackets (fsep $ punctuate comma $ map prettyTCM ixs)-              , text "cixs   =" <+> addContext gamma (brackets (fsep $ punctuate comma $ map prettyTCM cixs))+              [ "c      =" <+> prettyTCM c <+> ":" <+> prettyTCM b+              , "d      =" <+> prettyTCM (Def d (map Apply pars)) <+> ":" <+> prettyTCM da+              , "gamma  =" <+> prettyTCM gamma+              , "pars   =" <+> brackets (fsep $ punctuate comma $ map prettyTCM pars)+              , "ixs    =" <+> brackets (fsep $ punctuate comma $ map prettyTCM ixs)+              , "cixs   =" <+> addContext gamma (brackets (fsep $ punctuate comma $ map prettyTCM cixs))               ]             ] @@ -1060,15 +1299,15 @@       --        Δ₁' ⊢ ρ₁ : Δ₁       --        Δ₁' ⊢ ρ₂ : Γρ₁       -- Application of the constructor c gives-      --        Δ₁' ⊢ c ρ₂ : (D pars cixs)(ρ₁;ρ₂)+      --        Δ₁' ⊢ (c Γ)(ρ₀) : (D pars cixs)(ρ₁;ρ₂)       -- We have       --        cixs(ρ₁;ρ₂)       --         ≡ cixs(ρ₀)   (since ρ₀=ρ₁;ρ₂)       --         ≡ ixs(ρ₀)    (by unification)       --         ≡ ixs(ρ₁)    (since ixs doesn't actually depend on Γ)-      -- so     Δ₁' ⊢ c ρ₂ : (D pars ixs)ρ₁+      -- so     Δ₁' ⊢ (c Γ)(ρ₀) : (D pars ixs)ρ₁       -- Putting this together with ρ₁ gives ρ₃ = ρ₁;c ρ₂-      --        Δ₁' ⊢ ρ₁;c ρ₂ : Δ₁(x : D vs ws)+      --        Δ₁' ⊢ ρ₁;(c Γ)(ρ₀) : Δ₁(x : D vs ws)       -- and lifting over Δ₂ gives the final substitution ρ = ρ₃;Δ₂       -- from Δ' = Δ₁';Δ₂ρ₃       --        Δ' ⊢ ρ : Δ₁(x : D vs ws)Δ₂@@ -1085,19 +1324,19 @@         -- Success.         Unifies (delta1',rho0,es) -> do -          reportSDoc "tc.lhs.top" 15 $ text "unification successful"+          reportSDoc "tc.lhs.top" 15 $ "unification successful"           reportSDoc "tc.lhs.top" 20 $ nest 2 $ vcat-            [ text "delta1' =" <+> prettyTCM delta1'-            , text "rho0    =" <+> addContext delta1' (prettyTCM rho0)-            , text "es      =" <+> addContext delta1' (prettyTCM $ (fmap . fmap . fmap) patternToTerm es)+            [ "delta1' =" <+> prettyTCM delta1'+            , "rho0    =" <+> addContext delta1' (prettyTCM rho0)+            , "es      =" <+> addContext delta1' (prettyTCM $ (fmap . fmap . fmap) patternToTerm es)             ]            -- split substitution into part for Δ₁ and part for Γ           let (rho1,rho2) = splitS (size gamma) rho0            reportSDoc "tc.lhs.top" 20 $ addContext delta1' $ nest 2 $ vcat-            [ text "rho1    =" <+> prettyTCM rho1-            , text "rho2    =" <+> prettyTCM rho2+            [ "rho1    =" <+> prettyTCM rho1+            , "rho2    =" <+> prettyTCM rho2             ]            -- Andreas, 2010-09-09, save the type.@@ -1105,31 +1344,33 @@           let a' = applyPatSubst rho1 a           -- Also remember if we are a record pattern.           isRec <- isRecord d+           let cpi = ConPatternInfo { conPRecord = isRec $> PatOCon+                                   , conPFallThrough = False                                    , conPType   = Just $ Arg info a'                                    , conPLazy   = False }            -- compute final context and substitution-          let crho2   = ConP c cpi $ applySubst rho2 $ teleNamedArgs gamma-              rho3    = consS crho2 rho1+          let crho    = ConP c cpi $ applySubst rho0 $ (telePatterns gamma boundary)+              rho3    = consS crho rho1               delta2' = applyPatSubst rho3 delta2               delta'  = delta1' `abstract` delta2'               rho     = liftS (size delta2) rho3            reportSDoc "tc.lhs.top" 20 $ addContext delta1' $ nest 2 $ vcat-            [ text "crho2   =" <+> prettyTCM crho2-            , text "rho3    =" <+> prettyTCM rho3-            , text "delta2' =" <+> prettyTCM delta2'+            [ "crho    =" <+> prettyTCM crho+            , "rho3    =" <+> prettyTCM rho3+            , "delta2' =" <+> prettyTCM delta2'             ]           reportSDoc "tc.lhs.top" 70 $ addContext delta1' $ nest 2 $ vcat-            [ text "crho2   =" <+> pretty crho2-            , text "rho3    =" <+> pretty rho3-            , text "delta2' =" <+> pretty delta2'+            [ "crho    =" <+> pretty crho+            , "rho3    =" <+> pretty rho3+            , "delta2' =" <+> pretty delta2'             ]            reportSDoc "tc.lhs.top" 15 $ nest 2 $ vcat-            [ text "delta'  =" <+> prettyTCM delta'-            , text "rho     =" <+> addContext delta' (prettyTCM rho)+            [ "delta'  =" <+> prettyTCM delta'+            , "rho     =" <+> addContext delta' (prettyTCM rho)             ]            -- Compute the new out patterns and target type.@@ -1144,14 +1385,14 @@            -- if rest type reduces,           -- extend the split problem by previously not considered patterns-          st' <- liftTCM $ updateProblemRest $ LHSState delta' ip' problem' target'+          st' <- liftTCM $ updateProblemRest $ LHSState delta' ip' problem' target' psplit            reportSDoc "tc.lhs.top" 12 $ sep-            [ text "new problem from rest"+            [ "new problem from rest"             , nest 2 $ vcat-              [ text "delta'  =" <+> prettyTCM (st' ^. lhsTel)-              , text "eqs'    =" <+> addContext (st' ^. lhsTel) (prettyTCM $ st' ^. lhsProblem ^. problemEqs)-              , text "ip'     =" <+> addContext (st' ^. lhsTel) (pretty $ st' ^. lhsOutPat)+              [ "delta'  =" <+> prettyTCM (st' ^. lhsTel)+              , "eqs'    =" <+> addContext (st' ^. lhsTel) (prettyTCM $ st' ^. lhsProblem ^. problemEqs)+              , "ip'     =" <+> addContext (st' ^. lhsTel) (pretty $ st' ^. lhsOutPat)               ]             ]           return st'@@ -1167,10 +1408,12 @@   check (VarP {})   = return ()   check (DotP {})   = return ()   check (ProjP{})   = return ()+  check (IApplyP{}) = return ()   check (LitP {})   = return ()  -- Literals are assumed not to be coinductive.+  check (DefP{})    = return () -- we assume we don't generate this for codata.   check (ConP con _ ps) = do     reportSDoc "tc.lhs.top" 40 $-      text "checking whether" <+> prettyTCM con <+> text "is a coinductive constructor"+      "checking whether" <+> prettyTCM con <+> "is a coinductive constructor"     TelV _ t <- telView' . defType <$> do getConstInfo $ conName con     c <- isCoinductive t     case c of@@ -1203,42 +1446,46 @@ --   a data/record type by instantiating a variable/metavariable, or fail hard --   otherwise. isDataOrRecordType :: (MonadTCM m, MonadDebug m)-                   => Dom Type -> ExceptT TCErr m (QName, Args, Args)-isDataOrRecordType dom@(Dom info a) = liftTCM (reduceB a) >>= \case+                   => Type+                   -> ExceptT TCErr m (DataOrRecord, QName, Args, Args)+isDataOrRecordType a = liftTCM (reduceB a) >>= \case   NotBlocked ReallyNotBlocked a -> case unEl a of      -- Subcase: split type is a Def.     Def d es -> (liftTCM $ theDef <$> getConstInfo d) >>= \case        Datatype{dataPars = np} -> do-        -- We cannot split on (shape-)irrelevant non-records.-        -- Andreas, 2011-10-04 unless allowed by option-        reportSLn "tc.lhs.split" 30 $ "split ConP: relevance is " ++ show (getRelevance info)-        when (unusableRelevance $ getRelevance info) $-          unlessM (liftTCM $ optExperimentalIrrelevance <$> pragmaOptions) $-            hardTypeError $ SplitOnIrrelevant dom          let (pars, ixs) = splitAt np $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es-        return (d, pars, ixs)+        return (IsData, d, pars, ixs)        Record{} -> do         let pars = fromMaybe __IMPOSSIBLE__ $ allApplyElims es-        return (d, pars, [])+        return (IsRecord, d, pars, [])        -- Issue #2253: the data type could be abstract.       AbstractDefn{} -> hardTypeError . GenericDocError =<< do-        liftTCM $ text "Cannot split on abstract data type" <+> prettyTCM d+        liftTCM $ "Cannot split on abstract data type" <+> prettyTCM d        -- the type could be an axiom       Axiom{} -> hardTypeError =<< notData +      -- Can't match before we have the definition+      DataOrRecSig{} -> hardTypeError . GenericDocError =<< do+        liftTCM $ "Cannot split on data type" <+> prettyTCM d <+> "whose definition has not yet been checked"+       -- Issue #2997: the type could be a Def that does not reduce for some reason       -- (abstract, failed termination checking, NON_TERMINATING, ...)       Function{}    -> hardTypeError =<< notData        Constructor{} -> __IMPOSSIBLE__-      Primitive{}   -> __IMPOSSIBLE__ +      -- Issue #3620: Some primitives are types too.+      -- Not data though, at least currently 11/03/2018.+      Primitive{}   -> hardTypeError =<< notData++      GeneralizableVar{} -> __IMPOSSIBLE__+     -- variable or metavariable: fail softly     Var{}      -> softTypeError =<< notData     MetaV{}    -> softTypeError =<< notData@@ -1252,6 +1499,7 @@     Con{}      -> __IMPOSSIBLE__     Level{}    -> __IMPOSSIBLE__     DontCare{} -> __IMPOSSIBLE__+    Dummy s    -> __IMPOSSIBLE_VERBOSE__ s    -- Type is blocked on a meta or something else: fail softly   _ -> softTypeError =<< notData@@ -1278,7 +1526,8 @@ --   projecting from. Returns the unambiguous projection name and its type. --   Throws an error if the type is not a record type. disambiguateProjection-  :: Hiding         -- ^ Hiding info of the projection's principal argument.+  :: Maybe Hiding   -- ^ Hiding info of the projection's principal argument.+                    --   @Nothing@ if 'Postfix' projection.   -> AmbiguousQName -- ^ Name of the projection to be disambiguated.   -> Arg Type       -- ^ Record type we are projecting from.   -> TCM (QName, Arg Type)@@ -1317,8 +1566,8 @@               liftTCM $ storeDisambiguatedName d               return (d,a)             (errs , disambs@((d,a):_)) -> typeError . GenericDocError =<< vcat-              [ text "Ambiguous projection " <> prettyTCM (qnameName d) <> text "."-              , text "It could refer to any of"+              [ "Ambiguous projection " <> prettyTCM d <> "."+              , "It could refer to any of"               , nest 2 $ vcat $ map showDisamb disambs               ]     _ -> __IMPOSSIBLE__@@ -1326,16 +1575,16 @@   where     showDisamb (d,_) =       let r = head $ filter (noRange /=) $ map nameBindingSite $ reverse $ mnameToList $ qnameModule d-      in  (pretty =<< dropTopLevelModule d) <+> text "(introduced at " <> prettyTCM r <> text ")"+      in  (pretty =<< dropTopLevelModule d) <+> "(introduced at " <> prettyTCM r <> ")"      notRecord = wrongProj $ headNe ds      wrongProj :: (MonadTCM m, MonadError TCErr m) => QName -> m a     wrongProj d = softTypeError =<< do       liftTCM $ GenericDocError <$> sep-        [ text "Cannot eliminate type "+        [ "Cannot eliminate type "         , prettyTCM (unArg b)-        , text " with projection "+        , " with projection "         , if isAmbiguous ambD then             text . prettyShow =<< dropTopLevelModule d           else@@ -1345,7 +1594,7 @@     wrongHiding :: (MonadTCM m, MonadError TCErr m) => QName -> m a     wrongHiding d = softTypeError =<< do       liftTCM $ GenericDocError <$> sep-        [ text "Wrong hiding used for projection " , prettyTCM d ]+        [ "Wrong hiding used for projection " , prettyTCM d ]      tryProj       :: Bool                 -- ^ Are we allowed to create new constraints?@@ -1382,9 +1631,13 @@          let ai = setRelevance (getRelevance argd) $ projArgInfo proj +        reportSDoc "tc.lhs.split" 20 $ sep+          [ text $ "original proj relevance  = " ++ show (getRelevance argd)+          ]         -- Andreas, 2016-12-31, issue #2374:         -- We can also disambiguate by hiding info.-        unless (sameHiding h ai) $ wrongHiding d+        -- Andreas, 2018-10-18, issue #3289: postfix projections have no hiding info.+        unless (caseMaybe h True $ sameHiding ai) $ wrongHiding d          -- Andreas, 2016-12-31, issue #1976: Check parameters.         suspendErrors $ applyUnless constraintsOk noConstraints $@@ -1393,7 +1646,7 @@         -- Get the type of projection d applied to "self"         dType <- liftTCM $ defType <$> getConstInfo d  -- full type!         reportSDoc "tc.lhs.split" 20 $ sep-          [ text "we are being projected by dType = " <+> prettyTCM dType+          [ "we are being projected by dType = " <+> prettyTCM dType           ]         projType <- liftTCM $ dType `piApplyM` vs         return (d0 , Arg ai projType)@@ -1430,15 +1683,15 @@           return (c,a)          (errs , disambs@((c0,c,a):_)) -> typeError . GenericDocError =<< vcat-          [ text "Ambiguous constructor " <> prettyTCM (qnameName $ conName c) <> text "."-          , text "It could refer to any of"+          [ "Ambiguous constructor " <> prettyTCM (qnameName $ conName c) <> "."+          , "It could refer to any of"           , nest 2 $ vcat $ map showDisamb disambs           ]    where     showDisamb (c0,_,_) =       let r = head $ filter (noRange /=) $ map nameBindingSite $ reverse $ mnameToList $ qnameModule c0-      in  (pretty =<< dropTopLevelModule c0) <+> text "(introduced at " <> prettyTCM r <> text ")"+      in  (pretty =<< dropTopLevelModule c0) <+> "(introduced at " <> prettyTCM r <> ")"      abstractConstructor c = softTypeError $       AbstractConstructorNotInScope c@@ -1505,19 +1758,31 @@     Def d0 es -> do -- compare parameters       let vs = fromMaybe __IMPOSSIBLE__ $ allApplyElims es       reportSDoc "tc.lhs.split" 40 $-        vcat [ nest 2 $ text "d                   =" <+> (text . prettyShow) d-             , nest 2 $ text "d0 (should be == d) =" <+> (text . prettyShow) d0-             , nest 2 $ text "dc                  =" <+> (text . prettyShow) dc-             , nest 2 $ text "vs                  =" <+> prettyTCM vs+        vcat [ nest 2 $ "d                   =" <+> (text . prettyShow) d+             , nest 2 $ "d0 (should be == d) =" <+> (text . prettyShow) d0+             , nest 2 $ "dc                  =" <+> (text . prettyShow) dc+             , nest 2 $ "vs                  =" <+> prettyTCM vs              ]       -- when (d0 /= d) __IMPOSSIBLE__ -- d could have extra qualification       t <- typeOfConst d       compareArgs [] [] t (Def d []) vs (take (length vs) pars)     _ -> __IMPOSSIBLE__ -checkSortOfSplitVar :: (MonadTCM tcm, MonadError TCErr tcm, LensSort a) => a -> tcm ()-checkSortOfSplitVar a = liftTCM (reduce $ getSort a) >>= \case-  Type{} -> return ()-  _      -> softTypeError =<< do-    liftTCM $ GenericDocError <$> sep-      [ text "Cannot split on datatype in sort" , prettyTCM (getSort a) ]+checkSortOfSplitVar :: (MonadTCM tcm, MonadReduce tcm, MonadError TCErr tcm, LensSort a)+                    => DataOrRecord -> a -> Maybe (Arg Type) -> tcm ()+checkSortOfSplitVar dr a mtarget = do+  infOk <- optOmegaInOmega <$> pragmaOptions+  liftTCM (reduce $ getSort a) >>= \case+    Type{} -> return ()+    Prop{}+      | IsRecord <- dr         -> return ()+      | Just target <- mtarget -> unlessM (isPropM target) splitOnPropError+      | otherwise              -> splitOnPropError+    Inf{} | infOk -> return ()+    _      -> softTypeError =<< do+      liftTCM $ GenericDocError <$> sep+        [ "Cannot split on datatype in sort" , prettyTCM (getSort a) ]++  where+    splitOnPropError = softTypeError $ GenericError+      "Cannot split on datatype in Prop unless target is in Prop"
src/full/Agda/TypeChecking/Rules/LHS/Implicit.hs view
@@ -41,7 +41,7 @@ insertImplicitPatterns :: ExpandHidden -> [NamedArg A.Pattern] ->                           Telescope -> TCM [NamedArg A.Pattern] insertImplicitPatterns exh ps tel =-  insertImplicitPatternsT exh ps (telePi tel typeDontCare)+  insertImplicitPatternsT exh ps (telePi tel __DUMMY_TYPE__)  -- | Insert trailing SizeLt patterns, if any. insertImplicitSizeLtPatterns :: Type -> TCM [NamedArg A.Pattern]@@ -55,10 +55,10 @@    -- Search for the last SizeLt type among the hidden arguments.   TelV tel _ <- telView t-  let ts = reverse $ takeWhile (not . visible) $ telToList tel-  keep <- reverse <$> dropWhileM (not <.> isSizeLt . snd . unDom) ts+  let ts = takeWhile (not . visible) $ telToList tel+  keep <- dropWhileEndM (not <.> isSizeLt . snd . unDom) ts   -- Insert implicit patterns upto (including) the last SizeLt type.-  return [ implicitP ai | Dom ai _ <- keep ]+  return $ map (implicitP . domInfo) keep  -- | Insert implicit patterns in a list of patterns. --   Even if 'DontExpandLast', trailing SIZELT patterns are inserted.@@ -68,36 +68,41 @@ insertImplicitPatternsT exh            ps a = do   TelV tel b <- telViewUpTo' (-1) (not . visible) a   reportSDoc "tc.lhs.imp" 20 $-    vcat [ text "insertImplicitPatternsT"-         , nest 2 $ text "ps  = " <+> do+    vcat [ "insertImplicitPatternsT"+         , nest 2 $ "ps  = " <+> do              brackets $ fsep $ punctuate comma $ map prettyA ps-         , nest 2 $ text "tel = " <+> prettyTCM tel-         , nest 2 $ text "b   = " <+> addContext tel (prettyTCM b)+         , nest 2 $ "tel = " <+> prettyTCM tel+         , nest 2 $ "b   = " <+> addContext tel (prettyTCM b)          ]+  reportSDoc "tc.lhs.imp" 70 $+    vcat [ "insertImplicitPatternsT"+         , nest 2 $ "ps  = " <+> (text . show) ps+         , nest 2 $ "tel = " <+> (text . show) tel+         , nest 2 $ "b   = " <+> (text . show) b+         ]   case ps of     [] -> insImp dummy tel-    p : ps -> do+    p : _ -> do       -- Andreas, 2015-05-11.       -- If p is a projection pattern, make it visible for the purpose of       -- calling insImp / insertImplicit, to get correct behavior.-      let p' = applyWhen (isJust $ A.maybePostfixProjP p) (setHiding NotHidden) p+      let p' = applyWhen (isJust $ A.isProjP p) (setHiding NotHidden) p       hs <- insImp p' tel-      case hs of-        [] -> do-          a <- reduce a-          case unEl a of-            Pi arg b -> do-              (p :) <$> insertImplicitPatternsT exh ps (absBody b)-            _ -> return (p : ps)-        hs -> insertImplicitPatternsT exh (hs ++ p : ps) (telePi tel b)+      -- Continue with implicit patterns inserted before @p@.+      -- The list @hs ++ ps@ cannot be empty.+      let ps0@(~(p1 : ps1)) = hs ++ ps+      reduce a >>= piOrPath >>= \case+        -- If @a@ is a function (or path) type, continue inserting after @p1@.+        Left (_, b) -> (p1 :) <$> insertImplicitPatternsT exh ps1 (absBody b)+        -- Otherwise, we are done.+        Right{}     -> return ps0   where     dummy = defaultNamedArg (A.VarP __IMPOSSIBLE__)      insImp p EmptyTel = return []-    insImp p tel = case insertImplicit p $ map (argFromDom . fmap fst) $ telToList tel of+    insImp p tel = case insertImplicit p $ telToList tel of       BadImplicits   -> typeError WrongHidingInLHS       NoSuchName x   -> typeError WrongHidingInLHS       ImpInsert n    -> return $ map implicitArg n-      NoInsertNeeded -> return []      implicitArg h = implicitP $ setHiding h $ defaultArgInfo
src/full/Agda/TypeChecking/Rules/LHS/Problem.hs view
@@ -216,6 +216,7 @@     --   Can be 'Irrelevant' to indicate that we came by     --   an irrelevant projection and, hence, the rhs must     --   be type-checked in irrelevant mode.+  , _lhsPartialSplit :: ![Maybe Int] -- ^ have we splitted with a PartialFocus?   }  lhsTel :: Lens' Telescope (LHSState a)@@ -230,6 +231,9 @@ lhsTarget :: Lens' (Arg Type) (LHSState a) lhsTarget f p = f (_lhsTarget p) <&> \x -> p {_lhsTarget = x} +lhsPartialSplit :: Lens' [Maybe Int] (LHSState a)+lhsPartialSplit f p = f (_lhsPartialSplit p) <&> \x -> p {_lhsPartialSplit = x}+ instance Subst Term (Problem a) where   applySubst rho (Problem eqs rps cont) = Problem (applySubst rho eqs) rps cont @@ -244,31 +248,31 @@  instance PrettyTCM ProblemEq where   prettyTCM (ProblemEq p v a) = sep-    [ prettyA p <+> text "="-    , nest 2 $ prettyTCM v <+> text ":"+    [ prettyA p <+> "="+    , nest 2 $ prettyTCM v <+> ":"     , nest 2 $ prettyTCM a     ]  instance PrettyTCM AsBinding where   prettyTCM (AsB x v a) =-    sep [ prettyTCM x P.<> text "@" P.<> parens (prettyTCM v)-        , nest 2 $ text ":" <+> prettyTCM a+    sep [ prettyTCM x P.<> "@" P.<> parens (prettyTCM v)+        , nest 2 $ ":" <+> prettyTCM a         ]  instance PrettyTCM DotPattern where   prettyTCM (Dot e v a) = sep-    [ prettyA e <+> text "="-    , nest 2 $ prettyTCM v <+> text ":"+    [ prettyA e <+> "="+    , nest 2 $ prettyTCM v <+> ":"     , nest 2 $ prettyTCM a     ]  instance PrettyTCM AbsurdPattern where-  prettyTCM (Absurd r a) = text "() :" <+> prettyTCM a+  prettyTCM (Absurd r a) = "() :" <+> prettyTCM a  instance PP.Pretty AsBinding where   pretty (AsB x v a) =-    PP.pretty x PP.<+> PP.text "=" PP.<+>-      PP.hang (PP.pretty v PP.<+> PP.text ":") 2 (PP.pretty a)+    PP.pretty x PP.<+> "=" PP.<+>+      PP.hang (PP.pretty v PP.<+> ":") 2 (PP.pretty a)  instance InstantiateFull AsBinding where   instantiateFull' (AsB x v a) = AsB x <$> instantiateFull' v <*> instantiateFull' a
src/full/Agda/TypeChecking/Rules/LHS/ProblemRest.hs view
@@ -1,7 +1,12 @@+{-# LANGUAGE BangPatterns  #-} {-# LANGUAGE CPP           #-}  module Agda.TypeChecking.Rules.LHS.ProblemRest where +#if __GLASGOW_HASKELL__ <= 708+import Data.Functor ( (<$), (<$>) )+#endif+ import Control.Arrow (first, second) import Control.Monad @@ -22,7 +27,7 @@ import Agda.TypeChecking.Rules.LHS.Problem import Agda.TypeChecking.Rules.LHS.Implicit -import Agda.Utils.Functor (($>))+import Agda.Utils.Functor import Agda.Utils.List import Agda.Utils.Size import Agda.Utils.Permutation@@ -41,17 +46,19 @@   where     telList = telToList tel     telRemaining = drop (length ps) telList -- telescope entries beyond patterns-    ren (Arg ai (Named nm p)) dom@(Dom info (y, a)) =+    ren (Arg ai (Named nm p)) dom@Dom{ unDom = (y, a) } =       case p of         -- Andreas, 2017-10-12, issue #2803, also preserve user-written hidden names.         -- However, not if the argument is named, because then the name in the telescope         -- is significant for implicit insertion.-        A.VarP (A.BindName x) | not (isNoName x)-                 , visible info || (getOrigin ai == UserWritten && nm == Nothing) ->-          Dom info (nameToArgName x, a)+        A.VarP (A.BindName x)+          | not (isNoName x)+          , visible dom || (getOrigin ai == UserWritten && nm == Nothing) ->+          dom{ unDom = (nameToArgName x, a) }+        A.AbsurdP{} | visible dom -> dom{ unDom = (stringToArgName "()", a) }         A.PatternSynP{} -> __IMPOSSIBLE__  -- ensure there are no syns left         -- Andreas, 2016-05-10, issue 1848: if context variable has no name, call it "x"-        _ | visible info && isNoName y -> Dom info (stringToArgName "x", a)+        _ | visible dom && isNoName y -> dom{ unDom = (stringToArgName "x", a) }           | otherwise                  -> dom  useOriginFrom :: (LensOrigin a, LensOrigin b) => [a] -> [b] -> [a]@@ -93,44 +100,44 @@   let problem = Problem eqs ps ret       qs0     = teleNamedArgs delta -  updateProblemRest $ LHSState delta qs0 problem (defaultArg a)+  updateProblemRest $ LHSState delta qs0 problem (defaultArg a) []  -- | Try to move patterns from the problem rest into the problem. --   Possible if type of problem rest has been updated to a function type. updateProblemRest :: LHSState a -> TCM (LHSState a)-updateProblemRest st@(LHSState tel0 qs0 p@(Problem oldEqs ps ret) a) = do+updateProblemRest st@(LHSState tel0 qs0 p@(Problem oldEqs ps ret) a psplit) = do   ps <- addContext tel0 $ insertImplicitPatternsT ExpandLast ps $ unArg a   reportSDoc "tc.lhs.imp" 20 $-    text "insertImplicitPatternsT returned" <+> fsep (map prettyA ps)+    "insertImplicitPatternsT returned" <+> fsep (map prettyA ps)   -- (Issue 734: Do only the necessary telView to preserve clause types as much as possible.)-  let m = length $ takeWhile (isNothing . A.maybePostfixProjP) ps-  TelV gamma b <- telViewUpTo m $ unArg a+  let m = length $ takeWhile (isNothing . A.isProjP) ps+  (TelV gamma b, boundary) <- telViewUpToPathBoundaryP m $ unArg a   forM_ (zip ps (telToList gamma)) $ \(p, a) ->     unless (sameHiding p a) $ typeError WrongHidingInLHS   let tel1      = useNamesFromPattern ps gamma       n         = size tel1       (ps1,ps2) = splitAt n ps       tel       = telFromList $ telToList tel0 ++ telToList tel1-      qs1       = teleNamedArgs tel1+      qs1       = telePatterns tel1 boundary       newEqs    = zipWith3 ProblemEq                     (map namedArg ps1)                     (map (patternToTerm . namedArg) qs1)                     (flattenTel tel1 `useOriginFrom` ps1)       tau       = raiseS n   reportSDoc "tc.lhs.problem" 10 $ addContext tel0 $ vcat-    [ text "checking lhs -- updated split problem:"+    [ "checking lhs -- updated split problem:"     , nest 2 $ vcat-      [ text "ps    =" <+> fsep (map prettyA ps)-      , text "a     =" <+> prettyTCM a-      , text "tel1  =" <+> prettyTCM tel1-      , text "ps1   =" <+> fsep (map prettyA ps1)-      , text "ps2   =" <+> fsep (map prettyA ps2)-      , text "b     =" <+> addContext tel1 (prettyTCM b)+      [ "ps    =" <+> fsep (map prettyA ps)+      , "a     =" <+> prettyTCM a+      , "tel1  =" <+> prettyTCM tel1+      , "ps1   =" <+> fsep (map prettyA ps1)+      , "ps2   =" <+> fsep (map prettyA ps2)+      , "b     =" <+> addContext tel1 (prettyTCM b)       ]     ]   reportSDoc "tc.lhs.problem" 60 $ addContext tel0 $ vcat     [ nest 2 $ vcat-      [ text "qs1    =" <+> fsep (map pretty qs1)+      [ "qs1    =" <+> fsep (map pretty qs1)       ]     ]   return $ LHSState@@ -142,4 +149,5 @@                    , _problemCont     = ret                    }     , _lhsTarget  = a $> b+    , _lhsPartialSplit = psplit     }
src/full/Agda/TypeChecking/Rules/LHS/Unify.hs view
@@ -148,23 +148,27 @@ import Agda.TypeChecking.Substitute import Agda.TypeChecking.Telescope import Agda.TypeChecking.Free+import Agda.TypeChecking.Free.Reduce import Agda.TypeChecking.Records import Agda.TypeChecking.MetaVars (assignV, newArgsMetaCtx) import Agda.TypeChecking.EtaContract-import Agda.Interaction.Options (optInjectiveTypeConstructors, optWithoutK)+import Agda.Interaction.Options (optInjectiveTypeConstructors)  import Agda.TypeChecking.Rules.LHS.Problem -- import Agda.TypeChecking.SyntacticEquality  import Agda.Utils.Except ( MonadError(catchError, throwError) ) import Agda.Utils.Either+import Agda.Utils.Function import Agda.Utils.Functor+import Agda.Utils.Lens import Agda.Utils.List import Agda.Utils.ListT import Agda.Utils.Maybe import Agda.Utils.Monad import Agda.Utils.Null import Agda.Utils.Permutation+import Agda.Utils.Singleton import Agda.Utils.Size  #include "undefined.h"@@ -204,7 +208,7 @@ unifyIndices tel flex a [] [] = return $ Unifies (tel, idS, []) unifyIndices tel flex a us vs = liftTCM $ Bench.billTo [Bench.Typing, Bench.CheckLHS, Bench.UnifyIndices] $ do     reportSDoc "tc.lhs.unify" 10 $-      sep [ text "unifyIndices"+      sep [ "unifyIndices"           , nest 2 $ prettyTCM tel           , nest 2 $ addContext tel $ text $ show $ map flexVar flex           , nest 2 $ addContext tel $ parens (prettyTCM a)@@ -212,8 +216,8 @@           , nest 2 $ addContext tel $ prettyList $ map prettyTCM vs           ]     initialState    <- initUnifyState tel flex a us vs-    reportSDoc "tc.lhs.unify" 20 $ text "initial unifyState:" <+> prettyTCM initialState-    reportSDoc "tc.lhs.unify" 70 $ text "initial unifyState:" <+> text (show initialState)+    reportSDoc "tc.lhs.unify" 20 $ "initial unifyState:" <+> prettyTCM initialState+    reportSDoc "tc.lhs.unify" 70 $ "initial unifyState:" <+> text (show initialState)     (result,output) <- runUnifyM $ unify initialState rightToLeftStrategy     let ps = applySubst (unifyProof output) $ teleNamedArgs (eqTel initialState)     return $ fmap (\s -> (varTel s , unifySubst output , ps)) result@@ -252,6 +256,21 @@   , eqRHS    :: [Arg Term]   } deriving (Show) +lensVarTel   :: Lens' Telescope UnifyState+lensVarTel   f s = f (varTel s) <&> \ tel -> s { varTel = tel }++lensFlexVars :: Lens' FlexibleVars UnifyState+lensFlexVars f s = f (flexVars s) <&> \ flex -> s { flexVars = flex }++lensEqTel    :: Lens' Telescope UnifyState+lensEqTel    f s = f (eqTel s) <&> \ x -> s { eqTel = x }++lensEqLHS    :: Lens' Args UnifyState+lensEqLHS    f s = f (eqLHS s) <&> \ x -> s { eqLHS = x }++lensEqRHS    :: Lens' Args UnifyState+lensEqRHS    f s = f (eqRHS s) <&> \ x -> s { eqRHS = x }+ instance Reduce UnifyState where   reduce' (UState var flex eq lhs rhs) =     UState <$> reduce' var@@ -260,15 +279,8 @@            <*> reduce' lhs            <*> reduce' rhs -reduceVarTel :: UnifyState -> TCM UnifyState-reduceVarTel s@UState{ varTel = tel } = do-  tel <- reduce tel-  return $ s { varTel = tel }- reduceEqTel :: UnifyState -> TCM UnifyState-reduceEqTel s@UState{ eqTel = tel } = do-  tel <- reduce tel-  return $ s { eqTel = tel }+reduceEqTel = lensEqTel reduce  instance Normalise UnifyState where   normalise' (UState var flex eq lhs rhs) =@@ -278,27 +290,17 @@            <*> normalise' lhs            <*> normalise' rhs -normaliseVarTel :: UnifyState -> TCM UnifyState-normaliseVarTel s@UState{ varTel = tel } = do-  tel <- normalise tel-  return $ s { varTel = tel }--normaliseEqTel :: UnifyState -> TCM UnifyState-normaliseEqTel s@UState{ eqTel = tel } = do-  tel <- normalise tel-  return $ s { eqTel = tel }- instance PrettyTCM UnifyState where-  prettyTCM state = text "UnifyState" $$ nest 2 (vcat $-    [ text "variable tel:  " <+> prettyTCM gamma-    , text "flexible vars: " <+> prettyTCM (map flexVar $ flexVars state)-    , text "equation tel:  " <+> addContext gamma (prettyTCM delta)-    , text "equations:     " <+> addContext gamma (prettyList_ (zipWith prettyEquality (eqLHS state) (eqRHS state)))+  prettyTCM state = "UnifyState" $$ nest 2 (vcat $+    [ "variable tel:  " <+> prettyTCM gamma+    , "flexible vars: " <+> prettyTCM (map flexVar $ flexVars state)+    , "equation tel:  " <+> addContext gamma (prettyTCM delta)+    , "equations:     " <+> addContext gamma (prettyList_ (zipWith prettyEquality (eqLHS state) (eqRHS state)))     ])     where       gamma = varTel state       delta = eqTel state-      prettyEquality x y = prettyTCM x <+> text "=?=" <+> prettyTCM y+      prettyEquality x y = prettyTCM x <+> "=?=" <+> prettyTCM y  initUnifyState :: Telescope -> FlexibleVars -> Type -> Args -> Args -> TCM UnifyState initUnifyState tel flex a lhs rhs = do@@ -306,7 +308,9 @@   unless (n == size rhs) __IMPOSSIBLE__   TelV eqTel _ <- telView a   unless (n == size eqTel) __IMPOSSIBLE__-  reduce $ UState tel flex eqTel lhs rhs+  return $ UState tel flex eqTel lhs rhs+  -- Andreas, 2019-02-23, issue #3578: do not eagerly reduce+  -- reduce $ UState tel flex eqTel lhs rhs  isUnifyStateSolved :: UnifyState -> Bool isUnifyStateSolved = null . eqTel@@ -316,10 +320,10 @@  -- | Get the type of the i'th variable in the given state getVarType :: Int -> UnifyState -> Dom Type-getVarType i s = if i < 0 then __IMPOSSIBLE__ else (flattenTel $ varTel s) !! i+getVarType i s = indexWithDefault __IMPOSSIBLE__ (flattenTel $ varTel s) i  getVarTypeUnraised :: Int -> UnifyState -> Dom Type-getVarTypeUnraised i s = if i < 0 then __IMPOSSIBLE__ else snd <$> (telToList $ varTel s) !! i+getVarTypeUnraised i s = snd <$> indexWithDefault __IMPOSSIBLE__ (telToList $ varTel s) i  eqCount :: UnifyState -> Int eqCount = size . eqTel@@ -329,20 +333,20 @@ --   lives in the varTel++eqTel telescope getEquality :: Int -> UnifyState -> Equality getEquality k UState { eqTel = eqs, eqLHS = lhs, eqRHS = rhs } =-  if k < 0 then __IMPOSSIBLE__ else-    Equal (flattenTel eqs !! k) (unArg $ lhs !! k) (unArg $ rhs !! k)+    Equal (indexWithDefault __IMPOSSIBLE__ (flattenTel eqs) k)+          (unArg $ indexWithDefault __IMPOSSIBLE__ lhs k)+          (unArg $ indexWithDefault __IMPOSSIBLE__ rhs k)  -- | As getEquality, but with the unraised type getEqualityUnraised :: Int -> UnifyState -> Equality getEqualityUnraised k UState { eqTel = eqs, eqLHS = lhs, eqRHS = rhs } =-  if k < 0 then __IMPOSSIBLE__ else-    Equal (snd <$> (telToList eqs) !! k)-          (unArg $ lhs !! k)-          (unArg $ rhs !! k)+    Equal (snd <$> indexWithDefault __IMPOSSIBLE__ (telToList eqs) k)+          (unArg $ indexWithDefault __IMPOSSIBLE__ lhs k)+          (unArg $ indexWithDefault __IMPOSSIBLE__ rhs k)  getEqInfo :: Int -> UnifyState -> ArgInfo getEqInfo k UState { eqTel = eqs } =-  if k < 0 then __IMPOSSIBLE__ else domInfo $ telToList eqs !! k+  domInfo $ indexWithDefault __IMPOSSIBLE__ (telToList eqs) k  -- | Add a list of equations to the front of the equation telescope addEqs :: Telescope -> [Arg Term] -> [Arg Term] -> UnifyState -> UnifyState@@ -447,6 +451,7 @@     }   | Conflict     { conflictAt         :: Int+    , conflictType       :: Type     , conflictDatatype   :: QName     , conflictParameters :: Args     , conflictLeft       :: Term@@ -454,6 +459,7 @@     }   | Cycle     { cycleAt            :: Int+    , cycleType          :: Type     , cycleDatatype      :: QName     , cycleParameters    :: Args     , cycleVar           :: Int@@ -492,69 +498,71 @@  instance PrettyTCM UnifyStep where   prettyTCM step = case step of-    Deletion k a u v -> text "Deletion" $$ nest 2 (vcat $-      [ text "position:   " <+> text (show k)-      , text "type:       " <+> prettyTCM a-      , text "lhs:        " <+> prettyTCM u-      , text "rhs:        " <+> prettyTCM v+    Deletion k a u v -> "Deletion" $$ nest 2 (vcat $+      [ "position:   " <+> text (show k)+      , "type:       " <+> prettyTCM a+      , "lhs:        " <+> prettyTCM u+      , "rhs:        " <+> prettyTCM v       ])-    Solution k a i u -> text "Solution" $$ nest 2 (vcat $-      [ text "position:   " <+> text (show k)-      , text "type:       " <+> prettyTCM a-      , text "variable:   " <+> text (show i)-      , text "term:       " <+> prettyTCM u+    Solution k a i u -> "Solution" $$ nest 2 (vcat $+      [ "position:   " <+> text (show k)+      , "type:       " <+> prettyTCM a+      , "variable:   " <+> text (show i)+      , "term:       " <+> prettyTCM u       ])-    Injectivity k a d pars ixs c -> text "Injectivity" $$ nest 2 (vcat $-      [ text "position:   " <+> text (show k)-      , text "type:       " <+> prettyTCM a-      , text "datatype:   " <+> prettyTCM d-      , text "parameters: " <+> prettyList_ (map prettyTCM pars)-      , text "indices:    " <+> prettyList_ (map prettyTCM ixs)-      , text "constructor:" <+> prettyTCM c+    Injectivity k a d pars ixs c -> "Injectivity" $$ nest 2 (vcat $+      [ "position:   " <+> text (show k)+      , "type:       " <+> prettyTCM a+      , "datatype:   " <+> prettyTCM d+      , "parameters: " <+> prettyList_ (map prettyTCM pars)+      , "indices:    " <+> prettyList_ (map prettyTCM ixs)+      , "constructor:" <+> prettyTCM c       ])-    Conflict k d pars u v -> text "Conflict" $$ nest 2 (vcat $-      [ text "position:   " <+> text (show k)-      , text "datatype:   " <+> prettyTCM d-      , text "parameters: " <+> prettyList_ (map prettyTCM pars)-      , text "lhs:        " <+> prettyTCM u-      , text "rhs:        " <+> prettyTCM v+    Conflict k a d pars u v -> "Conflict" $$ nest 2 (vcat $+      [ "position:   " <+> text (show k)+      , "type:       " <+> prettyTCM a+      , "datatype:   " <+> prettyTCM d+      , "parameters: " <+> prettyList_ (map prettyTCM pars)+      , "lhs:        " <+> prettyTCM u+      , "rhs:        " <+> prettyTCM v       ])-    Cycle k d pars i u -> text "Cycle" $$ nest 2 (vcat $-      [ text "position:   " <+> text (show k)-      , text "datatype:   " <+> prettyTCM d-      , text "parameters: " <+> prettyList_ (map prettyTCM pars)-      , text "variable:   " <+> text (show i)-      , text "term:       " <+> prettyTCM u+    Cycle k a d pars i u -> "Cycle" $$ nest 2 (vcat $+      [ "position:   " <+> text (show k)+      , "type:       " <+> prettyTCM a+      , "datatype:   " <+> prettyTCM d+      , "parameters: " <+> prettyList_ (map prettyTCM pars)+      , "variable:   " <+> text (show i)+      , "term:       " <+> prettyTCM u       ])-    EtaExpandVar fi r pars -> text "EtaExpandVar" $$ nest 2 (vcat $-      [ text "variable:   " <+> text (show fi)-      , text "record type:" <+> prettyTCM r-      , text "parameters: " <+> prettyTCM pars+    EtaExpandVar fi r pars -> "EtaExpandVar" $$ nest 2 (vcat $+      [ "variable:   " <+> text (show fi)+      , "record type:" <+> prettyTCM r+      , "parameters: " <+> prettyTCM pars       ])-    EtaExpandEquation k r pars -> text "EtaExpandEquation" $$ nest 2 (vcat $-      [ text "position:   " <+> text (show k)-      , text "record type:" <+> prettyTCM r-      , text "parameters: " <+> prettyTCM pars+    EtaExpandEquation k r pars -> "EtaExpandEquation" $$ nest 2 (vcat $+      [ "position:   " <+> text (show k)+      , "record type:" <+> prettyTCM r+      , "parameters: " <+> prettyTCM pars       ])-    LitConflict k a u v -> text "LitConflict" $$ nest 2 (vcat $-      [ text "position:   " <+> text (show k)-      , text "type:       " <+> prettyTCM a-      , text "lhs:        " <+> prettyTCM u-      , text "rhs:        " <+> prettyTCM v+    LitConflict k a u v -> "LitConflict" $$ nest 2 (vcat $+      [ "position:   " <+> text (show k)+      , "type:       " <+> prettyTCM a+      , "lhs:        " <+> prettyTCM u+      , "rhs:        " <+> prettyTCM v       ])-    StripSizeSuc k u v -> text "StripSizeSuc" $$ nest 2 (vcat $-      [ text "position:   " <+> text (show k)-      , text "lhs:        " <+> prettyTCM u-      , text "rhs:        " <+> prettyTCM v+    StripSizeSuc k u v -> "StripSizeSuc" $$ nest 2 (vcat $+      [ "position:   " <+> text (show k)+      , "lhs:        " <+> prettyTCM u+      , "rhs:        " <+> prettyTCM v       ])-    SkipIrrelevantEquation k -> text "SkipIrrelevantEquation" $$ nest 2 (vcat $-      [ text "position:   " <+> text (show k)+    SkipIrrelevantEquation k -> "SkipIrrelevantEquation" $$ nest 2 (vcat $+      [ "position:   " <+> text (show k)       ])-    TypeConInjectivity k d us vs -> text "TypeConInjectivity" $$ nest 2 (vcat $-      [ text "position:   " <+> text (show k)-      , text "datatype:   " <+> prettyTCM d-      , text "lhs:        " <+> prettyList_ (map prettyTCM us)-      , text "rhs:        " <+> prettyList_ (map prettyTCM vs)+    TypeConInjectivity k d us vs -> "TypeConInjectivity" $$ nest 2 (vcat $+      [ "position:   " <+> text (show k)+      , "datatype:   " <+> prettyTCM d+      , "lhs:        " <+> prettyList_ (map prettyTCM us)+      , "rhs:        " <+> prettyList_ (map prettyTCM vs)       ])  type UnifyStrategy = UnifyState -> ListT TCM UnifyStep@@ -583,7 +591,9 @@     , checkEqualityStrategy     ] --- | Returns true if the variables 0..k-1 don't occur in x+-- | @isHom n x@ returns x lowered by n if the variables 0..n-1 don't occur in x.+--+-- This is naturally sensitive to normalization. isHom :: (Free a, Subst Term a) => Int -> a -> Maybe a isHom n x = do   guard $ getAll $ runFree (All . (>= n)) IgnoreNot x@@ -597,10 +607,11 @@  basicUnifyStrategy :: Int -> UnifyStrategy basicUnifyStrategy k s = do-  Equal (Dom info a) u v <- liftTCM $ eqUnLevel (getEquality k s)+  Equal dom@Dom{unDom = a} u v <- liftTCM $ eqUnLevel (getEquality k s)+    -- Andreas, 2019-02-23: reduce equality for the sake of isHom?   ha <- fromMaybeMP $ isHom n a   (mi, mj) <- liftTCM $ addContext (varTel s) $ (,) <$> isEtaVar u ha <*> isEtaVar v ha-  liftTCM $ reportSDoc "tc.lhs.unify" 30 $ text "isEtaVar results: " <+> text (show [mi,mj])+  liftTCM $ reportSDoc "tc.lhs.unify" 30 $ "isEtaVar results: " <+> text (show [mi,mj])   case (mi, mj) of     (Just i, Just j)      | i == j -> mzero -- Taken care of by checkEqualityStrategy@@ -608,22 +619,22 @@      | Just fi <- findFlexible i flex      , Just fj <- findFlexible j flex -> do        let choice = chooseFlex fi fj-           firstTryLeft  = msum [ return (Solution k (Dom info ha) fi v)-                                , return (Solution k (Dom info ha) fj u)]-           firstTryRight = msum [ return (Solution k (Dom info ha) fj u)-                                , return (Solution k (Dom info ha) fi v)]-       liftTCM $ reportSDoc "tc.lhs.unify" 40 $ text "fi = " <+> text (show fi)-       liftTCM $ reportSDoc "tc.lhs.unify" 40 $ text "fj = " <+> text (show fj)-       liftTCM $ reportSDoc "tc.lhs.unify" 40 $ text "chooseFlex: " <+> text (show choice)+           firstTryLeft  = msum [ return (Solution k dom{unDom = ha} fi v)+                                , return (Solution k dom{unDom = ha} fj u)]+           firstTryRight = msum [ return (Solution k dom{unDom = ha} fj u)+                                , return (Solution k dom{unDom = ha} fi v)]+       liftTCM $ reportSDoc "tc.lhs.unify" 40 $ "fi = " <+> text (show fi)+       liftTCM $ reportSDoc "tc.lhs.unify" 40 $ "fj = " <+> text (show fj)+       liftTCM $ reportSDoc "tc.lhs.unify" 40 $ "chooseFlex: " <+> text (show choice)        case choice of          ChooseLeft   -> firstTryLeft          ChooseRight  -> firstTryRight          ExpandBoth   -> mzero -- This should be taken care of by etaExpandEquationStrategy          ChooseEither -> firstTryRight     (Just i, _)-     | Just fi <- findFlexible i flex -> return $ Solution k (Dom info ha) fi v+     | Just fi <- findFlexible i flex -> return $ Solution k dom{unDom = ha} fi v     (_, Just j)-     | Just fj <- findFlexible j flex -> return $ Solution k (Dom info ha) fj u+     | Just fj <- findFlexible j flex -> return $ Solution k dom{unDom = ha} fj u     _ -> mzero   where     flex = flexVars s@@ -631,35 +642,34 @@  dataStrategy :: Int -> UnifyStrategy dataStrategy k s = do-  Equal (Dom _ a) u v <- liftTCM $ eqConstructorForm =<< eqUnLevel (getEqualityUnraised k s)+  Equal Dom{unDom = a} u v <- liftTCM $ eqConstructorForm =<< eqUnLevel =<< reduce (getEqualityUnraised k s)   case unEl a of     Def d es | Type{} <- getSort a -> do       npars <- catMaybesMP $ liftTCM $ getNumberOfParameters d       let (pars,ixs) = splitAt npars $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es       hpars <- fromMaybeMP $ isHom k pars       liftTCM $ reportSDoc "tc.lhs.unify" 40 $ addContext (varTel s) $-        text "Found equation at datatype " <+> prettyTCM d-         <+> text " with (homogeneous) parameters " <+> prettyTCM hpars+        "Found equation at datatype " <+> prettyTCM d+         <+> " with (homogeneous) parameters " <+> prettyTCM hpars       case (u, v) of         (Con c _ _   , Con c' _ _  ) | c == c' -> return $ Injectivity k a d hpars ixs c-        (Con c _ _   , Con c' _ _  ) -> return $ Conflict k d hpars u v-        (Var i []  , v         ) -> ifOccursStronglyRigid i v $ return $ Cycle k d hpars i v-        (u         , Var j []  ) -> ifOccursStronglyRigid j u $ return $ Cycle k d hpars j u+        (Con c _ _   , Con c' _ _  ) -> return $ Conflict k a d hpars u v+        (Var i []  , v         ) -> ifOccursStronglyRigid i v $ return $ Cycle k a d hpars i v+        (u         , Var j []  ) -> ifOccursStronglyRigid j u $ return $ Cycle k a d hpars j u         _ -> mzero     _ -> mzero   where-    ifOccursStronglyRigid i u ret = case occurrence i u of-      StronglyRigid -> ret-      NoOccurrence  -> mzero-      _ -> do-        u <- liftTCM $ normalise u+    ifOccursStronglyRigid i u ret = do+        -- Call forceNotFree to reduce u as far as possible+        -- around any occurrences of i+        (_ , u) <- liftTCM $ forceNotFree (singleton i) u         case occurrence i u of           StronglyRigid -> ret           _ -> mzero  checkEqualityStrategy :: Int -> UnifyStrategy checkEqualityStrategy k s = do-  let Equal (Dom _ a) u v = getEquality k s+  let Equal Dom{unDom = a} u v = getEquality k s       n = eqCount s   ha <- fromMaybeMP $ isHom n a   return $ Deletion k ha u v@@ -667,7 +677,7 @@ literalStrategy :: Int -> UnifyStrategy literalStrategy k s = do   let n = eqCount s-  Equal (Dom _ a) u v <- liftTCM $ eqUnLevel $ getEquality k s+  Equal Dom{unDom = a} u v <- liftTCM $ eqUnLevel $ getEquality k s   ha <- fromMaybeMP $ isHom n a   case (u , v) of     (Lit l1 , Lit l2)@@ -677,7 +687,7 @@  etaExpandVarStrategy :: Int -> UnifyStrategy etaExpandVarStrategy k s = do-  Equal (Dom _ a) u v <- liftTCM $ eqUnLevel (getEquality k s)+  Equal Dom{unDom = a} u v <- liftTCM $ eqUnLevel <=< reduce $ getEquality k s   shouldEtaExpand u v a s `mplus` shouldEtaExpand v u a s   where     -- TODO: use IsEtaVar to check if the term is a variable@@ -685,21 +695,21 @@     shouldEtaExpand (Var i es) v a s = do       fi       <- fromMaybeMP $ findFlexible i (flexVars s)       liftTCM $ reportSDoc "tc.lhs.unify" 50 $-        text "Found flexible variable " <+> text (show i)+        "Found flexible variable " <+> text (show i)       -- Issue 2888: Do this if there are projections or if it's a singleton       -- record or if it's unified against a record constructor term. Basically       -- we need to avoid EtaExpandEquation if EtaExpandVar is possible, or the       -- forcing translation is unhappy.-      let Dom _ b = getVarTypeUnraised (varCount s - 1 - i) s+      b         <- reduce $ unDom $ getVarTypeUnraised (varCount s - 1 - i) s       (d, pars) <- catMaybesMP $ liftTCM $ isEtaRecordType b       ps        <- fromMaybeMP $ allProjElims es       sing      <- liftTCM $ (Right True ==) <$> isSingletonRecord d pars       con       <- liftTCM $ isRecCon v  -- is the other term a record constructor?       guard $ not (null ps) || sing || con       liftTCM $ reportSDoc "tc.lhs.unify" 50 $-        text "with projections " <+> prettyTCM (map snd ps)+        "with projections " <+> prettyTCM (map snd ps)       liftTCM $ reportSDoc "tc.lhs.unify" 50 $-        text "at record type " <+> prettyTCM d+        "at record type " <+> prettyTCM d       return $ EtaExpandVar fi d pars     shouldEtaExpand _ _ _ _ = mzero @@ -708,7 +718,8 @@  etaExpandEquationStrategy :: Int -> UnifyStrategy etaExpandEquationStrategy k s = do-  let Equal (Dom _ a) u v = getEqualityUnraised k s+  -- Andreas, 2019-02-23, re #3578, is the following reduce redundant?+  Equal Dom{unDom = a} u v <- reduce $ getEqualityUnraised k s   (d, pars) <- catMaybesMP $ liftTCM $ addContext tel $ isEtaRecordType a   sing <- liftTCM $ (Right True ==) <$> isSingletonRecord d pars   projLeft <- liftTCM $ shouldProject u@@ -729,13 +740,14 @@       Level _    -> __IMPOSSIBLE__       MetaV _ _  -> return False       DontCare _ -> return False+      Dummy s    -> __IMPOSSIBLE_VERBOSE__ s      tel = varTel s `abstract` telFromList (take k $ telToList $ eqTel s)  simplifySizesStrategy :: Int -> UnifyStrategy simplifySizesStrategy k s = do   isSizeName <- liftTCM isSizeNameTest-  let Equal (Dom _ a) u v = getEquality k s+  Equal Dom{unDom = a} u v <- reduce $ getEquality k s   case unEl a of     Def d _ -> do       guard $ isSizeName d@@ -752,7 +764,7 @@ injectiveTypeConStrategy k s = do   injTyCon <- liftTCM $ optInjectiveTypeConstructors <$> pragmaOptions   guard injTyCon-  eq <- liftTCM $ eqUnLevel $ getEquality k s+  eq <- liftTCM $ eqUnLevel <=< reduce $ getEquality k s   case eq of     Equal a u@(Def d es) v@(Def d' es') | d == d' -> do       -- d must be a data, record or axiom@@ -761,10 +773,12 @@                 Datatype{} -> True                 Record{}   -> True                 Axiom{}    -> True+                DataOrRecSig{} -> True                 AbstractDefn{} -> False -- True triggers issue #2250                 Function{}   -> False                 Primitive{}  -> False-                Constructor{}-> __IMPOSSIBLE__  -- Never a type!+                GeneralizableVar{} -> __IMPOSSIBLE__+                Constructor{} -> __IMPOSSIBLE__  -- Never a type!       let us = fromMaybe __IMPOSSIBLE__ $ allApplyElims es           vs = fromMaybe __IMPOSSIBLE__ $ allApplyElims es'       return $ TypeConInjectivity k d us vs@@ -772,7 +786,7 @@  injectivePragmaStrategy :: Int -> UnifyStrategy injectivePragmaStrategy k s = do-  eq <- liftTCM $ eqUnLevel $ getEquality k s+  eq <- liftTCM $ eqUnLevel <=< reduce $ getEquality k s   case eq of     Equal a u@(Def d es) v@(Def d' es') | d == d' -> do       -- d must have an injective pragma@@ -785,8 +799,8 @@  skipIrrelevantStrategy :: Int -> UnifyStrategy skipIrrelevantStrategy k s = do-  let i = getEqInfo k s-  guard $ isIrrelevant i+  let Equal a _ _ = getEquality k s  -- reduce not necessary+  guard =<< isIrrelevantOrPropM a    -- reduction takes place here   return $ SkipIrrelevantEquation k  @@ -836,75 +850,96 @@ unifyStep s Deletion{ deleteAt = k , deleteType = a , deleteLeft = u , deleteRight = v } = do     -- Check definitional equality of u and v     isReflexive <- liftTCM $ addContext (varTel s) $ do-      dontAssignMetas $ disableDestructiveUpdate $ noConstraints $-        equalTerm a u v+      dontAssignMetas $ noConstraints $ equalTerm a u v       return Nothing       `catchError` \err -> return $ Just err-    withoutK <- liftTCM $ optWithoutK <$> pragmaOptions+    withoutK <- liftTCM withoutKOption     case isReflexive of       Just err     -> return $ DontKnow []       _ | withoutK -> return $ DontKnow [UnifyReflexiveEq (varTel s) a u]       _            -> do         let (s', sigma) = solveEq k u s         tellUnifyProof sigma-        Unifies <$> liftTCM (reduceEqTel s')+        Unifies <$> liftTCM (lensEqTel reduce s')  unifyStep s Solution{ solutionAt   = k-                    , solutionType = Dom info a+                    , solutionType = dom@Dom{ unDom = a }                     , solutionVar  = fi@FlexibleVar{ flexVar = i }                     , solutionTerm = u } = do   let m = varCount s    -- Check that the type of the variable is equal to the type of the equation   -- (not just a subtype), otherwise we cannot instantiate (see Issue 2407).-  let Dom info' a' = getVarType (m-1-i) s+  let dom'@Dom{ unDom = a' } = getVarType (m-1-i) s   equalTypes <- liftTCM $ addContext (varTel s) $ do-    reportSDoc "tc.lhs.unify" 45 $ text "Equation type: " <+> prettyTCM a-    reportSDoc "tc.lhs.unify" 45 $ text "Variable type: " <+> prettyTCM a'-    dontAssignMetas $ disableDestructiveUpdate $ noConstraints $-      equalType a a'+    reportSDoc "tc.lhs.unify" 45 $ "Equation type: " <+> prettyTCM a+    reportSDoc "tc.lhs.unify" 45 $ "Variable type: " <+> prettyTCM a'+    dontAssignMetas $ noConstraints $ equalType a a'     return Nothing     `catchError` \err -> return $ Just err+   -- The conditions on the relevances are as follows (see #2640):   -- - If the type of the equation is relevant, then the solution must be   --   usable in a relevant position.   -- - If the type of the equation is (shape-)irrelevant, then the solution   --   must be usable in a μ-relevant position where μ is the relevance   --   of the variable being solved.-  let eqrel  = getRelevance info-      varrel = getRelevance info'-      rel    = if NonStrict `moreRelevant` eqrel then varrel else Relevant-  reportSDoc "tc.lhs.unify" 65 $ text $ "Equation relevance: " ++ show eqrel-  reportSDoc "tc.lhs.unify" 65 $ text $ "Variable relevance: " ++ show varrel-  reportSDoc "tc.lhs.unify" 65 $ text $ "Solution must be usable in a " ++ show rel ++ " position."-  usable <- liftTCM $ addContext (varTel s) $ usableRel rel u-  reportSDoc "tc.lhs.unify" 45 $ text "Relevance ok: " <+> prettyTCM usable+  --+  -- Jesper, Andreas, 2018-10-17: the quantity of the equation is morally+  -- always @Quantity0@, since the indices of the data type are runtime erased.+  -- This, we need not change the quantity of the solution.+  let eqrel  = getRelevance dom+      varmod = getModality dom'+      mod    = applyUnless (NonStrict `moreRelevant` eqrel) (setRelevance eqrel)+             $ varmod+  reportSDoc "tc.lhs.unify" 65 $ text $ "Equation modality: " ++ show (getModality dom)+  reportSDoc "tc.lhs.unify" 65 $ text $ "Variable modality: " ++ show varmod+  reportSDoc "tc.lhs.unify" 65 $ text $ "Solution must be usable in a " ++ show mod ++ " position."+  -- Andreas, 2018-10-18+  -- Currently, the modality check that would correspond to the+  -- relevance check has problems with meta-variables created in the type signature,+  -- and thus, in quantity 0, that get into terms using the unifier,+  -- and there are checked to be non-erased, i.e., have quantity ω.+  -- Thus, at the moment wo only check relevances, being aware+  -- that uses of the 0-quantity might create segfaults in the compiled program+  -- situations analogous to #2640 (issue with projecting forced constructor fields).+  --+  -- usable <- liftTCM $ addContext (varTel s) $ usableMod mod u  -- TODO+  usable <- liftTCM $ addContext (varTel s) $ usableRel (getRelevance mod) u+  reportSDoc "tc.lhs.unify" 45 $ "Modality ok: " <+> prettyTCM usable+  unless usable $ reportSLn "tc.lhs.unify" 65 $ "Rejected solution: " ++ show u+   case equalTypes of     Just err -> return $ DontKnow []     Nothing | usable -> caseMaybeM (trySolveVar (m-1-i) u s)+      -- Case: Nothing       (return $ DontKnow [UnifyRecursiveEq (varTel s) a i u])-      (\(s',sub) -> do+      -- Case: Just+      $ \ (s', sub) -> do         tellUnifySubst sub         let (s'', sigma) = solveEq k (applyPatSubst sub u) s'         tellUnifyProof sigma-        Unifies <$> liftTCM (reduce s''))+        return $ Unifies s''+        -- Andreas, 2019-02-23, issue #3578: do not eagerly reduce+        -- Unifies <$> liftTCM (reduce s'')     Nothing -> return $ DontKnow []   where     trySolveVar i u s = case solveVar i u s of       Just x  -> return $ Just x       Nothing -> do         u <- liftTCM $ normalise u-        s <- liftTCM $ normaliseVarTel s+        s <- liftTCM $ lensVarTel normalise s         return $ solveVar i u s  unifyStep s (Injectivity k a d pars ixs c) = do-  withoutK <- liftTCM $ optWithoutK <$> pragmaOptions+  ifM (liftTCM $ consOfHIT $ conName c) (return $ DontKnow []) $ do+  withoutK <- liftTCM withoutKOption   let n = eqCount s    -- Get constructor telescope and target indices   ctype <- (`piApply` pars) . defType <$> liftTCM (getConInfo c)   addContext (varTel s) $ reportSDoc "tc.lhs.unify" 40 $-    text "Constructor type: " <+> prettyTCM ctype+    "Constructor type: " <+> prettyTCM ctype   TelV ctel ctarget <- liftTCM $ telView ctype   let cixs = case unEl ctarget of                Def d' es | d == d' ->@@ -915,7 +950,7 @@   -- Get index telescope of the datatype   dtype    <- (`piApply` pars) . defType <$> liftTCM (getConstInfo d)   addContext (varTel s) $ reportSDoc "tc.lhs.unify" 40 $-    text "Datatype type: " <+> prettyTCM dtype+    "Datatype type: " <+> prettyTCM dtype    -- Split equation telescope into parts before and after current equation   let (eqListTel1, _ : eqListTel2) = splitAt k $ telToList $ eqTel s@@ -972,7 +1007,7 @@       DontKnow _ -> let n           = eqCount s-                      Equal (Dom _ a) u v = getEquality k s+                      Equal Dom{unDom = a} u v = getEquality k s                   in return $ DontKnow [UnifyIndicesNotVars                        (varTel s `abstract` eqTel s) a                        (raise n u) (raise n v) (raise (n-k) ixs)]@@ -1008,12 +1043,21 @@ unifyStep s Conflict   { conflictLeft  = u   , conflictRight = v-  } = return $ NoUnify $ UnifyConflict (varTel s) u v-+  } =+  case u of+    Con h _ _ -> do+      ifM (liftTCM $ consOfHIT $ conName h) (return $ DontKnow []) $ do+        return $ NoUnify $ UnifyConflict (varTel s) u v+    _ -> __IMPOSSIBLE__ unifyStep s Cycle   { cycleVar        = i   , cycleOccursIn   = u-  } = return $ NoUnify $ UnifyCycle (varTel s) i u+  } =+  case u of+    Con h _ _ -> do+      ifM (liftTCM $ consOfHIT $ conName h) (return $ DontKnow []) $ do+        return $ NoUnify $ UnifyCycle (varTel s) i u+    _ -> __IMPOSSIBLE__  unifyStep s EtaExpandVar{ expandVar = fi, expandVarRecordType = d , expandVarParameters = pars } = do   delta   <- liftTCM $ (`apply` pars) <$> getRecordFieldTypes d@@ -1036,7 +1080,7 @@      projFlexKind :: Int -> FlexibleVarKind     projFlexKind j = case flexKind fi of-      RecordFlex ks -> fromMaybe ImplicitFlex $ ks !!! j+      RecordFlex ks -> indexWithDefault ImplicitFlex ks j       ImplicitFlex  -> ImplicitFlex       DotFlex       -> DotFlex       OtherFlex     -> OtherFlex@@ -1045,7 +1089,7 @@     liftFlexible n j = if j == i then Nothing else Just (if j > i then j + (n-1) else j)      liftFlexibles :: Int -> FlexibleVars -> FlexibleVars-    liftFlexibles n fs = catMaybes $ map (traverse $ liftFlexible n) fs+    liftFlexibles n fs = mapMaybe (traverse $ liftFlexible n) fs  unifyStep s EtaExpandEquation{ expandAt = k, expandRecordType = d, expandParameters = pars } = do   delta <- liftTCM $ (`apply` pars) <$> getRecordFieldTypes d@@ -1054,7 +1098,7 @@   rhs   <- expandKth $ eqRHS s   let (tel, sigma) = expandTelescopeVar (eqTel s) k delta c   tellUnifyProof sigma-  Unifies <$> liftTCM (reduceEqTel $ s+  Unifies <$> liftTCM (lensEqTel reduce $ s     { eqTel    = tel     , eqLHS    = lhs     , eqRHS    = rhs@@ -1090,7 +1134,8 @@  unifyStep s (SkipIrrelevantEquation k) = do   let lhs = eqLHS s-      (s', sigma) = solveEq k (DontCare $ unArg $ lhs !! k) s+      (s', sigma) =  -- newline because of CPP+        solveEq k (DontCare $ unArg $ indexWithDefault __IMPOSSIBLE__ lhs k) s   tellUnifyProof sigma   return $ Unifies s' @@ -1102,7 +1147,7 @@       deq = Def d $ map Apply $ teleArgs dtel   -- TODO: tellUnifyProof ???   -- but d is not a constructor...-  Unifies <$> liftTCM (reduceEqTel $ s+  Unifies <$> liftTCM (lensEqTel reduce $ s     { eqTel = dtel `abstract` applyUnder k (eqTel s) (raise k deq)     , eqLHS = us ++ dropAt k (eqLHS s)     , eqRHS = vs ++ dropAt k (eqRHS s)@@ -1126,12 +1171,12 @@                  -> UnifyM (UnificationResult' UnifyState)     tryUnifyStep step fallback = do       addContext (varTel s) $-        reportSDoc "tc.lhs.unify" 20 $ text "trying unifyStep" <+> prettyTCM step+        reportSDoc "tc.lhs.unify" 20 $ "trying unifyStep" <+> prettyTCM step       x <- unifyStep s step       case x of         Unifies s'   -> do-          reportSDoc "tc.lhs.unify" 20 $ text "unifyStep successful."-          reportSDoc "tc.lhs.unify" 20 $ text "new unifyState:" <+> prettyTCM s'+          reportSDoc "tc.lhs.unify" 20 $ "unifyStep successful."+          reportSDoc "tc.lhs.unify" 20 $ "new unifyState:" <+> prettyTCM s'           writeUnifyLog $ UnificationStep s step           return x         NoUnify{}     -> return x
src/full/Agda/TypeChecking/Rules/Record.hs view
@@ -17,8 +17,13 @@ import Agda.Syntax.Internal.Pattern import Agda.Syntax.Position import qualified Agda.Syntax.Info as Info+import Agda.Syntax.Scope.Monad (freshAbstractQName)+import Agda.Syntax.Fixity  import Agda.TypeChecking.Monad+import Agda.TypeChecking.Monad.Builtin+import Agda.TypeChecking.Names+import Agda.TypeChecking.Primitive import Agda.TypeChecking.Substitute import Agda.TypeChecking.Telescope import Agda.TypeChecking.Reduce@@ -29,10 +34,12 @@ import Agda.TypeChecking.CompiledClause (hasProjectionPatterns) import Agda.TypeChecking.CompiledClause.Compile -import Agda.TypeChecking.Rules.Data ( bindParameters, fitsIn, forceSort)+import Agda.TypeChecking.Rules.Data ( getGeneralizedParameters, bindGeneralizedParameters, bindParameters, fitsIn, forceSort,+                                      defineCompData, defineTranspForFields, defineHCompForFields ) import Agda.TypeChecking.Rules.Term ( isType_ ) import {-# SOURCE #-} Agda.TypeChecking.Rules.Decl (checkDecl) +import Agda.Utils.Maybe import Agda.Utils.Monad import Agda.Utils.Null import Agda.Utils.Permutation@@ -62,34 +69,46 @@ checkRecDef   :: Info.DefInfo              -- ^ Position and other info.   -> QName                     -- ^ Record type identifier.+  -> UniverseCheck             -- ^ Check universes?   -> Maybe (Ranged Induction)  -- ^ Optional: (co)inductive declaration.   -> Maybe HasEta              -- ^ Optional: user specified eta/no-eta   -> Maybe QName               -- ^ Optional: constructor name.-  -> [A.LamBinding]            -- ^ Record parameters.+  -> A.DataDefParams           -- ^ Record parameters.   -> A.Expr                    -- ^ Approximate type of constructor (@fields@ -> Set).                                --   Does not include record parameters.   -> [A.Field]                 -- ^ Field signatures.   -> TCM ()-checkRecDef i name ind eta con ps contel fields =-  traceCall (CheckRecDef (getRange name) (qnameName name) ps fields) $ do+checkRecDef i name uc ind eta con (A.DataDefParams gpars ps) contel fields =+  traceCall (CheckRecDef (getRange name) name ps fields) $ do     reportSDoc "tc.rec" 10 $ vcat-      [ text "checking record def" <+> prettyTCM name-      , nest 2 $ text "ps ="     <+> prettyList (map prettyAs ps)-      , nest 2 $ text "contel =" <+> prettyA contel-      , nest 2 $ text "fields =" <+> prettyA (map Constr fields)+      [ "checking record def" <+> prettyTCM name+      , nest 2 $ "ps ="     <+> prettyList (map prettyA ps)+      , nest 2 $ "contel =" <+> prettyA contel+      , nest 2 $ "fields =" <+> prettyA (map Constr fields)       ]     -- get type of record-    t <- instantiateFull =<< typeOfConst name-    bindParameters ps t $ \tel t0 -> do+    def <- instantiateDef =<< getConstInfo name+    t   <- instantiateFull $ defType def+    let npars =+          case theDef def of+            DataOrRecSig n -> n+            _              -> __IMPOSSIBLE__ +    parNames <- getGeneralizedParameters gpars name++    bindGeneralizedParameters parNames t $ \ gtel t0 ->+     bindParameters (npars - length parNames) ps t0 $ \ ptel t0 -> do++      let tel = abstract gtel ptel+       -- Generate type of constructor from field telescope @contel@,       -- which is the approximate constructor type (target missing).        -- Check and evaluate field types.-      reportSDoc "tc.rec" 15 $ text "checking fields"+      reportSDoc "tc.rec" 15 $ "checking fields"       contype <- workOnTypes $ instantiateFull =<< isType_ contel       reportSDoc "tc.rec" 20 $ vcat-        [ text "contype = " <+> prettyTCM contype ]+        [ "contype = " <+> prettyTCM contype ]        -- compute the field telescope (does not include record parameters)       let TelV ftel _ = telView' contype@@ -101,9 +120,15 @@       unless (null idxTel) $ typeError $ ShouldBeASort t0       s <- forceSort s +      -- needed for impredicative Prop (not implemented yet)+      -- ftel <- return $+      --   if s == Prop+      --   then telFromList $ map (setRelevance Irrelevant) $ telToList ftel+      --   else ftel+       reportSDoc "tc.rec" 20 $ do         gamma <- getContextTelescope  -- the record params (incl. module params)-        text "gamma = " <+> inTopContext (prettyTCM gamma)+        "gamma = " <+> inTopContext (prettyTCM gamma)        -- record type (name applied to parameters)       rect <- El s . Def name . map Apply <$> getContextArgs@@ -123,7 +148,7 @@           return (False, c, i)        -- Add record type to signature.-      reportSDoc "tc.rec" 15 $ text "adding record type to signature"+      reportSDoc "tc.rec" 15 $ "adding record type to signature"        etaenabled <- etaEnabled @@ -143,7 +168,7 @@           -- We should turn it off until it is proven to be safe.           haveEta      = maybe (Inferred NoEta) Specified eta           -- haveEta      = maybe (Inferred $ conInduction == Inductive && etaenabled) Specified eta-          con = ConHead conName conInduction $ map unArg fs+          con = ConHead conName conInduction fs            -- A record is irrelevant if all of its fields are.           -- In this case, the associated module parameter will be irrelevant.@@ -158,11 +183,11 @@       -- Disallow coinductive records with eta-equality       when (conInduction == CoInductive && theEtaEquality haveEta == YesEta) $ do         typeError . GenericDocError =<< do-          sep [ text "Agda doesn't like coinductive records with eta-equality."-              , text "If you must, use pragma"-              , text "{-# ETA" <+> prettyTCM name <+> text "#-}"+          sep [ "Agda doesn't like coinductive records with eta-equality."+              , "If you must, use pragma"+              , "{-# ETA" <+> prettyTCM name <+> "#-}"               ]-      reportSDoc "tc.rec" 30 $ text "record constructor is " <+> prettyTCM con+      reportSDoc "tc.rec" 30 $ "record constructor is " <+> prettyTCM con        -- Add the record definition. @@ -190,6 +215,7 @@                   -- in case the record turns out to be recursive.               -- Determined by positivity checker:               , recMutual         = Nothing+              , recComp           = emptyCompKit -- filled in later               }          -- Add record constructor to signature@@ -202,6 +228,7 @@               , conData   = name               , conAbstr  = Info.defAbstract conInfo               , conInd    = conInduction+              , conComp   = (emptyCompKit, Nothing) -- filled in later               , conForced = []               , conErased = []               }@@ -211,7 +238,7 @@         addNamedInstance conName name        -- Check that the fields fit inside the sort-      _ <- fitsIn [] contype s+      _ <- fitsIn uc [] contype s        {- Andreas, 2011-04-27 WRONG because field types are checked again          and then non-stricts should not yet be irrelevant@@ -222,19 +249,19 @@  {- Andreas, 2013-09-13 DEBUGGING the debug printout       reportSDoc "tc.rec" 80 $ sep-        [ text "current module record telescope"+        [ "current module record telescope"         , nest 2 $ (prettyTCM =<< getContextTelescope)         ]       reportSDoc "tc.rec" 80 $ sep-        [ text "current module record telescope"+        [ "current module record telescope"         , nest 2 $ (text . show =<< getContextTelescope)         ]       reportSDoc "tc.rec" 80 $ sep-        [ text "current module record telescope"+        [ "current module record telescope"         , nest 2 $ (inTopContext . prettyTCM =<< getContextTelescope)         ]       reportSDoc "tc.rec" 80 $ sep-        [ text "current module record telescope"+        [ "current module record telescope"         , nest 2 $ do            tel <- getContextTelescope            text (show tel) $+$ do@@ -243,13 +270,13 @@                telA <- reify tel                text (show telA) $+$ do                ctx <- getContextTelescope-               text "should be empty:" <+> prettyTCM ctx+               "should be empty:" <+> prettyTCM ctx         ] -}        let info = setRelevance recordRelevance defaultArgInfo-          addRecordVar = addContext ("", Dom info rect)-          -- the record variable has the empty name by intention, see issue 208+          addRecordVar =+            addRecordNameContext (setArgInfo info $ defaultDom rect)        let m = qnameToMName name  -- Name of record module. @@ -262,14 +289,14 @@         -- Add the record section.          reportSDoc "tc.rec.def" 10 $ sep-          [ text "record section:"+          [ "record section:"           , nest 2 $ sep             [ prettyTCM m <+> (inTopContext . prettyTCM =<< getContextTelescope)             , fsep $ punctuate comma $ map (return . P.pretty . getName) fields             ]           ]         reportSDoc "tc.rec.def" 15 $ nest 2 $ vcat-          [ text "field tel =" <+> escapeContext 1 (prettyTCM ftel)+          [ "field tel =" <+> escapeContext 1 (prettyTCM ftel)           ]         addSection m @@ -290,8 +317,173 @@           setModuleCheckpoint m           checkRecordProjections m name hasNamedCon con tel' (raise 1 ftel) fields ++      -- we define composition here so that the projections are already in the signature.+      escapeContext npars $ do+        addCompositionForRecord name con tel fs ftel rect+       return () ++addCompositionForRecord+  :: QName      -- datatype name+               -> ConHead+               -> Telescope   -- Γ parameters+               -> [Arg QName] -- projection names+               -> Telescope   -- Γ ⊢ Φ field types+               -> Type        -- Γ ⊢ T target type+               -> TCM ()+addCompositionForRecord name con tel fs ftel rect = do+  compWays <- do+    cxt <- getContextTelescope+    escapeContext (size cxt) $+      if null fs then Left . (,Just []) <$> defineCompData name con (abstract cxt tel) [] ftel rect []+                 else Right <$>+                      ifM (return (any (== Irrelevant) $ map getRelevance fs) `and2M` do not . optIrrelevantProjections <$> pragmaOptions)+                          (return emptyCompKit)+                          (defineCompKitR name (abstract cxt tel) ftel fs rect)+  case compWays of+    Right kit -> do+      modifySignature $ updateDefinition name $ updateTheDef $ \ d ->+        case d of+          r@Record{} -> r { recComp = kit }+          _          -> __IMPOSSIBLE__+    Left y -> do+      modifySignature $ updateDefinition (conName con) $ updateTheDef $ \ d ->+        case d of+          r@Constructor{} -> r { conComp = y }+          _          -> __IMPOSSIBLE__++defineCompKitR ::+    QName          -- ^ some name, e.g. record name+  -> Telescope   -- ^ param types Δ+  -> Telescope   -- ^ fields' types Δ ⊢ Φ+  -> [Arg QName] -- ^ fields' names+  -> Type        -- ^ record type Δ ⊢ T+  -> TCM CompKit+defineCompKitR name params fsT fns rect = do+  required <- mapM getTerm'+        [ builtinInterval+        , builtinIZero+        , builtinIOne+        , builtinIMin+        , builtinIMax+        , builtinINeg+        , builtinPOr+        , builtinItIsOne+        ]+  reportSDoc "tc.rec.cxt" 30 $ prettyTCM params+  reportSDoc "tc.rec.cxt" 30 $ prettyTCM fsT+  reportSDoc "tc.rec.cxt" 30 $ text $ show rect+  sortsOk <- allM (rect : map unDom (flattenTel fsT)) sortOk+  if not $ sortsOk && all isJust required then return $ emptyCompKit else do+    transp <- whenDefined [builtinTrans]              (defineTranspOrHCompR DoTransp name params fsT fns rect)+    hcomp  <- whenDefined [builtinTrans,builtinHComp] (defineTranspOrHCompR DoHComp name params fsT fns rect)+    return $ CompKit+      { nameOfTransp = transp+      , nameOfHComp  = hcomp+      }+  where+    whenDefined xs m = do+      xs <- mapM getTerm' xs+      if all isJust xs then m else return Nothing+    sortOk :: Type -> TCM Bool+    sortOk a = reduce (getSort a) >>= \case+      Type{} -> return True+      _      -> return False+++defineTranspOrHCompR ::+  TranspOrHComp+  -> QName       -- ^ some name, e.g. record name+  -> Telescope   -- ^ param types Δ+  -> Telescope   -- ^ fields' types Δ ⊢ Φ+  -> [Arg QName] -- ^ fields' names+  -> Type        -- ^ record type Δ ⊢ T+  -> TCM (Maybe QName)+defineTranspOrHCompR cmd name params fsT fns rect = do+  (theName, gamma, rtype, clause_types, bodies) <- fst <$>+    (case cmd of DoTransp -> defineTranspForFields; DoHComp -> defineHCompForFields)+       (\ t fn -> t `applyE` [Proj ProjSystem fn]) name params fsT fns rect++  -- phi = 1 clause+  c' <- do+           io <- primIOne+           Just io_name <- getBuiltinName' builtinIOne+           one <- primItIsOne+           tInterval <- elInf primInterval+           let+              (ix,rhs) =+                case cmd of+                  -- TranspRArgs = phi : I, a0 : ..+                  -- Γ = Δ^I , CompRArgs+                  -- pats = ... | phi = i1+                  -- body = a0+                  DoTransp -> (1,Var 0 [])+                  -- HCompRArgs = phi : I, u : .., a0 : ..+                  -- Γ = Δ, CompRArgs+                  -- pats = ... | phi = i1+                  -- body = u i1 itIsOne+                  DoHComp  -> (2,Var 1 [] `apply` [argN io, setRelevance Irrelevant $ argN one])++              p = ConP (ConHead io_name Inductive [])+                       (noConPatternInfo { conPType = Just (Arg defaultArgInfo tInterval)+                                         , conPFallThrough = True })+                         []++              -- gamma, rtype++              s = singletonS ix p++              pats :: [NamedArg DeBruijnPattern]+              pats = s `applySubst` teleNamedArgs gamma++              t :: Type+              t = s `applyPatSubst` rtype++              gamma' :: Telescope+              gamma' = unflattenTel (ns0 ++ ns1) $ s `applyPatSubst` (g0 ++ g1)+               where+                (g0,_:g1) = splitAt (size gamma - 1 - ix) $ flattenTel gamma+                (ns0,_:ns1) = splitAt (size gamma - 1 - ix) $ teleNames gamma++              c = Clause { clauseTel       = gamma'+                         , clauseType      = Just $ argN t+                         , namedClausePats = pats+                         , clauseFullRange = noRange+                         , clauseLHSRange  = noRange+                         , clauseCatchall  = False+                         , clauseBody      = Just $ rhs+                         , clauseUnreachable = Just False+                         }+           reportSDoc "trans.rec.face" 17 $ text $ show c+           return c+  cs <- flip mapM (zip3 fns clause_types bodies) $ \ (fname, clause_ty, body) -> do+          let+              pats = teleNamedArgs gamma ++ [defaultNamedArg $ ProjP ProjSystem $ unArg fname]+              c = Clause { clauseTel       = gamma+                         , clauseType      = Just $ argN (unDom clause_ty)+                         , namedClausePats = pats+                         , clauseFullRange = noRange+                         , clauseLHSRange  = noRange+                         , clauseCatchall  = False+                         , clauseBody      = Just body+                         , clauseUnreachable = Just False+                         }+          reportSDoc "trans.rec" 17 $ text $ show c+          reportSDoc "trans.rec" 16 $ text "type =" <+> text (show (clauseType c))+          reportSDoc "trans.rec" 15 $ prettyTCM $ abstract gamma (unDom clause_ty)+          reportSDoc "trans.rec" 10 $ text "body =" <+> prettyTCM (abstract gamma body)+          return c+  addClauses theName $ c' : cs+  reportSDoc "trans.rec" 15 $ text $ "compiling clauses for " ++ show theName+  (mst, cc) <- inTopContext (compileClauses Nothing cs)+  whenJust mst $ setSplitTree theName+  setCompiledClauses theName cc+  reportSDoc "trans.rec" 15 $ text $ "compiled"+  return $ Just theName++ {-| @checkRecordProjections m r q tel ftel fs@.      [@m@    ]  name of the generated module@@ -321,21 +513,21 @@       setScope scope >> checkProjs ftel1 ftel2 (fs' ++ fs)      -- Case: projection.-    checkProjs ftel1 (ExtendTel (Dom ai t) ftel2) (A.Field info x _ : fs) =+    checkProjs ftel1 (ExtendTel (dom@Dom{domInfo = ai,unDom = t}) ftel2) (A.Field info x _ : fs) =       traceCall (CheckProjection (getRange info) x t) $ do       -- Andreas, 2012-06-07:       -- Issue 387: It is wrong to just type check field types again       -- because then meta variables are created again.       -- Instead, we take the field type t from the field telescope.       reportSDoc "tc.rec.proj" 5 $ sep-        [ text "checking projection" <+> prettyTCM x+        [ "checking projection" <+> prettyTCM x         , nest 2 $ vcat-          [ text "top   =" <+> (inTopContext . prettyTCM =<< getContextTelescope)-          , text "tel   =" <+> (inTopContext . prettyTCM $ tel)-          , text "ftel1 =" <+> prettyTCM ftel1-          , text "t     =" <+> prettyTCM t-          , text "ftel2 =" <+> addContext ftel1 (underAbstraction_ ftel2 prettyTCM)-          , text "abstr =" <+> (text . show) (Info.defAbstract info)+          [ "top   =" <+> (inTopContext . prettyTCM =<< getContextTelescope)+          , "tel   =" <+> (inTopContext . prettyTCM $ tel)+          , "ftel1 =" <+> prettyTCM ftel1+          , "t     =" <+> prettyTCM t+          , "ftel2 =" <+> addContext ftel1 (underAbstraction_ ftel2 prettyTCM)+          , "abstr =" <+> (text . show) (Info.defAbstract info)           ]         ] @@ -363,20 +555,23 @@           projcall o = Var 0 [Proj o projname]           rel      = getRelevance ai           -- the recursive call-          recurse  = checkProjs (abstract ftel1 $ ExtendTel (Dom ai t)+          recurse  = checkProjs (abstract ftel1 $ ExtendTel dom                                  $ Abs (nameToArgName $ qnameName projname) EmptyTel)                                 (ftel2 `absApp` projcall ProjSystem) fs -      reportSDoc "tc.rec.proj" 25 $ nest 2 $ text "finalt=" <+> do+      reportSDoc "tc.rec.proj" 25 $ nest 2 $ "finalt=" <+> do         inTopContext $ prettyTCM finalt -      -- Andreas, 2012-02-20 do not add irrelevant projections if-      -- disabled by --no-irrelevant-projections-      ifM (return (rel == Irrelevant) `and2M` do not . optIrrelevantProjections <$> pragmaOptions) recurse $ do-+      -- -- Andreas, 2012-02-20 do not add irrelevant projections if+      -- -- disabled by --no-irrelevant-projections+      -- ifM (return (rel == Irrelevant) `and2M` do not . optIrrelevantProjections <$> pragmaOptions) recurse $ do+      -- Andreas, 2018-06-09 issue #2170+      -- Always create irrelevant projections (because the scope checker accepts irrelevant fields).+      -- If --no-irrelevant-projections, then their use should be disallowed by the type checker for expressions.+      do         reportSDoc "tc.rec.proj" 10 $ sep-          [ text "adding projection"-          , nest 2 $ prettyTCM projname <+> text ":" <+> inTopContext (prettyTCM finalt)+          [ "adding projection"+          , nest 2 $ prettyTCM projname <+> ":" <+> inTopContext (prettyTCM finalt)           ]          -- The body should be@@ -402,10 +597,13 @@             (_ptel,[rt]) = splitAt (size tel - 1) telList             cpo    = if hasNamedCon then PatOCon else PatORec             cpi    = ConPatternInfo { conPRecord = Just cpo+                                    , conPFallThrough = False                                     , conPType   = Just $ argFromDom $ fmap snd rt                                     , conPLazy   = True }             conp   = defaultArg $ ConP con cpi $-                     [ Arg ai' $ unnamed $ varP "x" | Dom ai' _ <- telToList ftel ]+                     [ Arg ai' $ unnamed $ varP ("x" :: String)+                     | Dom{domInfo = ai'} <- telToList ftel+                     ]             body   = Just $ bodyMod $ var (size ftel2)             cltel  = ftel             clause = Clause { clauseLHSRange  = getRange info@@ -426,20 +624,20 @@               -- index of the record argument (in the type),               -- start counting with 1:               , projIndex    = size tel -- which is @size ptel + 1@-              , projLams     = ProjLams $ map (\ (Dom ai (x,_)) -> Arg ai x) telList+              , projLams     = ProjLams $ map (argFromDom . fmap fst) telList               }          reportSDoc "tc.rec.proj" 80 $ sep-          [ text "adding projection"+          [ "adding projection"           , nest 2 $ prettyTCM projname <+> text (show clause)           ]         reportSDoc "tc.rec.proj" 70 $ sep-          [ text "adding projection"-          , nest 2 $ prettyTCM projname <+> text (show (clausePats clause)) <+> text "=" <+>-                       inTopContext (addContext ftel (maybe (text "_|_") prettyTCM (clauseBody clause)))+          [ "adding projection"+          , nest 2 $ prettyTCM projname <+> text (show (clausePats clause)) <+> "=" <+>+                       inTopContext (addContext ftel (maybe "_|_" prettyTCM (clauseBody clause)))           ]         reportSDoc "tc.rec.proj" 10 $ sep-          [ text "adding projection"+          [ "adding projection"           , nest 2 $ prettyTCM (QNamed projname clause)           ] @@ -447,10 +645,10 @@               -- projection functions are defined. Record pattern               -- translation is defined in terms of projection               -- functions.-        cc <- compileClauses Nothing [clause]+        (mst , cc) <- compileClauses Nothing [clause]          reportSDoc "tc.cc" 60 $ do-          sep [ text "compiled clauses of " <+> prettyTCM projname+          sep [ "compiled clauses of " <+> prettyTCM projname               , nest 2 $ text (show cc)               ] @@ -460,6 +658,7 @@               emptyFunction                 { funClauses        = [clause]                 , funCompiled       = Just cc+                , funSplitTree      = mst                 , funProjection     = Just projection                 , funMutual         = Just []  -- Projections are not mutually recursive with anything                 , funTerminates     = Just True@@ -467,8 +666,9 @@                 })               { defArgOccurrences = [StrictPos] }           computePolarity [projname]-          when (Info.defInstance info == InstanceDef) $-            addTypedInstance projname finalt++        when (Info.defInstance info == InstanceDef) $+          addTypedInstance projname t          recurse 
src/full/Agda/TypeChecking/Rules/Term.hs view
@@ -15,13 +15,14 @@ import Control.Monad.Reader  import Data.Maybe-import Data.Either (partitionEithers)+import Data.Either (partitionEithers, lefts) import Data.Monoid (mappend) import qualified Data.List as List import qualified Data.Map as Map+import qualified Data.Set as Set  import Agda.Interaction.Options-import Agda.Interaction.Highlighting.Generate (storeDisambiguatedName)+import Agda.Interaction.Highlighting.Generate (disambiguateRecordFields)  import qualified Agda.Syntax.Abstract as A import Agda.Syntax.Abstract.Views as A@@ -36,18 +37,23 @@ import Agda.Syntax.Scope.Base ( ThingsInScope, AbstractName                               , emptyScopeInfo                               , exportedNamesInScope)-import Agda.Syntax.Scope.Monad (getNamedScope)+import Agda.Syntax.Scope.Monad (getNamedScope, freshAbstractQName) import Agda.Syntax.Translation.InternalToAbstract (reify) +import Agda.TypeChecking.Abstract import Agda.TypeChecking.CompiledClause import Agda.TypeChecking.Constraints import Agda.TypeChecking.Conversion+import Agda.TypeChecking.Coverage.SplitTree import Agda.TypeChecking.Datatypes import Agda.TypeChecking.EtaContract+import Agda.TypeChecking.Generalize import Agda.TypeChecking.Implicit import Agda.TypeChecking.Irrelevance+import Agda.TypeChecking.IApplyConfluence import Agda.TypeChecking.Level import Agda.TypeChecking.MetaVars+import Agda.TypeChecking.Names import Agda.TypeChecking.Monad import Agda.TypeChecking.Monad.Builtin import Agda.TypeChecking.Patterns.Abstract@@ -65,8 +71,9 @@ import Agda.TypeChecking.Substitute import Agda.TypeChecking.Telescope import Agda.TypeChecking.Unquote+import Agda.TypeChecking.Warnings -import {-# SOURCE #-} Agda.TypeChecking.Empty (isEmptyType)+import {-# SOURCE #-} Agda.TypeChecking.Empty ( ensureEmptyType ) import {-# SOURCE #-} Agda.TypeChecking.Rules.Def (checkFunDef', useTerPragma) import {-# SOURCE #-} Agda.TypeChecking.Rules.Decl (checkSectionApplication) import {-# SOURCE #-} Agda.TypeChecking.Rules.Application@@ -76,6 +83,7 @@   , MonadError(catchError, throwError)   , runExceptT   )+import Agda.Utils.Function import Agda.Utils.Functor import Agda.Utils.Lens import Agda.Utils.List@@ -108,7 +116,7 @@   let fallback = isType e =<< do workOnTypes $ newSortMeta   case unScope e of     A.Fun i (Arg info t) b -> do-      a <- Dom info <$> isType_ t+      a <- setArgInfo info . defaultDom <$> isType_ t       b <- isType_ b       s <- inferFunSort (getSort a) (getSort b)       let t' = El s $ Pi a $ NoAbs underscore b@@ -123,27 +131,42 @@       checkTelePiSort t'       noFunctionsIntoSize t0 t'       return t'-    A.Set _ n    -> do++    -- Setᵢ+    A.Set _ n -> do       return $ sort (mkType n)++    -- Propᵢ+    A.Prop _ n -> do+      unlessM isPropEnabled $ typeError NeedOptionProp+      return $ sort (mkProp n)++    -- Set ℓ     A.App i s arg       | visible arg,-        A.Set _ 0 <- unScope s ->-      ifNotM hasUniversePolymorphism-          (typeError $ GenericError "Use --universe-polymorphism to enable level arguments to Set")-      $ {- else -} do-        lvl <- levelType-        -- allow NonStrict variables when checking level-        --   Set : (NonStrict) Level -> Set\omega-        n   <- levelView =<< do-          applyRelevanceToContext NonStrict $-            checkNamedArg arg lvl-        return $ sort (Type n)+        A.Set _ 0 <- unScope s -> do+      unlessM hasUniversePolymorphism $ typeError $ GenericError $+        "Use --universe-polymorphism to enable level arguments to Set"+      -- allow NonStrict variables when checking level+      --   Set : (NonStrict) Level -> Set\omega+      applyRelevanceToContext NonStrict $+        sort . Type <$> checkLevel arg +    -- Prop ℓ+    A.App i s arg+      | visible arg,+        A.Prop _ 0 <- unScope s -> do+      unlessM isPropEnabled $ typeError NeedOptionProp+      unlessM hasUniversePolymorphism $ typeError $ GenericError $+        "Use --universe-polymorphism to enable level arguments to Prop"+      applyRelevanceToContext NonStrict $+        sort . Prop <$> checkLevel arg+     -- Issue #707: Check an existing interaction point     A.QuestionMark minfo ii -> caseMaybeM (lookupInteractionMeta ii) fallback $ \ x -> do       -- -- | Just x <- A.metaNumber minfo -> do       reportSDoc "tc.ip" 20 $ fsep-        [ text "Rechecking meta "+        [ "Rechecking meta "         , prettyTCM x         , text $ " for interaction point " ++ show ii         ]@@ -154,20 +177,31 @@       let n  = length . envContext . clEnv . miClosRange . mvInfo $ mv       (vs, rest) <- splitAt n <$> getContextArgs       reportSDoc "tc.ip" 20 $ vcat-        [ text "  s0   = " <+> prettyTCM s0-        , text "  vs   = " <+> prettyTCM vs-        , text "  rest = " <+> prettyTCM rest+        [ "  s0   = " <+> prettyTCM s0+        , "  vs   = " <+> prettyTCM vs+        , "  rest = " <+> prettyTCM rest         ]       -- We assume the meta variable use here is in an extension of the original context.       -- If not we revert to the old buggy behavior of #707 (see test/Succeed/Issue2257b).       if (length vs /= n) then fallback else do-      s1  <- piApplyM s0 vs+      s1  <- reduce =<< piApplyM s0 vs+      reportSDoc "tc.ip" 20 $ vcat+        [ "  s1   = " <+> prettyTCM s1+        ]+      reportSDoc "tc.ip" 70 $ vcat+        [ "  s1   = " <+> text (show s1)+        ]       case unEl s1 of         Sort s -> return $ El s $ MetaV x $ map Apply vs         _ -> __IMPOSSIBLE__      _ -> fallback +checkLevel :: NamedArg A.Expr -> TCM Level+checkLevel arg = do+  lvl <- levelType+  levelView =<< checkNamedArg arg lvl+ -- | Ensure that a (freshly created) function type does not inhabit 'SizeUniv'. --   Precondition:  When @noFunctionsIntoSize t tBlame@ is called, --   we are in the context of @tBlame@ in order to print it correctly.@@ -177,8 +211,8 @@ noFunctionsIntoSize t tBlame = do   reportSDoc "tc.fun" 20 $ do     let El s (Pi dom b) = tBlame-    sep [ text "created function type " <+> prettyTCM tBlame-        , text "with pts rule" <+> prettyTCM (getSort dom, getSort b, s)+    sep [ "created function type " <+> prettyTCM tBlame+        , "with pts rule" <+> prettyTCM (getSort dom, getSort b, s)         ]   s <- reduce $ getSort t   when (s == SizeUniv) $ do@@ -203,6 +237,10 @@ -- * Telescopes --------------------------------------------------------------------------- +checkGeneralizeTelescope :: A.GeneralizeTelescope -> ([Maybe Name] -> Telescope -> TCM a) -> TCM a+checkGeneralizeTelescope (A.GeneralizeTel vars tel) k =+  generalizeTelescope vars (checkTelescope tel) k+ -- | Type check a (module) telescope. --   Binds the variables defined by the telescope. checkTelescope :: A.Telescope -> (Telescope -> TCM a) -> TCM a@@ -238,22 +276,30 @@ -- --   Parametrized by a flag wether we check a typed lambda or a Pi. This flag --   is needed for irrelevance.-checkTypedBindings :: LamOrPi -> A.TypedBindings -> (Telescope -> TCM a) -> TCM a-checkTypedBindings lamOrPi (A.TypedBindings i (Arg info b)) ret =-    checkTypedBinding lamOrPi info b $ \ bs ->-    ret $ telFromList bs -checkTypedBinding :: LamOrPi -> ArgInfo -> A.TypedBinding -> (ListTel -> TCM a) -> TCM a-checkTypedBinding lamOrPi info (A.TBind i xs' e) ret = do-    let xs = map (fmap A.unBind) xs'+checkTypedBindings :: LamOrPi -> A.TypedBinding -> (Telescope -> TCM a) -> TCM a+checkTypedBindings lamOrPi (A.TBind r xs' e) ret = do+    let xs = (map . fmap . fmap) A.unBind xs'     -- Andreas, 2011-04-26 irrelevant function arguments may appear     -- non-strictly in the codomain type     -- 2011-10-04 if flag --experimental-irrelevance is set     experimental <- optExperimentalIrrelevance <$> pragmaOptions     t <- modEnv lamOrPi $ isType_ e-    let info' = mapRelevance (modRel lamOrPi experimental) info-    addContext (xs, Dom info' t) $-      ret $ bindsWithHidingToTel xs (Dom info t)++    -- Jesper, 2019-02-12, Issue #3534: warn if the type of an+    -- instance argument does not have the right shape+    unlessNull (filter isInstance xs') $ \ixs -> do+      (tel, target) <- getOutputTypeName t+      case target of+        OutputTypeName{} -> return ()+        OutputTypeVar{}  -> return ()+        OutputTypeVisiblePi{} -> warning . InstanceArgWithExplicitArg =<< prettyTCM (A.TBind r ixs e)+        OutputTypeNameNotYetKnown{} -> return ()+        NoOutputTypeName -> warning . InstanceNoOutputTypeName =<< prettyTCM (A.TBind r ixs e)++    let xs' = (map . mapRelevance) (modRel lamOrPi experimental) xs+    addContext (xs', t) $+      ret $ namedBindsToTel xs t     where         -- if we are checking a typed lambda, we resurrect before we check the         -- types, but do not modify the new context entries@@ -261,46 +307,89 @@         -- modify the new context entries         modEnv LamNotPi = workOnTypes         modEnv _        = id-        modRel PiNotLam xp = if xp then irrToNonStrict . nonStrictToRel else nonStrictToRel+        modRel PiNotLam xp = if xp then irrToNonStrict else id         modRel _        _  = id-checkTypedBinding lamOrPi info (A.TLet _ lbs) ret = do-    checkLetBindings lbs (ret [])+checkTypedBindings lamOrPi (A.TLet _ lbs) ret = do+    checkLetBindings lbs (ret EmptyTel) +ifPath :: Type -> TCM a -> TCM a -> TCM a+ifPath ty fallback work = do+  pv <- pathView ty+  if isPathType pv then work else fallback++checkPath :: A.TypedBinding -> A.Expr -> Type -> TCM Term+checkPath b@(A.TBind _ [x'] typ) body ty = do+    let x    = (fmap . fmap) A.unBind x'+        info = getArgInfo x+    PathType s path level typ lhs rhs <- pathView ty+    interval <- elInf primInterval+    v <- addContext ([x], interval) $+           checkExpr body (El (raise 1 s) (raise 1 (unArg typ) `apply` [argN $ var 0]))+    iZero <- primIZero+    iOne  <- primIOne+    let lhs' = subst 0 iZero v+        rhs' = subst 0 iOne  v+    let t = Lam info $ Abs (namedArgName x) v+    let btyp i = El s (unArg typ `apply` [argN i])+    locallyTC eRange (const noRange) $ blockTerm ty $ traceCall (SetRange $ getRange body) $ do+      equalTerm (btyp iZero) lhs' (unArg lhs)+      equalTerm (btyp iOne) rhs' (unArg rhs)+      return t+checkPath b body ty = __IMPOSSIBLE__ --------------------------------------------------------------------------- -- * Lambda abstractions ---------------------------------------------------------------------------  -- | Type check a lambda expression.-checkLambda :: Arg A.TypedBinding -> A.Expr -> Type -> TCM Term-checkLambda (Arg _ (A.TLet _ lbs)) body target =+--   "checkLambda bs e ty"  means  (\ bs -> e) : ty+checkLambda :: Comparison -> A.TypedBinding -> A.Expr -> Type -> TCM Term+checkLambda cmp (A.TLet _ lbs) body target =   checkLetBindings lbs (checkExpr body target)-checkLambda (Arg info (A.TBind _ xs' typ)) body target = do+checkLambda cmp b@(A.TBind _ xs' typ) body target = do   reportSLn "tc.term.lambda" 60 $ "checkLambda   xs = " ++ prettyShow xs-   let numbinds = length xs+      possiblePath = numbinds == 1+                   && (case unScope typ of+                         A.Underscore{} -> True+                         _              -> False)+                   && isRelevant info && visible info+  reportSLn "tc.term.lambda" 60 $ "possiblePath = " ++ show (possiblePath, numbinds, unScope typ, info)   TelV tel btyp <- telViewUpTo numbinds target   if size tel < numbinds || numbinds /= 1-    then dontUseTargetType+    then (if possiblePath then trySeeingIfPath else dontUseTargetType)     else useTargetType tel btyp   where-    xs = map (fmap A.unBind) xs'+    xs = (map . fmap . fmap) A.unBind xs'+    info : _ = map getArgInfo xs+    trySeeingIfPath = do+      cubical <- optCubical <$> pragmaOptions+      reportSLn "tc.term.lambda" 60 $ "trySeeingIfPath for " ++ show xs+      let postpone' = if cubical then postpone else \ _ _ -> dontUseTargetType+      ifBlockedType target postpone' $ \ _ t -> do+          ifPath t dontUseTargetType $+            if cubical then checkPath b body t+                       else typeError $ GenericError $ "Option --cubical needed to build a path with a lambda abstraction"++    postpone m tgt = postponeTypeCheckingProblem_ $+      CheckExpr cmp (A.Lam A.exprNoRange (A.DomainFull b) body) tgt+     dontUseTargetType = do       -- Checking λ (xs : argsT) → body : target       verboseS "tc.term.lambda" 5 $ tick "lambda-no-target-type"        -- First check that argsT is a valid type-      argsT <- workOnTypes $ Dom info <$> isType_ typ+      argsT <- workOnTypes $ isType_ typ       -- Andreas, 2015-05-28 Issue 1523       -- If argsT is a SizeLt, it must be non-empty to avoid non-termination.       -- TODO: do we need to block checkExpr?-      checkSizeLtSat $ unEl $ unDom argsT+      checkSizeLtSat $ unEl argsT        -- In order to have as much type information as possible when checking       -- body, we first unify (xs : argsT) → ?t₁ with the target type. If this       -- is inconclusive we need to block the resulting term so we create a       -- fresh problem for the check.-      let tel = telFromList $ bindsWithHidingToTel xs argsT-      reportSLn "tc.term.lambda" 60 $ "dontUseTargetType tel = " ++ show tel+      let tel = namedBindsToTel xs argsT+      reportSDoc "tc.term.lambda" 60 $ "dontUseTargetType tel =" <+> pretty tel       -- DONT USE tel for addContext, as it loses NameIds.       -- WRONG: t1 <- addContext tel $ workOnTypes newTypeMeta_       t1 <- addContext (xs, argsT) $ workOnTypes newTypeMeta_@@ -309,26 +398,24 @@         pid <- newProblem_ $ leqType (telePi tel t1) target         -- Now check body : ?t₁         -- WRONG: v <- addContext tel $ checkExpr body t1-        v <- addContext (xs, argsT) $ checkExpr body t1+        v <- addContext (xs, argsT) $ checkExpr' cmp body t1         -- Block on the type comparison         blockTermOnProblem target (teleLam tel v) pid        else do         -- Now check body : ?t₁         -- WRONG: v <- addContext tel $ checkExpr body t1-        v <- addContext (xs, argsT) $ checkExpr body t1+        v <- addContext (xs, argsT) $ checkExpr' cmp body t1         -- Block on the type comparison-        coerce (teleLam tel v) (telePi tel t1) target+        coerce cmp (teleLam tel v) (telePi tel t1) target      useTargetType tel@(ExtendTel dom (Abs y EmptyTel)) btyp = do         verboseS "tc.term.lambda" 5 $ tick "lambda-with-target-type"         reportSLn "tc.term.lambda" 60 $ "useTargetType y  = " ++ y -        -- merge in the hiding info of the TBind-        let [WithHiding h x] = xs-        info <- return $ mapHiding (mappend h) info+        let [x] = xs         unless (sameHiding dom info) $ typeError $ WrongHidingInLambda target         -- Andreas, 2011-10-01 ignore relevance in lambda if not explicitly given-        info <- lambdaIrrelevanceCheck info dom+        info <- lambdaModalityCheck dom info         -- Andreas, 2015-05-28 Issue 1523         -- Ensure we are not stepping under a possibly non-existing size.         -- TODO: do we need to block checkExpr?@@ -340,18 +427,25 @@         -- check.         (pid, argT) <- newProblem $ isTypeEqualTo typ a         -- Andreas, Issue 630: take name from function type if lambda name is "_"-        v <- lambdaAddContext x y (Dom info argT) $ checkExpr body btyp-        blockTermOnProblem target (Lam info $ Abs (nameToArgName x) v) pid+        v <- lambdaAddContext (namedArg x) y (defaultArgDom info argT) $ checkExpr' cmp body btyp+        blockTermOnProblem target (Lam info $ Abs (namedArgName x) v) pid      useTargetType _ _ = __IMPOSSIBLE__ +-- | Check that modality info in lambda is compatible with modality+--   coming from the function type.+--   If lambda has no user-given modality, copy that of function type.+lambdaModalityCheck :: LensModality dom => dom -> ArgInfo -> TCM ArgInfo+lambdaModalityCheck dom = lambdaQuantityCheck m <=< lambdaIrrelevanceCheck m+  where m = getModality dom+ -- | Check that irrelevance info in lambda is compatible with irrelevance --   coming from the function type. --   If lambda has no user-given relevance, copy that of function type.-lambdaIrrelevanceCheck :: LensRelevance dom => ArgInfo -> dom -> TCM ArgInfo-lambdaIrrelevanceCheck info dom+lambdaIrrelevanceCheck :: LensRelevance dom => dom -> ArgInfo -> TCM ArgInfo+lambdaIrrelevanceCheck dom info     -- Case: no specific user annotation: use relevance of function type-  | isRelevant info = return $ setRelevance (getRelevance dom) info+  | getRelevance info == defaultRelevance = return $ setRelevance (getRelevance dom) info     -- Case: explicit user annotation is taken seriously   | otherwise = do       let rPi  = getRelevance dom  -- relevance of function type@@ -368,21 +462,38 @@         typeError WrongIrrelevanceInLambda       return info +-- | Check that quantity info in lambda is compatible with quantity+--   coming from the function type.+--   If lambda has no user-given quantity, copy that of function type.+lambdaQuantityCheck :: LensQuantity dom => dom -> ArgInfo -> TCM ArgInfo+lambdaQuantityCheck dom info+    -- Case: no specific user annotation: use quantity of function type+  | getQuantity info == defaultQuantity = return $ setQuantity (getQuantity dom) info+    -- Case: explicit user annotation is taken seriously+  | otherwise = do+      let qPi  = getQuantity dom  -- quantity of function type+      let qLam = getQuantity info -- quantity of lambda+      unless (moreQuantity qPi qLam) $ do+        -- the expected use qPi cannot be unrestricted+        when (qPi == Quantityω) __IMPOSSIBLE__+        typeError WrongQuantityInLambda+      return info+ lambdaAddContext :: Name -> ArgName -> Dom Type -> TCM a -> TCM a lambdaAddContext x y dom-  | isNoName x = addContext (notInScopeName y, dom)  -- Note: String instance+  | isNoName x = addContext (y, dom)                 -- Note: String instance   | otherwise  = addContext (x, dom)                 -- Name instance of addContext  -- | Checking a lambda whose domain type has already been checked.-checkPostponedLambda :: Arg ([WithHiding Name], Maybe Type) -> A.Expr -> Type -> TCM Term-checkPostponedLambda args@(Arg _    ([]    , _ )) body target = do-  checkExpr body target-checkPostponedLambda args@(Arg info (WithHiding h x : xs, mt)) body target = do-  let postpone _ t = postponeTypeCheckingProblem_ $ CheckLambda args body t+checkPostponedLambda :: Comparison -> Arg ([WithHiding Name], Maybe Type) -> A.Expr -> Type -> TCM Term+checkPostponedLambda cmp args@(Arg _    ([]    , _ )) body target = do+  checkExpr' cmp body target+checkPostponedLambda cmp args@(Arg info (WithHiding h x : xs, mt)) body target = do+  let postpone _ t = postponeTypeCheckingProblem_ $ CheckLambda cmp args body t       lamHiding = mappend h $ getHiding info   insertHiddenLambdas lamHiding target postpone $ \ t@(El _ (Pi dom b)) -> do     -- Andreas, 2011-10-01 ignore relevance in lambda if not explicitly given-    info' <- setHiding lamHiding <$> lambdaIrrelevanceCheck info dom+    info' <- setHiding lamHiding <$> lambdaModalityCheck dom info     -- We only need to block the final term on the argument type     -- comparison. The body will be blocked if necessary. We still want to     -- compare the argument types first, so we spawn a new problem for that@@ -396,7 +507,7 @@     let dom' = setRelevance (getRelevance info') . setHiding lamHiding $           maybe dom (dom $>) mt     v <- lambdaAddContext x (absName b) dom'  $-      checkPostponedLambda (Arg info (xs, mt)) body $ absBody b+      checkPostponedLambda cmp (Arg info (xs, mt)) body $ absBody b     let v' = Lam info' $ Abs (nameToArgName x) v     maybe (return v') (blockTermOnProblem t v') mpid @@ -431,31 +542,31 @@               addContext (x, dom) $ insertHiddenLambdas h (absBody b) postpone ret        _ -> typeError . GenericDocError =<< do-        text "Expected " <+> prettyTCM target <+> text " to be a function type"+        "Expected " <+> prettyTCM target <+> " to be a function type"  -- | @checkAbsurdLambda i h e t@ checks absurd lambda against type @t@. --   Precondition: @e = AbsurdLam i h@-checkAbsurdLambda :: A.ExprInfo -> Hiding -> A.Expr -> Type -> TCM Term-checkAbsurdLambda i h e t = do+checkAbsurdLambda :: Comparison -> A.ExprInfo -> Hiding -> A.Expr -> Type -> TCM Term+checkAbsurdLambda cmp i h e t = do   t <- instantiateFull t-  ifBlockedType t (\ m t' -> postponeTypeCheckingProblem_ $ CheckExpr e t') $ \ _ t' -> do+  ifBlockedType t (\ m t' -> postponeTypeCheckingProblem_ $ CheckExpr cmp e t') $ \ _ t' -> do     case unEl t' of-      Pi dom@(Dom info' a) b+      Pi dom@(Dom{domInfo = info', unDom = a}) b         | not (sameHiding h info') -> typeError $ WrongHidingInLambda t'         | not (null $ allMetas a) ->-            postponeTypeCheckingProblem (CheckExpr e t') $+            postponeTypeCheckingProblem (CheckExpr cmp e t') $               null . allMetas <$> instantiateFull a         | otherwise -> blockTerm t' $ do-          isEmptyType (getRange i) a+          ensureEmptyType (getRange i) a           -- Add helper function           top <- currentModule           aux <- qualify top <$> freshName_ (getRange i, absurdLambdaName)           -- if we are in irrelevant position, the helper function           -- is added as irrelevant-          rel <- asks envRelevance+          rel <- asksTC envRelevance           reportSDoc "tc.term.absurd" 10 $ vcat-            [ text "Adding absurd function" <+> prettyTCM rel <> prettyTCM aux-            , nest 2 $ text "of type" <+> prettyTCM t'+            [ "Adding absurd function" <+> prettyTCM rel <> prettyTCM aux+            , nest 2 $ "of type" <+> prettyTCM t'             ]           addConstant aux $             (\ d -> (defaultDefn (setRelevance rel info') aux t' d)@@ -475,6 +586,7 @@                     }                   ]               , funCompiled       = Just Fail+              , funSplitTree      = Just $ SplittingDone 0               , funMutual         = Just []               , funTerminates     = Just True               }@@ -486,24 +598,24 @@  -- | @checkExtendedLambda i di qname cs e t@ check pattern matching lambda. -- Precondition: @e = ExtendedLam i di qname cs@-checkExtendedLambda :: A.ExprInfo -> A.DefInfo -> QName -> [A.Clause] ->+checkExtendedLambda :: Comparison -> A.ExprInfo -> A.DefInfo -> QName -> [A.Clause] ->                        A.Expr -> Type -> TCM Term-checkExtendedLambda i di qname cs e t = do+checkExtendedLambda cmp i di qname cs e t = do    -- Andreas, 2016-06-16 issue #2045    -- Try to get rid of unsolved size metas before we    -- fix the type of the extended lambda auxiliary function    solveSizeConstraints DontDefaultToInfty    lamMod <- inFreshModuleIfFreeParams currentModule  -- #2883: need a fresh module if refined params    t <- instantiateFull t-   ifBlockedType t (\ m t' -> postponeTypeCheckingProblem_ $ CheckExpr e t') $ \ _ t -> do+   ifBlockedType t (\ m t' -> postponeTypeCheckingProblem_ $ CheckExpr cmp e t') $ \ _ t -> do      j   <- currentOrFreshMutualBlock-     rel <- asks envRelevance+     rel <- asksTC envRelevance      let info = setRelevance rel defaultArgInfo       reportSDoc "tc.term.exlam" 20 $        text (show $ A.defAbstract di) <+>-       text "extended lambda's implementation \"" <> prettyTCM qname <>-       text "\" has type: " $$ prettyTCM t -- <+> text " where clauses: " <+> text (show cs)+       "extended lambda's implementation \"" <> prettyTCM qname <>+       "\" has type: " $$ prettyTCM t -- <+> " where clauses: " <+> text (show cs)      args     <- getContextArgs       -- Andreas, Ulf, 2016-02-02: We want to postpone type checking an extended lambda@@ -515,7 +627,10 @@        addConstant qname =<< do          useTerPragma $            (defaultDefn info qname t emptyFunction) { defMutual = j }-       checkFunDef' t info NotDelayed (Just $ ExtLamInfo lamMod) Nothing di qname cs+       checkFunDef' t info NotDelayed (Just $ ExtLamInfo lamMod Nothing) Nothing di qname cs+       whenNothingM (asksTC envMutualBlock) $+         -- Andrea 10-03-2018: Should other checks be performed here too? e.g. termination/positivity/..+         checkIApplyConfluence_ qname        return $ Def qname $ map Apply args)   where     -- Concrete definitions cannot use information about abstract things.@@ -524,49 +639,64 @@  -- | Run a computation. -----   * If successful, return Nothing.+--   * If successful, that's it, we are done. -- --   * If @IlltypedPattern p a@, @NotADatatype a@ or @CannotEliminateWithPattern p a@ --     is thrown and type @a@ is blocked on some meta @x@,---     reset any changes to the state and return @Just x@.+--     reset any changes to the state and pass (the error and) @x@ to the handler. -- --   * If @SplitError (UnificationStuck c tel us vs _)@ is thrown and the unification---     problem @us =?= vs : tel@ is blocked on some meta @x@ return @Just x@.+--     problem @us =?= vs : tel@ is blocked on some meta @x@ pass @x@ to the handler. -- --   * If another error was thrown or the type @a@ is not blocked, reraise the error. -- --   Note that the returned meta might only exists in the state where the error was --   thrown, thus, be an invalid 'MetaId' in the current state. -----   If --sharing is enabled, we will never catch errors since it's not safe to roll---   back the state. catchIlltypedPatternBlockedOnMeta :: TCM a -> ((TCErr, MetaId) -> TCM a) -> TCM a catchIlltypedPatternBlockedOnMeta m handle = do    -- Andreas, 2016-07-13, issue 2028.   -- Save the state to rollback the changes to the signature.-  st <- get+  st <- getTC    m `catchError` \ err -> do      let reraise = throwError err -    x <- maybe reraise return =<< case err of-      TypeError s cl -> localState $ put s >> do-        enterClosure cl $ \case-          IlltypedPattern p a -> isBlockedType a-          SplitError (UnificationStuck c tel us vs _) -> do-            problem <- reduce =<< instantiateFull (flattenTel tel, us, vs)-            -- over-approximating the set of metas actually blocking unification-            return $ listToMaybe $ allMetas problem-          SplitError (NotADatatype aClosure) ->-            enterClosure aClosure $ \ a -> isBlockedType a-          CannotEliminateWithPattern p a -> isBlockedType a-          _ -> return Nothing-      _ -> return Nothing+    -- Get the blocking meta responsible for the type error.+    -- If we do not find such a meta or the error should not be handled,+    -- we reraise the error.+    x <- maybe reraise return =<< do+      case err of+        TypeError s cl -> localTCState $ do+          putTC s+          enterClosure cl $ \case+            IlltypedPattern p a -> isBlockedType a +            SplitError (UnificationStuck c tel us vs _) -> do+              -- Andreas, 2018-11-23, re issue #3403+              -- The following computation of meta-variables and picking+              -- of the first one, seems a bit brittle.+              -- I do not understand why there is a single @reduce@ here+              -- (seems to archieve a bit along @normalize@, but how much??).+              problem <- reduce =<< instantiateFull (flattenTel tel, us, vs)+              -- over-approximating the set of metas actually blocking unification+              return $ listToMaybe $ allMetas problem++            SplitError (NotADatatype aClosure) ->+              enterClosure aClosure $ \ a -> isBlockedType a++            -- Andrea: TODO look for blocking meta in tClosure and its Sort.+            -- SplitError (CannotCreateMissingClause _ _ _ tClosure) ->++            CannotEliminateWithPattern p a -> isBlockedType a++            _ -> return Nothing+        _ -> return Nothing+     reportSDoc "tc.postpone" 20 $ vcat $-      [ text "checking definition blocked on meta: " <+> prettyTCM x ]+      [ "checking definition blocked on meta: " <+> prettyTCM x ]      -- Note that we messed up the state a bit.  We might want to unroll these state changes.     -- However, they are mostly harmless:@@ -574,15 +704,20 @@     -- 2. We added a constant without definition.     -- In fact, they are not so harmless, see issue 2028!     -- Thus, reset the state!-    put st+    putTC st      -- The meta might not be known in the reset state, as it could have been created     -- somewhere on the way to the type error.-    Map.lookup x <$> getMetaStore >>= \case-      -- Case: we do not know the meta, so we reraise+    lookupMeta' x >>= \case+      -- Case: we do not know the meta, so we reraise.       Nothing -> reraise       -- Case: we know the meta here.-      Just m | InstV{} <- mvInstantiation m -> __IMPOSSIBLE__  -- It cannot be instantiated yet.+      -- Andreas, 2018-11-23: I do not understand why @InstV@ is necessarily impossible.+      -- The reasoning is probably that the state @st@ is more advanced that @s@+      -- in which @x@ was blocking, thus metas in @st@ should be more instantiated than+      -- in @s@.  But issue #3403 presents a counterexample, so let's play save and reraise+      -- Just m | InstV{} <- mvInstantiation m -> __IMPOSSIBLE__  -- It cannot be instantiated yet.+      Just m | InstV{} <- mvInstantiation m -> reraise       -- Case: the meta is frozen (and not an interaction meta).       -- Postponing doesn't make sense, so we reraise.       Just m | Frozen  <- mvFrozen m -> isInteractionMeta x >>= \case@@ -595,11 +730,22 @@ -- * Records --------------------------------------------------------------------------- -expandModuleAssigns :: [Either A.Assign A.ModuleName] -> [C.Name] -> TCM A.Assigns+-- | Picks up record field assignments from modules that export a definition+--   that has the same name as the missing field.++expandModuleAssigns+  :: [Either A.Assign A.ModuleName]  -- ^ Modules and field assignments.+  -> [C.Name]                        -- ^ Names of fields of the record type.+  -> TCM A.Assigns                   -- ^ Completed field assignments from modules. expandModuleAssigns mfs exs = do   let (fs , ms) = partitionEithers mfs+      -- The visible fields of the record that have not been given by field assignments.       exs' = exs List.\\ map (view nameFieldA) fs++  -- Getting assignments for the missing visible fields.   fs' <- forM exs' $ \ f -> do++    -- Get the possible assignments for field f from the modules.     pms <- forM ms $ \ m -> do        modScope <- getNamedScope m        let names :: ThingsInScope AbstractName@@ -609,22 +755,29 @@           Just [n] -> Just (m, FieldAssignment f (A.nameExpr n))           _        -> Nothing +    -- If we have several matching assignments, that's an error.     case catMaybes pms of       []        -> return Nothing       [(_, fa)] -> return (Just fa)       mfas      -> typeError . GenericDocError =<< do         vcat $-          [ text "Ambiguity: the field" <+> prettyTCM f-            <+> text "appears in the following modules: " ]+          [ "Ambiguity: the field" <+> prettyTCM f+            <+> "appears in the following modules: " ]           ++ map (prettyTCM . fst) mfas   return (fs ++ catMaybes fs')  -- | @checkRecordExpression fs e t@ checks record construction against type @t@. -- Precondition @e = Rec _ fs@.-checkRecordExpression :: A.RecordAssigns  -> A.Expr -> Type -> TCM Term-checkRecordExpression mfs e t = do+checkRecordExpression+  :: Comparison       -- ^ How do we related the inferred type of the record expression+                      --   to the expected type?  Subtype or equal type?+  -> A.RecordAssigns  -- ^ @mfs@: modules and field assignments.+  -> A.Expr           -- ^ Must be @A.Rec _ mfs@.+  -> Type             -- ^ Expected type of record expression.+  -> TCM Term         -- ^ Record value in internal syntax.+checkRecordExpression cmp mfs e t = do   reportSDoc "tc.term.rec" 10 $ sep-    [ text "checking record expression"+    [ "checking record expression"     , prettyA e     ]   ifBlockedType t (\ _ t -> guessRecordType t) {-else-} $ \ _ t -> do@@ -634,29 +787,34 @@       let ~(Just vs) = allApplyElims es       reportSDoc "tc.term.rec" 20 $ text $ "  r   = " ++ prettyShow r -      reportSDoc "tc.term.rec" 30 $ text "  xs  = " <> do+      reportSDoc "tc.term.rec" 30 $ "  xs  = " <> do         text =<< prettyShow . map unArg <$> getRecordFieldNames r-      reportSDoc "tc.term.rec" 30 $ text "  ftel= " <> do+      reportSDoc "tc.term.rec" 30 $ "  ftel= " <> do         prettyTCM =<< getRecordFieldTypes r-      reportSDoc "tc.term.rec" 30 $ text "  con = " <> do+      reportSDoc "tc.term.rec" 30 $ "  con = " <> do         text =<< prettyShow <$> getRecordConstructor r        def <- getRecordDef r-      let -- Field names with ArgInfo.-          axs  = recordFieldNames def-          exs  = filter visible axs+      let -- Field names (C.Name) with ArgInfo from record type definition.+          cxs  = recordFieldNames def           -- Just field names.-          xs   = map unArg axs+          xs   = map unArg cxs           -- Record constructor.           con  = killRange $ recConHead def       reportSDoc "tc.term.rec" 20 $ vcat-        [ text "  xs  = " <> return (P.pretty xs)-        , text "  ftel= " <> prettyTCM (recTel def)-        , text "  con = " <> return (P.pretty con)+        [ "  xs  = " <> return (P.pretty xs)+        , "  ftel= " <> prettyTCM (recTel def)+        , "  con = " <> return (P.pretty con)         ] +      -- Andreas, 2018-09-06, issue #3122.+      -- Associate the concrete record field names used in the record expression+      -- to their counterpart in the record type definition.+      disambiguateRecordFields (map _nameFieldA $ lefts mfs) (map unArg $ recFields def)+       -- Compute the list of given fields, decorated with the ArgInfo from the record def.-      fs <- expandModuleAssigns mfs (map unArg exs)+      -- Andreas, 2019-03-18, issue #3122, also pick up non-visible fields from the modules.+      fs <- expandModuleAssigns mfs (map unArg cxs)        -- Compute a list of metas for the missing visible fields.       scope <- getScope@@ -665,7 +823,7 @@       -- In @es@ omitted explicit fields are replaced by underscores.       -- Omitted implicit or instance fields       -- are still left out and inserted later by checkArguments_.-      es <- insertMissingFields r meta fs axs+      es <- insertMissingFields r meta fs cxs        args <- checkArguments_ ExpandLast re es (recTel def `apply` vs) >>= \case         (elims, remainingTel) | null remainingTel@@ -677,6 +835,7 @@     _         -> typeError $ ShouldBeRecordType t    where+    -- Case: We don't know the type of the record.     guessRecordType t = do       let fields = [ x | Left (FieldAssignment x _) <- mfs ]       rs <- findPossibleRecords fields@@ -696,51 +855,55 @@                   Sort s  -> return s                   v       -> do                     reportSDoc "impossible" 10 $ vcat-                      [ text "The impossible happened when checking record expression against meta"-                      , text "Candidate record type r = " <+> prettyTCM r-                      , text "Type of r               = " <+> prettyTCM rt-                      , text "Ends in (should be sort)= " <+> prettyTCM v+                      [ "The impossible happened when checking record expression against meta"+                      , "Candidate record type r = " <+> prettyTCM r+                      , "Type of r               = " <+> prettyTCM rt+                      , "Ends in (should be sort)= " <+> prettyTCM v                       , text $ "  Raw                   =  " ++ show v                       ]                     __IMPOSSIBLE__           let inferred = El s $ Def r $ map Apply vs           v <- checkExpr e inferred-          coerce v inferred t+          coerce cmp v inferred t           -- Andreas 2012-04-21: OLD CODE, WRONG DIRECTION, I GUESS:           -- blockTerm t $ v <$ leqType_ t inferred            -- If there are more than one possible record we postpone         _:_:_ -> do           reportSDoc "tc.term.expr.rec" 10 $ sep-            [ text "Postponing type checking of"-            , nest 2 $ prettyA e <+> text ":" <+> prettyTCM t+            [ "Postponing type checking of"+            , nest 2 $ prettyA e <+> ":" <+> prettyTCM t             ]-          postponeTypeCheckingProblem_ $ CheckExpr e t-+          postponeTypeCheckingProblem_ $ CheckExpr cmp e t  -- | @checkRecordUpdate ei recexpr fs e t@ -- Precondition @e = RecUpdate ei recexpr fs@.-checkRecordUpdate :: A.ExprInfo -> A.Expr -> A.Assigns -> A.Expr -> Type -> TCM Term-checkRecordUpdate ei recexpr fs e t = do+checkRecordUpdate :: Comparison -> A.ExprInfo -> A.Expr -> A.Assigns -> A.Expr -> Type -> TCM Term+checkRecordUpdate cmp ei recexpr fs e t = do   case unEl t of     Def r vs  -> do-      v <- checkExpr recexpr t+      v <- checkExpr' cmp recexpr t       name <- freshNoName (getRange recexpr)       addLetBinding defaultArgInfo name v t $ do         projs <- recFields <$> getRecordDef r-        axs <- getRecordFieldNames r-        scope <- getScope-        let xs = map unArg axs++        -- Andreas, 2018-09-06, issue #3122.+        -- Associate the concrete record field names used in the record expression+        -- to their counterpart in the record type definition.+        disambiguateRecordFields (map _nameFieldA fs) (map unArg projs)++        xs <- map unArg <$> getRecordFieldNames r         es <- orderFields r Nothing xs $ map (\ (FieldAssignment x e) -> (x, Just e)) fs         let es' = zipWith (replaceFields name ei) projs es-        checkExpr (A.Rec ei [ Left (FieldAssignment x e) | (x, Just e) <- zip xs es' ]) t+        checkExpr' cmp (A.Rec ei [ Left (FieldAssignment x e) | (x, Just e) <- zip xs es' ]) t+     MetaV _ _ -> do       inferred <- inferExpr recexpr >>= reduce . snd       case unEl inferred of-        MetaV _ _ -> postponeTypeCheckingProblem_ $ CheckExpr e t+        MetaV _ _ -> postponeTypeCheckingProblem_ $ CheckExpr cmp e t         _         -> do-          v <- checkExpr e inferred-          coerce v inferred t+          v <- checkExpr' cmp e inferred+          coerce cmp v inferred t     _         -> typeError $ ShouldBeRecordType t   where     replaceFields :: Name -> A.ExprInfo -> Arg A.QName -> Maybe A.Expr -> Maybe A.Expr@@ -756,7 +919,7 @@ checkLiteral :: Literal -> Type -> TCM Term checkLiteral lit t = do   t' <- litType lit-  coerce (Lit lit) t' t+  coerce CmpEq (Lit lit) t' t  --------------------------------------------------------------------------- -- * Terms@@ -771,19 +934,22 @@  -- | Type check an expression. checkExpr :: A.Expr -> Type -> TCM Term-checkExpr e t0 =+checkExpr = checkExpr' CmpLeq++checkExpr' :: Comparison -> A.Expr -> Type -> TCM Term+checkExpr' cmp e t0 =   verboseBracket "tc.term.expr.top" 5 "checkExpr" $-  traceCall (CheckExprCall e t0) $ localScope $ doExpandLast $ unfoldInlined =<< do+  traceCall (CheckExprCall cmp e t0) $ localScope $ doExpandLast $ unfoldInlined =<< do     reportSDoc "tc.term.expr.top" 15 $-        text "Checking" <+> sep-          [ fsep [ prettyTCM e, text ":", prettyTCM t0 ]-          , nest 2 $ text "at " <+> (text . prettyShow =<< getCurrentRange)+        "Checking" <+> sep+          [ fsep [ prettyTCM e, ":", prettyTCM t0 ]+          , nest 2 $ "at " <+> (text . prettyShow =<< getCurrentRange)           ]     reportSDoc "tc.term.expr.top.detailed" 80 $-      text "Checking" <+> fsep [ prettyTCM e, text ":", text (show t0) ]+      "Checking" <+> fsep [ prettyTCM e, ":", text (show t0) ]     t <- reduce t0     reportSDoc "tc.term.expr.top" 15 $-        text "    --> " <+> prettyTCM t+        "    --> " <+> prettyTCM t      e <- scopedExpr e @@ -803,18 +969,27 @@           ifNotM hasUniversePolymorphism               (typeError $ GenericError "Use --universe-polymorphism to enable level arguments to Set")           $ {- else -} do-            lvl <- levelType             -- allow NonStrict variables when checking level             --   Set : (NonStrict) Level -> Set\omega-            n   <- levelView =<< do-              applyRelevanceToContext NonStrict $-                checkNamedArg arg lvl+            n <- applyRelevanceToContext NonStrict $ checkLevel arg             -- check that Set (l+1) <= t             reportSDoc "tc.univ.poly" 10 $-              text "checking Set " <+> prettyTCM n <+>-              text "against" <+> prettyTCM t-            coerce (Sort $ Type n) (sort $ Type $ levelSuc n) t+              "checking Set " <+> prettyTCM n <+>+              "against" <+> prettyTCM t+            coerce cmp (Sort $ Type n) (sort $ Type $ levelSuc n) t +        -- check |- Prop l : t  (requires universe polymorphism)+        A.App i s arg@(Arg ai l)+          | A.Prop _ 0 <- unScope s, visible ai ->+          ifNotM hasUniversePolymorphism+              (typeError $ GenericError "Use --universe-polymorphism to enable level arguments to Prop")+          $ {- else -} do+            n <- applyRelevanceToContext NonStrict $ checkLevel arg+            reportSDoc "tc.univ.poly" 10 $+              "checking Prop " <+> prettyTCM n <+>+              "against" <+> prettyTCM t+            coerce cmp (Sort $ Prop n) (sort $ Type $ levelSuc n) t+         e0@(A.App i q (Arg ai e))           | A.Quote _ <- unScope q, visible ai -> do           let quoted (A.Def x) = return x@@ -830,34 +1005,29 @@                 typeError $ GenericError $ "quote: not a defined name"           x <- quoted (namedThing e)           ty <- qNameType-          coerce (quoteName x) ty t+          coerce cmp (quoteName x) ty t -          | A.QuoteTerm _ <- unScope q ->-             do (et, _)   <- inferExpr (namedThing e)-                et'       <- etaContract =<< instantiateFull et-                let metas = allMetas et'-                case metas of-                  _:_ -> postponeTypeCheckingProblem (CheckExpr e0 t) $ andM $ map isInstantiatedMeta metas-                  []  -> do-                    q  <- quoteTerm et'-                    ty <- el primAgdaTerm-                    coerce q ty t+          | A.QuoteTerm _ <- unScope q -> do+             (et, _) <- inferExpr (namedThing e)+             doQuoteTerm cmp et t          A.Quote _ -> typeError $ GenericError "quote must be applied to a defined name"         A.QuoteTerm _ -> typeError $ GenericError "quoteTerm must be applied to a term"         A.Unquote _ -> typeError $ GenericError "unquote must be applied to a term" -        A.AbsurdLam i h -> checkAbsurdLambda i h e t+        A.AbsurdLam i h -> checkAbsurdLambda cmp i h e t -        A.ExtendedLam i di qname cs -> checkExtendedLambda i di qname cs e t+        A.ExtendedLam i di qname cs -> checkExtendedLambda cmp i di qname cs e t -        A.Lam i (A.DomainFull (A.TypedBindings _ b)) e -> checkLambda b e t+        A.Lam i (A.DomainFull b) e -> checkLambda cmp b e t -        A.Lam i (A.DomainFree info x) e0 -> checkExpr (A.Lam i (domainFree info $ A.unBind x) e0) t+        A.Lam i (A.DomainFree x) e0+          | isNothing (nameOf $ unArg x) -> checkExpr' cmp (A.Lam i (domainFree (getArgInfo x) $ A.unBind $ namedArg x) e0) t+          | otherwise -> typeError $ NotImplemented "named arguments in lambdas"          A.Lit lit    -> checkLiteral lit t-        A.Let i ds e -> checkLetBindings ds $ checkExpr e t-        A.Pi _ tel e | null tel -> checkExpr e t+        A.Let i ds e -> checkLetBindings ds $ checkExpr' cmp e t+        A.Pi _ tel e | null tel -> checkExpr' cmp e t         A.Pi _ tel e -> do             (t0, t') <- checkPiTelescope tel $ \ tel -> do                     t0  <- instantiateFull =<< isType_ e@@ -869,50 +1039,64 @@                 v = unEl t'             when (s == Inf) $ reportSDoc "tc.term.sort" 20 $               vcat [ text ("reduced to omega:")-                   , nest 2 $ text "t   =" <+> prettyTCM t'-                   , nest 2 $ text "cxt =" <+> (prettyTCM =<< getContextTelescope)+                   , nest 2 $ "t   =" <+> prettyTCM t'+                   , nest 2 $ "cxt =" <+> (prettyTCM =<< getContextTelescope)                    ]-            coerce v (sort s) t+            coerce cmp v (sort s) t++        A.Generalized s e -> do+            (_, t') <- generalizeType s $ isType_ e+            noFunctionsIntoSize t' t'+            let s = getSort t'+                v = unEl t'+            when (s == Inf) $ reportSDoc "tc.term.sort" 20 $+              vcat [ text ("reduced to omega:")+                   , nest 2 $ "t   =" <+> prettyTCM t'+                   , nest 2 $ "cxt =" <+> (prettyTCM =<< getContextTelescope)+                   ]+            coerce cmp v (sort s) t+         A.Fun _ (Arg info a) b -> do             a' <- isType_ a             b' <- isType_ b             s  <- inferFunSort (getSort a') (getSort b')-            let v = Pi (Dom info a') (NoAbs underscore b')+            let v = Pi (defaultArgDom info a') (NoAbs underscore b')             noFunctionsIntoSize b' $ El s v-            coerce v (sort s) t+            coerce cmp v (sort s) t         A.Set _ n    -> do-          coerce (Sort $ mkType n) (sort $ mkType $ n + 1) t-        A.Prop _     -> do-          typeError $ GenericError "Prop is no longer supported"+          coerce cmp (Sort $ mkType n) (sort $ mkType $ n + 1) t+        A.Prop _ n   -> do+          unlessM isPropEnabled $ typeError NeedOptionProp+          coerce cmp (Sort $ mkProp n) (sort $ mkType $ n + 1) t -        A.Rec _ fs  -> checkRecordExpression fs e t+        A.Rec _ fs  -> checkRecordExpression cmp fs e t -        A.RecUpdate ei recexpr fs -> checkRecordUpdate ei recexpr fs e t+        A.RecUpdate ei recexpr fs -> checkRecordUpdate cmp ei recexpr fs e t          A.DontCare e -> -- resurrect vars-          ifM ((Irrelevant ==) <$> asks envRelevance)-            (dontCare <$> do applyRelevanceToContext Irrelevant $ checkExpr e t)+          ifM ((Irrelevant ==) <$> asksTC envRelevance)+            (dontCare <$> do applyRelevanceToContext Irrelevant $ checkExpr' cmp e t)             (internalError "DontCare may only appear in irrelevant contexts")          e0@(A.QuoteGoal _ x e) -> do           qg <- quoteGoal t           case qg of-            Left metas -> postponeTypeCheckingProblem (CheckExpr e0 t) $ andM $ map isInstantiatedMeta metas+            Left metas -> postponeTypeCheckingProblem (CheckExpr cmp e0 t) $ andM $ map isInstantiatedMeta metas             Right quoted -> do               tmType <- agdaTermType               (v, ty) <- addLetBinding defaultArgInfo x quoted tmType (inferExpr e)-              coerce v ty t+              coerce cmp v ty t         e0@(A.QuoteContext _) -> do           qc <- quoteContext           case qc of-            Left metas -> postponeTypeCheckingProblem (CheckExpr e0 t) $ andM $ map isInstantiatedMeta metas+            Left metas -> postponeTypeCheckingProblem (CheckExpr cmp e0 t) $ andM $ map isInstantiatedMeta metas             Right quotedContext -> do               ctxType <- el $ list $ primArg <@> (unEl <$> agdaTypeType)-              coerce quotedContext ctxType t+              coerce cmp quotedContext ctxType t         e0@(A.Tactic i e xs ys) -> do           qc <- quoteContext           qg <- quoteGoal t-          let postpone metas = postponeTypeCheckingProblem (CheckExpr e0 t) $ andM $ map isInstantiatedMeta metas+          let postpone metas = postponeTypeCheckingProblem (CheckExpr cmp e0 t) $ andM $ map isInstantiatedMeta metas           case (qc, qg) of             (Left metas1, Left metas2) -> postpone $ metas1 ++ metas2             (Left metas , Right _    ) -> postpone $ metas@@ -923,14 +1107,14 @@               let ai     = A.defaultAppInfo (getRange i)                   tac    = foldl (A.App ai) (A.App ai (A.App ai e quotedCtx) quotedGoal) xs                   result = foldl (A.App ai) (A.Unquote i) (defaultNamedArg tac : ys)-              checkExpr result t+              checkExpr' cmp result t          A.ETel _   -> __IMPOSSIBLE__          A.Dot{} -> typeError $ GenericError $ "Invalid dotted expression"          -- Application-        _   | Application hd args <- appView e -> checkApplication hd args e t+        _   | Application hd args <- appView e -> checkApplication cmp hd args e t        `catchIlltypedPatternBlockedOnMeta` \ (err, x) -> do         -- We could not check the term because the type of some pattern is blocked.@@ -938,8 +1122,8 @@         -- being sure it will be retried when a meta is solved         -- (which might be the blocking meta in which case we actually make progress).         reportSDoc "tc.term" 50 $ vcat $-          [ text "checking pattern got stuck on meta: " <+> text (show x) ]-        postponeTypeCheckingProblem (CheckExpr e t) $ isInstantiatedMeta x+          [ "checking pattern got stuck on meta: " <+> text (show x) ]+        postponeTypeCheckingProblem (CheckExpr cmp e t) $ isInstantiatedMeta x    where   -- | Call checkExpr with an hidden lambda inserted if appropriate,@@ -948,7 +1132,7 @@   tryInsertHiddenLambda e t fallback     -- Insert hidden lambda if all of the following conditions are met:         -- type is a hidden function type, {x : A} -> B or {{x : A}} -> B-    | Pi (Dom info a) b <- unEl t+    | Pi (Dom{domInfo = info, unDom = a}) b <- unEl t         , let h = getHiding info         , notVisible h         -- expression is not a matching hidden lambda or question mark@@ -974,9 +1158,9 @@     rx = caseMaybe (rStart re) noRange $ \ pos -> posToRange pos pos      doInsert info y = do-      x <- unshadowName <=< freshName rx $ notInScopeName y+      x <- C.setNotInScope <$> freshName rx y       reportSLn "tc.term.expr.impl" 15 $ "Inserting implicit lambda"-      checkExpr (A.Lam (A.ExprRange re) (domainFree info x) e) t+      checkExpr' cmp (A.Lam (A.ExprRange re) (domainFree info x) e) t      hiddenLambdaOrHole h e = case e of       A.AbsurdLam _ h'        -> sameHiding h h'@@ -1007,7 +1191,18 @@ -- * Reflection --------------------------------------------------------------------------- --- | DOCUMENT ME!+doQuoteTerm :: Comparison -> Term -> Type -> TCM Term+doQuoteTerm cmp et t = do+  et'       <- etaContract =<< instantiateFull et+  let metas = allMetas et'+  case metas of+    _:_ -> postponeTypeCheckingProblem (DoQuoteTerm cmp et t) $ andM $ map isInstantiatedMeta metas+    []  -> do+      q  <- quoteTerm et'+      ty <- el primAgdaTerm+      coerce cmp q ty t++-- | Checking `quoteGoal` (deprecated) quoteGoal :: Type -> TCM (Either [MetaId] Term) quoteGoal t = do   t' <- etaContract =<< instantiateFull t@@ -1018,7 +1213,7 @@       quotedGoal <- quoteTerm (unEl t')       return $ Right quotedGoal --- | DOCUMENT ME!+-- | Checking `quoteContext` (deprecated) quoteContext :: TCM (Either [MetaId] Term) quoteContext = do   contextTypes  <- map (fmap snd) <$> getContext@@ -1031,30 +1226,31 @@       return $ Right quotedContext  -- | Unquote a TCM computation in a given hole.-unquoteM :: A.Expr -> Term -> Type -> TCM Term -> TCM Term-unquoteM tac hole holeType k = do-  tac <- checkExpr tac =<< (el primAgdaTerm --> el (primAgdaTCM <#> primLevelZero <@> primUnit))-  inFreshModuleIfFreeParams $ unquoteTactic tac hole holeType k+unquoteM :: A.Expr -> Term -> Type -> TCM ()+unquoteM tacA hole holeType = do+  tac <- checkExpr tacA =<< (el primAgdaTerm --> el (primAgdaTCM <#> primLevelZero <@> primUnit))+  inFreshModuleIfFreeParams $ unquoteTactic tac hole holeType --- | DOCUMENT ME!-unquoteTactic :: Term -> Term -> Type -> TCM Term -> TCM Term-unquoteTactic tac hole goal k = do+-- | Run a tactic `tac : Term → TC ⊤` in a hole (second argument) of the type+--   given by the third argument. Runs the continuation if successful.+unquoteTactic :: Term -> Term -> Type -> TCM ()+unquoteTactic tac hole goal = do   ok  <- runUnquoteM $ unquoteTCM tac hole   case ok of     Left (BlockedOnMeta oldState x) -> do-      put oldState-      mi <- Map.lookup x <$> getMetaStore-      (r, unblock) <- case mi of+      putTC oldState+      mi <- lookupMeta' x+      (r, meta) <- case mi of         Nothing -> do -- fresh meta: need to block on something else!           otherMetas <- allMetas <$> instantiateFull goal           case otherMetas of-            []  -> return (noRange,     return False) -- Nothing to block on, leave it yellow. Alternative: fail.-            x:_ -> return (noRange,     isInstantiatedMeta x)  -- range?-        Just mi -> return (getRange mi, isInstantiatedMeta x)+            []  -> return (noRange,     Nothing) -- Nothing to block on, leave it yellow. Alternative: fail.+            x:_ -> return (noRange,     Just x)  -- range?+        Just mi -> return (getRange mi, Just x)       setCurrentRange r $-        postponeTypeCheckingProblem (UnquoteTactic tac hole goal) unblock+        addConstraint (UnquoteTactic meta tac hole goal)     Left err -> typeError $ UnquoteFailed err-    Right _ -> k+    Right _ -> return ()  --------------------------------------------------------------------------- -- * Meta variables@@ -1064,13 +1260,13 @@ checkQuestionMark :: (Type -> TCM (MetaId, Term)) -> Type -> A.MetaInfo -> InteractionId -> TCM Term checkQuestionMark new t0 i ii = do   reportSDoc "tc.interaction" 20 $ sep-    [ text "Found interaction point"-    , text (show ii)-    , text ":"+    [ "Found interaction point"+    , pretty ii+    , ":"     , prettyTCM t0     ]   reportSDoc "tc.interaction" 60 $ sep-    [ text "Raw:"+    [ "Raw:"     , text (show t0)     ]   checkMeta (newQuestionMark' new ii) t0 i -- Andreas, 2013-05-22 use unreduced type t0!@@ -1105,19 +1301,19 @@     Just x -> do       let v = MetaV x []       reportSDoc "tc.meta.check" 20 $-        text "checking existing meta " <+> prettyTCM v+        "checking existing meta " <+> prettyTCM v       t' <- jMetaType . mvJudgement <$> lookupMeta x       reportSDoc "tc.meta.check" 20 $-        nest 2 $ text "of type " <+> prettyTCM t'+        nest 2 $ "of type " <+> prettyTCM t'       case mt of         Nothing -> return (v, t')-        Just t  -> (,t) <$> coerce v t' t+        Just t  -> (,t) <$> coerce CmpLeq v t' t  -- | Turn a domain-free binding (e.g. lambda) into a domain-full one, --   by inserting an underscore for the missing type. domainFree :: ArgInfo -> A.Name -> A.LamBinding domainFree info x =-  A.DomainFull $ A.TypedBindings r $ Arg info $ A.TBind r [pure $ A.BindName x] $ A.Underscore underscoreInfo+  A.DomainFull $ A.TBind r [unnamedArg info $ A.BindName x] $ A.Underscore underscoreInfo   where     r = getRange x     underscoreInfo = A.MetaInfo@@ -1127,6 +1323,7 @@       , A.metaNameSuggestion = prettyShow $ A.nameConcrete x       } + -- | Check arguments whose value we already know. -- --   This function can be used to check user-supplied parameters@@ -1152,9 +1349,9 @@   -> Type               -- ^ Type of the head (must be Pi-type with enough domains).   -> TCM (Args, Type)   -- ^ Remaining inferred arguments, remaining type. checkKnownArgument arg [] _ = genericDocError =<< do-  text "Invalid projection parameter " <+> prettyA arg+  "Invalid projection parameter " <+> prettyA arg checkKnownArgument arg@(Arg info e) (Arg _infov v : vs) t = do-  (Dom info' a, b) <- mustBePi t+  (Dom{domInfo = info',unDom = a}, b) <- mustBePi t   -- Skip the arguments from vs that do not correspond to e   if not (sameHiding info info'           && (visible info || maybe True ((absName b ==) . rangedThing) (nameOf e)))@@ -1172,10 +1369,10 @@ checkNamedArg arg@(Arg info e0) t0 = do   let e = namedThing e0   let x = maybe "" rangedThing $ nameOf e0-  traceCall (CheckExprCall e t0) $ do+  traceCall (CheckExprCall CmpLeq e t0) $ do     reportSDoc "tc.term.args.named" 15 $ do-        text "Checking named arg" <+> sep-          [ fsep [ prettyTCM arg, text ":", prettyTCM t0 ]+        "Checking named arg" <+> sep+          [ fsep [ prettyTCM arg, ":", prettyTCM t0 ]           ]     reportSLn "tc.term.args.named" 75 $ "  arg = " ++ show (deepUnscope arg)     -- Ulf, 2017-03-24: (#2172) Always treat explicit _ and ? as implicit@@ -1209,9 +1406,9 @@ inferExpr' exh e = traceCall (InferExpr e) $ do   let Application hd args = appView e   reportSDoc "tc.infer" 30 $ vcat-    [ text "inferExpr': appView of " <+> prettyA e-    , text "  hd   = " <+> prettyA hd-    , text "  args = " <+> prettyAs args+    [ "inferExpr': appView of " <+> prettyA e+    , "  hd   = " <+> prettyA hd+    , "  args = " <+> prettyAs args     ]   reportSDoc "tc.infer" 60 $ vcat     [ text $ "  hd (raw) = " ++ show hd@@ -1227,12 +1424,12 @@  -- | Used to check aliases @f = e@. --   Switches off 'ExpandLast' for the checking of top-level application.-checkDontExpandLast :: A.Expr -> Type -> TCM Term-checkDontExpandLast e t = case e of+checkDontExpandLast :: Comparison -> A.Expr -> Type -> TCM Term+checkDontExpandLast cmp e t = case e of   _ | Application hd args <- appView e,  defOrVar hd ->-    traceCall (CheckExprCall e t) $ localScope $ dontExpandLast $ do-      checkApplication hd args e t-  _ -> checkExpr e t -- note that checkExpr always sets ExpandLast+    traceCall (CheckExprCall cmp e t) $ localScope $ dontExpandLast $ do+      checkApplication cmp hd args e t+  _ -> checkExpr' cmp e t -- note that checkExpr always sets ExpandLast  -- | Check whether a de Bruijn index is bound by a module telescope. isModuleFreeVar :: Int -> TCM Bool@@ -1245,7 +1442,7 @@ --   arguments.  Otherwise, leave the type polymorphic. inferExprForWith :: A.Expr -> TCM (Term, Type) inferExprForWith e = do-  reportSDoc "tc.with.infer" 20 $ text "inferExprforWith " <+> prettyTCM e+  reportSDoc "tc.with.infer" 20 $ "inferExprforWith " <+> prettyTCM e   reportSLn  "tc.with.infer" 80 $ "inferExprforWith " ++ show (deepUnscope e)   traceCall (InferExpr e) $ do     -- With wants type and term fully instantiated!@@ -1257,10 +1454,10 @@       Var i [] -> whenM (isModuleFreeVar i) $ do         reportSDoc "tc.with.infer" 80 $ vcat           [ text $ "with expression is variable " ++ show i-          , text "current modules = " <+> do text . show =<< currentModule-          , text "current module free vars = " <+> do text . show =<< getCurrentModuleFreeVars-          , text "context size = " <+> do text . show =<< getContextSize-          , text "current context = " <+> do prettyTCM =<< getContextTelescope+          , "current modules = " <+> do text . show =<< currentModule+          , "current module free vars = " <+> do text . show =<< getCurrentModuleFreeVars+          , "context size = " <+> do text . show =<< getContextSize+          , "current context = " <+> do prettyTCM =<< getContextTelescope           ]         typeError $ WithOnFreeVariable e v0       _        -> return ()@@ -1288,7 +1485,7 @@ checkLetBinding b@(A.LetBind i info x t e) ret =   traceCall (CheckLetBinding b) $ do     t <- isType_ t-    v <- applyRelevanceToContext (getRelevance info) $ checkDontExpandLast e t+    v <- applyModalityToContext info $ checkDontExpandLast CmpLeq e t     addLetBinding info (A.unBind x) v t ret  checkLetBinding b@(A.LetPatBind i p e) ret =@@ -1296,25 +1493,30 @@     p <- expandPatternSynonyms p     (v, t) <- inferExpr' ExpandLast e     let -- construct a type  t -> dummy  for use in checkLeftHandSide-        t0 = El (getSort t) $ Pi (Dom defaultArgInfo t) (NoAbs underscore typeDontCare)+        t0 = El (getSort t) $ Pi (defaultDom t) (NoAbs underscore __DUMMY_TYPE__)         p0 = Arg defaultArgInfo (Named Nothing p)     reportSDoc "tc.term.let.pattern" 10 $ vcat-      [ text "let-binding pattern p at type t"+      [ "let-binding pattern p at type t"       , nest 2 $ vcat-        [ text "p (A) =" <+> prettyA p-        , text "t     =" <+> prettyTCM t+        [ "p (A) =" <+> prettyA p+        , "t     =" <+> prettyTCM t+        , "cxtRel=" <+> do pretty =<< asksTC envRelevance         ]       ]     fvs <- getContextSize-    checkLeftHandSide (CheckPattern p EmptyTel t) Nothing [p0] t0 Nothing [] $ \ (LHSResult _ delta0 ps _ _t _ asb) -> bindAsPatterns asb $ do+    checkLeftHandSide (CheckPattern p EmptyTel t) Nothing [p0] t0 Nothing [] $ \ (LHSResult _ delta0 ps _ _t _ asb _) -> bindAsPatterns asb $ do           -- After dropping the free variable patterns there should be a single pattern left.       let p = case drop fvs ps of [p] -> namedArg p; _ -> __IMPOSSIBLE__           -- Also strip the context variables from the telescope           delta = telFromList $ drop fvs $ telToList delta0       reportSDoc "tc.term.let.pattern" 20 $ nest 2 $ vcat-        [ text "p (I) =" <+> prettyTCM p-        , text "delta =" <+> prettyTCM delta+        [ "p (I) =" <+> prettyTCM p+        , "delta =" <+> prettyTCM delta+        , "cxtRel=" <+> do pretty =<< asksTC envRelevance         ]+      reportSDoc "tc.term.let.pattern" 80 $ nest 2 $ vcat+        [ "p (I) =" <+> (text . show) p+        ]       -- We translate it into a list of projections.       fs <- recordPatternToProjections p       -- We remove the bindings for the pattern variables from the context.@@ -1334,12 +1536,12 @@        updateContext sub (drop toDrop) $ do         reportSDoc "tc.term.let.pattern" 20 $ nest 2 $ vcat-          [ text "delta =" <+> prettyTCM delta-          , text "binds =" <+> prettyTCM binds+          [ "delta =" <+> prettyTCM delta+          , "binds =" <+> prettyTCM binds           ]         let fdelta = flattenTel delta         reportSDoc "tc.term.let.pattern" 20 $ nest 2 $ vcat-          [ text "fdelta =" <+> addContext delta (prettyTCM fdelta)+          [ "fdelta =" <+> addContext delta (prettyTCM fdelta)           ]         let tsl  = applySubst sub fdelta         -- We get a list of types@@ -1362,9 +1564,9 @@   let new = n - fv   reportSLn "tc.term.let.apply" 10 $ "Applying " ++ show modapp ++ " with " ++ show new ++ " free variables"   reportSDoc "tc.term.let.apply" 20 $ vcat-    [ text "context =" <+> (prettyTCM =<< getContextTelescope)-    , text "module  =" <+> (prettyTCM =<< currentModule)-    , text "fv      =" <+> (text $ show fv)+    [ "context =" <+> (prettyTCM =<< getContextTelescope)+    , "module  =" <+> (prettyTCM =<< currentModule)+    , "fv      =" <+> (text $ show fv)     ]   checkSectionApplication i x modapp copyInfo   withAnonymousModule x new ret
src/full/Agda/TypeChecking/Rules/Term.hs-boot view
@@ -9,8 +9,10 @@ isType_ :: A.Expr -> TCM Type  checkExpr :: A.Expr -> Type -> TCM Term+checkExpr' :: Comparison -> A.Expr -> Type -> TCM Term inferExpr :: A.Expr -> TCM (Term, Type) -checkPostponedLambda :: Arg ([WithHiding Name], Maybe Type) -> A.Expr -> Type -> TCM Term+checkPostponedLambda :: Comparison -> Arg ([WithHiding Name], Maybe Type) -> A.Expr -> Type -> TCM Term -unquoteTactic :: Term -> Term -> Type -> TCM Term -> TCM Term+doQuoteTerm :: Comparison -> Term -> Type -> TCM Term+unquoteTactic :: Term -> Term -> Type -> TCM ()
src/full/Agda/TypeChecking/Serialise.hs view
@@ -60,7 +60,7 @@ -- 32-bit machines). Word64 does not have these problems.  currentInterfaceVersion :: Word64-currentInterfaceVersion = 20181021 * 10 + 0+currentInterfaceVersion = 20190328 * 10 + 0  -- | Encodes something. To ensure relocatability file paths in -- positions are replaced with module names.@@ -90,7 +90,7 @@     verboseS "profile.serialize" 10 $ do       statistics "Integer"  iC       statistics "String"   sC-      statistics "ByteString" bC+      statistics "Text"     bC       statistics "Double"   dC       statistics "Node"     nC       statistics "Shared Term" tC@@ -144,7 +144,7 @@  decode :: EmbPrj a => L.ByteString -> TCM (Maybe a) decode s = do-  mf   <- use stModuleToSource+  mf   <- useTC stModuleToSource   incs <- getIncludeDirs    -- Note that B.runGetState and G.decompress can raise errors if the@@ -170,11 +170,11 @@                 <$> liftIO H.new                 <*> return mf <*> return incs         (r, st) <- runStateT (runExceptT (value r)) st-        return (Just (modFile st), r)+        return (Just $ modFile st, r)    case mf of     Nothing -> return ()-    Just mf -> stModuleToSource .= mf+    Just mf -> stModuleToSource `setTCLens` mf    case r of     Right x   -> return (Just x)@@ -183,7 +183,7 @@       -- Andreas, 2014-06-11 deactivated debug printing       -- in order to get rid of dependency of Serialize on TCM.Pretty       -- reportSDoc "import.iface" 5 $-      --   text "Error when decoding interface file:"+      --   "Error when decoding interface file:"       --   $+$ nest 2 (prettyTCM err)       return Nothing 
src/full/Agda/TypeChecking/Serialise/Base.hs view
@@ -6,7 +6,9 @@  module Agda.TypeChecking.Serialise.Base where +import Control.Exception (evaluate) import Control.Monad+import Control.Monad.Catch (catchAll) import Control.Monad.Reader import Control.Monad.State.Strict (StateT, gets) @@ -20,6 +22,7 @@ import Data.Maybe import qualified Data.Binary as B import qualified Data.Binary.Get as B+import Data.Text.Lazy (Text) import Data.Typeable ( cast, Typeable, typeOf, TypeRep )  import Agda.Syntax.Common (NameId)@@ -79,7 +82,7 @@   -- Dictionaries which are serialized:   { nodeD        :: !(HashTable Node    Int32)    -- ^ Written to interface file.   , stringD      :: !(HashTable String  Int32)    -- ^ Written to interface file.-  , bstringD     :: !(HashTable L.ByteString Int32) -- ^ Written to interface file.+  , textD        :: !(HashTable Text    Int32)    -- ^ Written to interface file.   , integerD     :: !(HashTable Integer Int32)    -- ^ Written to interface file.   , doubleD      :: !(HashTable Double  Int32)    -- ^ Written to interface file.   -- Dicitionaries which are not serialized, but provide@@ -92,7 +95,7 @@   -- Fresh UIDs and reuse statistics:   , nodeC        :: !(IORef FreshAndReuse)  -- counters for fresh indexes   , stringC      :: !(IORef FreshAndReuse)-  , bstringC     :: !(IORef FreshAndReuse)+  , textC        :: !(IORef FreshAndReuse)   , integerC     :: !(IORef FreshAndReuse)   , doubleC      :: !(IORef FreshAndReuse)   , termC        :: !(IORef FreshAndReuse)@@ -141,7 +144,7 @@ data St = St   { nodeE     :: !(Array Int32 Node)     -- ^ Obtained from interface file.   , stringE   :: !(Array Int32 String)   -- ^ Obtained from interface file.-  , bstringE  :: !(Array Int32 L.ByteString) -- ^ Obtained from interface file.+  , textE     :: !(Array Int32 Text)     -- ^ Obtained from interface file.   , integerE  :: !(Array Int32 Integer)  -- ^ Obtained from interface file.   , doubleE   :: !(Array Int32 Double)   -- ^ Obtained from interface file.   , nodeMemo  :: !Memo@@ -179,6 +182,14 @@     tickICode a     icod_ a +  -- Simple enumeration types can be (de)serialized using (from/to)Enum.++  default value :: (Enum a) => Int32 -> R a+  value i = liftIO (evaluate (toEnum (fromIntegral i))) `catchAll` const malformed++  default icod_ :: (Enum a) => a -> S Int32+  icod_ = return . fromIntegral . fromEnum+ -- | Increase entry for @a@ in 'stats'. tickICode :: forall a. Typeable a => a -> S () tickICode _ = whenM (asks collectStats) $ do@@ -349,7 +360,6 @@           v <- valu . (! ix) =<< gets nodeE           liftIO $ H.insert memo (ix, aTyp) (U v)           return v-  -- | @icodeArgs proxy (a1, ..., an)@ maps @icode@ over @a1@, ..., @an@ --   and returns the corresponding list of @Int32@.
src/full/Agda/TypeChecking/Serialise/Instances.hs view
@@ -13,9 +13,10 @@ import Agda.TypeChecking.Serialise.Instances.Errors ()  instance EmbPrj Interface where-  icod_ (Interface a b c d e f g h i j k l m n) = icodeN' Interface a b c d e f g h i j k l m n+  icod_ (Interface a b c d e f g h i j k l m n o p q) =+    icodeN' Interface a b c d e f g h i j k l m n o p q    value = vcase valu where-    valu [a, b, c, d, e, f, g, h, i, j, k, l, m, n] =-      valuN Interface a b c d e f g h i j k l m n+    valu [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q] =+      valuN Interface a b c d e f g h i j k l m n o p q     valu _ = malformed
src/full/Agda/TypeChecking/Serialise/Instances/Abstract.hs view
@@ -76,10 +76,19 @@     valu _         = malformed  instance EmbPrj AbstractName where-  icod_ (AbsName a b c) = icodeN' AbsName a b c+  icod_ (AbsName a b c d) = icodeN' AbsName a b c d    value = valueN AbsName +instance EmbPrj NameMetadata where+  icod_ NoMetadata                  = icodeN' NoMetadata+  icod_ (GeneralizedVarsMetadata a) = icodeN' GeneralizedVarsMetadata a++  value = vcase valu where+    valu []  = valuN NoMetadata+    valu [a] = valuN GeneralizedVarsMetadata a+    valu _   = malformed+ instance EmbPrj AbstractModule where   icod_ (AbsModule a b) = icodeN' AbsModule a b @@ -92,6 +101,8 @@   icod_ PatternSynName = icodeN 3 PatternSynName   icod_ QuotableName   = icodeN 4 QuotableName   icod_ MacroName      = icodeN 5 MacroName+  icod_ GeneralizeName = icodeN 6 GeneralizeName+  icod_ DisallowedGeneralizeName = icodeN 7 DisallowedGeneralizeName    value = vcase valu where     valu []  = valuN DefName@@ -100,6 +111,8 @@     valu [3] = valuN PatternSynName     valu [4] = valuN QuotableName     valu [5] = valuN MacroName+    valu [6] = valuN GeneralizeName+    valu [7] = valuN DisallowedGeneralizeName     valu _   = malformed  instance EmbPrj Binder where@@ -123,6 +136,8 @@    value = valueN $ \a b -> ConPatInfo a patNoRange b +instance EmbPrj ConPatLazy+ -- Only for pattern synonyms (where a is Void) instance EmbPrj a => EmbPrj (A.Pattern' a) where   icod_ (A.VarP a)            = icodeN 0 A.VarP a@@ -136,6 +151,7 @@   icod_ (A.ProjP p a b)       = icodeN 8 (A.ProjP p) a b   icod_ (A.PatternSynP p a b) = icodeN 9 (A.PatternSynP p) a b   icod_ (A.RecP p a)          = icodeN 10 (A.RecP p) a+  icod_ (A.EqualP _ a)        = __IMPOSSIBLE__   icod_ (A.WithP i a)         = icodeN 11 (A.WithP i) a    value = vcase valu where@@ -189,6 +205,6 @@     valu _         = malformed  instance EmbPrj ScopeInfo where-  icod_ (ScopeInfo a b c d e f g h) = icodeN' (\ a b c d e -> ScopeInfo a b c d e f g h) a b c d e+  icod_ (ScopeInfo a b c d e f g h i j) = icodeN' (\ a b c d e -> ScopeInfo a b c d e f g h i j) a b c d e -  value = valueN (\ a b c d e -> ScopeInfo a b c d e Map.empty Map.empty Set.empty)+  value = valueN (\ a b c d e -> ScopeInfo a b c d e Map.empty Map.empty Set.empty Map.empty Map.empty)
src/full/Agda/TypeChecking/Serialise/Instances/Common.hs view
@@ -13,7 +13,6 @@  import Data.Array.IArray import Data.Word-import qualified Data.ByteString.Lazy as L import qualified Data.Foldable as Fold import Data.Hashable import qualified Data.HashTable.IO as H@@ -27,7 +26,9 @@ import qualified Data.Set as Set import Data.Sequence (Seq) import qualified Data.Sequence as Seq+import Data.Text.Lazy (Text) import Data.Traversable ( mapM )+import Data.Typeable  import Data.Void @@ -59,6 +60,8 @@ import Agda.Utils.Empty (Empty) import qualified Agda.Utils.Empty as Empty +import Agda.Utils.WithDefault+ #include "undefined.h" import Agda.Utils.Impossible @@ -66,9 +69,9 @@   icod_   = icodeString   value i = (! i) `fmap` gets stringE -instance EmbPrj L.ByteString where-  icod_   = icodeX bstringD bstringC-  value i = (! i) `fmap` gets bstringE+instance EmbPrj Text where+  icod_   = icodeX textD textC+  value i = (! i) `fmap` gets textE  instance EmbPrj Integer where   icod_   = icodeInteger@@ -153,6 +156,21 @@     valu [0] = valuN False     valu _   = malformed +instance EmbPrj FileType where+  icod_ AgdaFileType = icodeN' IsData+  icod_ MdFileType   = icodeN 0 IsRecord+  icod_ RstFileType  = icodeN 1 IsRecord+  icod_ TexFileType  = icodeN 2 IsRecord+  icod_ OrgFileType  = icodeN 3 IsRecord++  value = vcase $ \case+    []  -> valuN AgdaFileType+    [0] -> valuN MdFileType+    [1] -> valuN RstFileType+    [2] -> valuN TexFileType+    [3] -> valuN OrgFileType+    _   -> malformed+ instance EmbPrj DataOrRecord where   icod_ IsData   = icodeN' IsData   icod_ IsRecord = icodeN 0 IsRecord@@ -193,6 +211,16 @@    value = valueN P.Pn +instance Typeable b => EmbPrj (WithDefault b) where+  icod_ = \case+    Default -> icodeN' Default+    Value b -> icodeN' Value b++  value = vcase $ \case+    []  -> valuN Default+    [a] -> valuN Value a+    _ -> malformed+ instance EmbPrj TopLevelModuleName where   icod_ (TopLevelModuleName a b) = icodeN' TopLevelModuleName a b @@ -261,13 +289,13 @@     valu _      = malformed  instance EmbPrj C.Name where-  icod_ (C.NoName a b) = icodeN 0 C.NoName a b-  icod_ (C.Name r xs)  = icodeN' C.Name r xs+  icod_ (C.NoName a b)     = icodeN 0 C.NoName a b+  icod_ (C.Name r nis xs)  = icodeN 1 C.Name r nis xs    value = vcase valu where-    valu [0, a, b] = valuN C.NoName a b-    valu [r, xs]   = valuN C.Name   r xs-    valu _         = malformed+    valu [0, a, b]       = valuN C.NoName a b+    valu [1, r, nis, xs] = valuN C.Name   r nis xs+    valu _               = malformed  instance EmbPrj NamePart where   icod_ Hole   = icodeN' Hole@@ -278,6 +306,15 @@     valu [a] = valuN Id a     valu _   = malformed +instance EmbPrj NameInScope where+  icod_ InScope    = icodeN' InScope+  icod_ NotInScope = icodeN 0 NotInScope++  value = vcase valu where+    valu []  = valuN InScope+    valu [0] = valuN NotInScope+    valu _   = malformed+ instance EmbPrj C.QName where   icod_ (Qual    a b) = icodeN' Qual a b   icod_ (C.QName a  ) = icodeN' C.QName a@@ -287,6 +324,15 @@     valu [a]    = valuN C.QName a     valu _      = malformed +instance (EmbPrj a, EmbPrj b) => EmbPrj (ImportedName' a b) where+  icod_ (ImportedModule a) = icodeN 1 ImportedModule a+  icod_ (ImportedName a)   = icodeN 2 ImportedName a++  value = vcase valu where+    valu [1, a] = valuN ImportedModule a+    valu [2, a] = valuN ImportedName a+    valu _ = malformed+ instance EmbPrj Agda.Syntax.Fixity.Associativity where   icod_ LeftAssoc  = icodeN' LeftAssoc   icod_ RightAssoc = icodeN 1 RightAssoc@@ -318,17 +364,17 @@   value = valueN (\ f n -> Fixity' f n noRange)  instance EmbPrj GenPart where-  icod_ (BindHole a)   = icodeN 0 BindHole a-  icod_ (NormalHole a) = icodeN 1 NormalHole a-  icod_ (WildHole a)   = icodeN 2 WildHole a-  icod_ (IdPart a)     = icodeN' IdPart a+  icod_ (BindHole a b)   = icodeN 0 BindHole a b+  icod_ (NormalHole a b) = icodeN 1 NormalHole a b+  icod_ (WildHole a)     = icodeN 2 WildHole a+  icod_ (IdPart a)       = icodeN' IdPart a    value = vcase valu where-    valu [0, a] = valuN BindHole a-    valu [1, a] = valuN NormalHole a-    valu [2, a] = valuN WildHole a-    valu [a]    = valuN IdPart a-    valu _      = malformed+    valu [0, a, b] = valuN BindHole a b+    valu [1, a, b] = valuN NormalHole a b+    valu [2, a]    = valuN WildHole a+    valu [a]       = valuN IdPart a+    valu _         = malformed  instance EmbPrj MetaId where   icod_ (MetaId n) = icod_ n@@ -348,8 +394,8 @@   value n           = A.MName `fmap` value n  instance EmbPrj A.Name where-  icod_ (A.Name a b c d) = icodeMemo nameD nameC a $-    icodeN' (\ a b -> A.Name a b . underlyingRange) a b (SerialisedRange c) d+  icod_ (A.Name a b c d e) = icodeMemo nameD nameC a $+    icodeN' (\ a b -> A.Name a b . underlyingRange) a b (SerialisedRange c) d e    value = valueN (\a b c -> A.Name a b (underlyingRange c)) @@ -393,7 +439,7 @@   value = valueN Arg  instance EmbPrj a => EmbPrj (Dom a) where-  icod_ (Dom i e) = icodeN' Dom i e+  icod_ (Dom a b c d) = icodeN' Dom a b c d    value = valueN Dom @@ -429,10 +475,12 @@  instance EmbPrj Quantity where   icod_ Quantity0 = return 0-  icod_ Quantityω = return 1+  icod_ Quantity1 = return 1+  icod_ Quantityω = return 2    value 0 = return Quantity0-  value 1 = return Quantityω+  value 1 = return Quantity1+  value 2 = return Quantityω   value _ = malformed  instance EmbPrj Modality where@@ -457,11 +505,13 @@   icod_ Inserted    = return 1   icod_ Reflected   = return 2   icod_ CaseSplit   = return 3+  icod_ Substitution = return 4    value 0 = return UserWritten   value 1 = return Inserted   value 2 = return Reflected   value 3 = return CaseSplit+  value 4 = return Substitution   value _ = malformed  instance EmbPrj FreeVariables where@@ -535,10 +585,12 @@ instance EmbPrj Impossible where   icod_ (Impossible a b)  = icodeN 0 Impossible a b   icod_ (Unreachable a b) = icodeN 1 Unreachable a b+  icod_ (ImpMissingDefinitions a b) = icodeN 2 ImpMissingDefinitions a b    value = vcase valu where     valu [0, a, b] = valuN Impossible  a b     valu [1, a, b] = valuN Unreachable a b+    valu [2, a, b] = valuN ImpMissingDefinitions a b     valu _         = malformed  instance EmbPrj Empty where
src/full/Agda/TypeChecking/Serialise/Instances/Errors.hs view
@@ -4,6 +4,10 @@  module Agda.TypeChecking.Serialise.Instances.Errors where +import Data.Maybe++import Control.Monad+ import Agda.TypeChecking.Serialise.Base import Agda.TypeChecking.Serialise.Instances.Common import Agda.TypeChecking.Serialise.Instances.Internal ()@@ -14,6 +18,9 @@ import Agda.Syntax.Abstract.Name (ModuleName) import Agda.TypeChecking.Monad.Base import Agda.Interaction.Options+import Agda.Interaction.Options.Warnings+import Agda.Interaction.Library+import Agda.Interaction.Library.Parse import Agda.Termination.CutOff import Agda.TypeChecking.Positivity.Occurrence () import Agda.Syntax.Parser.Monad (ParseWarning( OverlappingTokensWarning ))@@ -49,15 +56,28 @@   icod_ (SafeFlagPragma a)           = __IMPOSSIBLE__   icod_ SafeFlagNonTerminating       = __IMPOSSIBLE__   icod_ SafeFlagTerminating          = __IMPOSSIBLE__-  icod_ SafeFlagPrimTrustMe          = __IMPOSSIBLE__+  icod_ SafeFlagWithoutKFlagPrimEraseEquality    = __IMPOSSIBLE__   icod_ SafeFlagNoPositivityCheck    = __IMPOSSIBLE__   icod_ SafeFlagPolarity             = __IMPOSSIBLE__+  icod_ SafeFlagNoUniverseCheck      = __IMPOSSIBLE__   icod_ (ParseWarning a)             = __IMPOSSIBLE__   icod_ (DeprecationWarning a b c)   = icodeN 6 DeprecationWarning a b c   icod_ (NicifierIssue a)            = icodeN 7 NicifierIssue a   icod_ (InversionDepthReached a)    = icodeN 8 InversionDepthReached a   icod_ (UserWarning a)              = icodeN 9 UserWarning a-  icod_ (CoverageNoExactSplit a b)   = icodeN 10 CoverageNoExactSplit a b+  icod_ (AbsurdPatternRequiresNoRHS a) = icodeN 10 AbsurdPatternRequiresNoRHS a+  icod_ (ModuleDoesntExport a b)       = icodeN 11 ModuleDoesntExport a b+  icod_ (LibraryWarning a)           = icodeN 12 LibraryWarning a+  icod_ (CoverageNoExactSplit a b)   = icodeN 13 CoverageNoExactSplit a b+  icod_ (CantGeneralizeOverSorts a)  = icodeN 14 CantGeneralizeOverSorts a+  icod_ (IllformedAsClause a)        = icodeN 15 IllformedAsClause a+  icod_ WithoutKFlagPrimEraseEquality = icodeN 16 WithoutKFlagPrimEraseEquality+  icod_ (InstanceWithExplicitArg a)  = icodeN 17 InstanceWithExplicitArg a+  icod_ (InfectiveImport a b)          = icodeN 18 InfectiveImport a b+  icod_ (CoInfectiveImport a b)        = icodeN 19 CoInfectiveImport a b+  icod_ (InstanceNoOutputTypeName a) = icodeN 20 InstanceNoOutputTypeName a+  icod_ (InstanceArgWithExplicitArg a) = icodeN 21 InstanceArgWithExplicitArg a+  icod_ WrongInstanceDeclaration     = icodeN 22 WrongInstanceDeclaration    value = vcase valu where       valu [0, a, b]    = valuN UnreachableClauses a b@@ -70,7 +90,18 @@       valu [7, a]       = valuN NicifierIssue a       valu [8, a]       = valuN InversionDepthReached a       valu [9, a]       = valuN UserWarning a-      valu [10, a, b]   = valuN CoverageNoExactSplit a b+      valu [10, a]      = valuN AbsurdPatternRequiresNoRHS a+      valu [11, a, b]   = valuN ModuleDoesntExport a b+      valu [12, a]      = valuN LibraryWarning a+      valu [13, a, b]   = valuN CoverageNoExactSplit a b+      valu [14, a]      = valuN CantGeneralizeOverSorts a+      valu [15, a]      = valuN IllformedAsClause a+      valu [16]         = valuN WithoutKFlagPrimEraseEquality+      valu [17, a]      = valuN InstanceWithExplicitArg a+      valu [18, a, b]   = valuN InfectiveImport a b+      valu [19, a, b]   = valuN CoInfectiveImport a b+      valu [20, a]      = valuN InstanceNoOutputTypeName a+      valu [21, a]      = valuN InstanceArgWithExplicitArg a       valu _ = malformed  instance EmbPrj DeclarationWarning where@@ -90,27 +121,98 @@     InvalidTerminationCheckPragma a   -> icodeN 12 InvalidTerminationCheckPragma a     InvalidNoPositivityCheckPragma a  -> icodeN 13 InvalidNoPositivityCheckPragma a     InvalidCatchallPragma a           -> icodeN 14 InvalidCatchallPragma a-    UnknownFixityInMixfixDecl a       -> icodeN 15 UnknownFixityInMixfixDecl a+    InvalidNoUniverseCheckPragma a    -> icodeN 15 InvalidNoUniverseCheckPragma a+    UnknownFixityInMixfixDecl a       -> icodeN 16 UnknownFixityInMixfixDecl a+    MissingDefinitions a              -> icodeN 17 MissingDefinitions a+    NotAllowedInMutual r a            -> icodeN 18 NotAllowedInMutual r a+    PragmaNoTerminationCheck r        -> icodeN 19 PragmaNoTerminationCheck r+    EmptyGeneralize a                 -> icodeN 20 EmptyGeneralize a+    PragmaCompiled r                  -> icodeN 21 PragmaCompiled r+    EmptyPrimitive a                  -> icodeN 22 EmptyPrimitive a    value = vcase $ \case-    [0, a] -> valueN UnknownNamesInFixityDecl a-    [1, a] -> valueN UnknownNamesInPolarityPragmas a-    [2, a] -> valueN PolarityPragmasButNotPostulates a-    [3, a] -> valueN UselessPrivate a-    [4, a] -> valueN UselessAbstract a-    [5, a] -> valueN UselessInstance a-    [6, a] -> valueN EmptyMutual a-    [7, a] -> valueN EmptyAbstract a-    [8, a] -> valueN EmptyPrivate a-    [9, a] -> valueN EmptyInstance a-    [10,a] -> valueN EmptyMacro a-    [11,a] -> valueN EmptyPostulate a-    [12,a] -> valueN InvalidTerminationCheckPragma a-    [13,a] -> valueN InvalidNoPositivityCheckPragma a-    [14,a] -> valueN InvalidCatchallPragma a+    [0, a]   -> valuN UnknownNamesInFixityDecl a+    [1, a]   -> valuN UnknownNamesInPolarityPragmas a+    [2, a]   -> valuN PolarityPragmasButNotPostulates a+    [3, a]   -> valuN UselessPrivate a+    [4, a]   -> valuN UselessAbstract a+    [5, a]   -> valuN UselessInstance a+    [6, a]   -> valuN EmptyMutual a+    [7, a]   -> valuN EmptyAbstract a+    [8, a]   -> valuN EmptyPrivate a+    [9, a]   -> valuN EmptyInstance a+    [10,a]   -> valuN EmptyMacro a+    [11,a]   -> valuN EmptyPostulate a+    [12,a]   -> valuN InvalidTerminationCheckPragma a+    [13,a]   -> valuN InvalidNoPositivityCheckPragma a+    [14,a]   -> valuN InvalidCatchallPragma a+    [15,a]   -> valuN InvalidNoUniverseCheckPragma a+    [16,a]   -> valuN UnknownFixityInMixfixDecl a+    [17,a]   -> valuN MissingDefinitions a+    [18,r,a] -> valuN NotAllowedInMutual r a+    [19,r]   -> valuN PragmaNoTerminationCheck r+    [20,a]   -> valuN EmptyGeneralize a+    [21,a]   -> valuN PragmaCompiled a+    [22,a]   -> valuN EmptyPrimitive a     _ -> malformed +instance EmbPrj LibWarning where+  icod_ = \case+    LibWarning a b -> icodeN 0 LibWarning a b++  value = vcase $ \case+    [0, a, b]   -> valuN LibWarning a b+    _ -> malformed++instance EmbPrj LibWarning' where+  icod_ = \case+    UnknownField a -> icodeN 0 UnknownField a++  value = vcase $ \case+    [0, a]   -> valuN UnknownField a+    _ -> malformed++instance EmbPrj LibPositionInfo where+  icod_ = \case+    LibPositionInfo a b c -> icodeN 0 LibPositionInfo a b c++  value = vcase $ \case+    [0, a, b, c]   -> valuN LibPositionInfo a b c+    _ -> malformed+ instance EmbPrj Doc where   icod_ d = icodeN' (undefined :: String -> Doc) (render d)    value = valueN text++instance EmbPrj PragmaOptions where+  icod_ = \case+    PragmaOptions a b c d e f g h i j k l m n o p q r s t u v w x y z aa bb cc dd ee ff gg hh ii jj kk ll mm -> icodeN' PragmaOptions a b c d e f g h i j k l m n o p q r s t u v w x y z aa bb cc dd ee ff gg hh ii jj kk ll mm++  value = vcase $ \case+    [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, bb, cc, dd, ee, ff, gg, hh, ii, jj, kk, ll, mm]   -> valuN PragmaOptions a b c d e f g h i j k l m n o p q r s t u v w x y z aa bb cc dd ee ff gg hh ii jj kk ll mm+    _ -> malformed++instance EmbPrj WarningMode where+  icod_ = \case+    WarningMode a b -> icodeN' WarningMode a b++  value = vcase $ \case+    [a, b]   -> valuN WarningMode a b+    _ -> malformed++instance EmbPrj WarningName where+  icod_ x = icod_ (warningName2String x)++  value = (maybe malformed return . string2WarningName) <=< value+++instance EmbPrj CutOff where+  icod_ = \case+    DontCutOff -> icodeN' DontCutOff+    CutOff a -> icodeN 0 CutOff a++  value = vcase valu where+    valu [] = valuN DontCutOff+    valu [0,a] = valuN CutOff a+    valu _ = malformed
src/full/Agda/TypeChecking/Serialise/Instances/Highlighting.hs view
@@ -25,6 +25,7 @@   icod_ HP.Record          = icodeN 8 ()   icod_ HP.Argument        = icodeN 9 ()   icod_ HP.Macro           = icodeN 10 ()+  icod_ HP.Generalizable   = icodeN 11 ()    value = vcase valu where     valu []      = valuN HP.Bound@@ -38,27 +39,32 @@     valu [8]     = valuN HP.Record     valu [9]     = valuN HP.Argument     valu [10]    = valuN HP.Macro+    valu [11]    = valuN HP.Generalizable     valu _       = malformed  instance EmbPrj HP.Aspect where-  icod_ HP.Comment       = icodeN 0 ()-  icod_ HP.Option        = icodeN 1 ()-  icod_ HP.Keyword       = icodeN 2 ()-  icod_ HP.String        = icodeN 3 ()-  icod_ HP.Number        = icodeN 4 ()+  icod_ HP.Comment        = icodeN 0 ()+  icod_ HP.Keyword       = icodeN 1 ()+  icod_ HP.String        = icodeN 2 ()+  icod_ HP.Number        = icodeN 3 ()   icod_ HP.Symbol        = icodeN' HP.Symbol-  icod_ HP.PrimitiveType = icodeN 6 ()-  icod_ (HP.Name mk b)   = icodeN 7 HP.Name mk b+  icod_ HP.PrimitiveType = icodeN 4 ()+  icod_ (HP.Name mk b)   = icodeN 5 HP.Name mk b+  icod_ HP.Pragma        = icodeN 6 ()+  icod_ HP.Background    = icodeN 7 ()+  icod_ HP.Markup        = icodeN 8 ()    value = vcase valu where     valu [0]        = valuN HP.Comment-    valu [1]        = valuN HP.Option-    valu [2]        = valuN HP.Keyword-    valu [3]        = valuN HP.String-    valu [4]        = valuN HP.Number+    valu [1]        = valuN HP.Keyword+    valu [2]        = valuN HP.String+    valu [3]        = valuN HP.Number     valu []         = valuN HP.Symbol-    valu [6]        = valuN HP.PrimitiveType-    valu [7, mk, b] = valuN HP.Name mk b+    valu [4]        = valuN HP.PrimitiveType+    valu [5, mk, b] = valuN HP.Name mk b+    valu [6]        = valuN HP.Pragma+    valu [7]        = valuN HP.Background+    valu [8]        = valuN HP.Markup     valu _          = malformed  instance EmbPrj HP.OtherAspect where@@ -70,7 +76,7 @@   icod_ HP.TypeChecks          = icodeN 5 ()   icod_ HP.UnsolvedConstraint  = icodeN 6 ()   icod_ HP.PositivityProblem   = icodeN 7 ()-  icod_ HP.ReachabilityProblem = icodeN 8 ()+  icod_ HP.Deadcode            = icodeN 8 ()   icod_ HP.CoverageProblem     = icodeN 9 ()   icod_ HP.CatchallClause      = icodeN 10 () @@ -83,7 +89,7 @@     valu [5] = valuN HP.TypeChecks     valu [6] = valuN HP.UnsolvedConstraint     valu [7] = valuN HP.PositivityProblem-    valu [8] = valuN HP.ReachabilityProblem+    valu [8] = valuN HP.Deadcode     valu [9] = valuN HP.CoverageProblem     valu [10] = valuN HP.CatchallClause     valu _   = malformed
src/full/Agda/TypeChecking/Serialise/Instances/Internal.hs view
@@ -16,6 +16,7 @@ import Agda.TypeChecking.Monad import Agda.TypeChecking.CompiledClause import Agda.TypeChecking.Positivity.Occurrence+import Agda.TypeChecking.Coverage.SplitTree  import Agda.Utils.Permutation @@ -52,11 +53,13 @@   value = valueN Drop  instance EmbPrj a => EmbPrj (Elim' a) where-  icod_ (Apply a)  = icodeN' Apply a-  icod_ (Proj a b) = icodeN 0 Proj a b+  icod_ (Apply a)      = icodeN' Apply a+  icod_ (IApply x y a) = icodeN 0 IApply x y a+  icod_ (Proj a b)     = icodeN 0 Proj a b    value = vcase valu where     valu [a]       = valuN Apply a+    valu [0,x,y,a] = valuN IApply x y a     valu [0, a, b] = valuN Proj a b     valu _         = malformed @@ -91,6 +94,7 @@   icod_ (MetaV    a b) = __IMPOSSIBLE__   icod_ (DontCare a  ) = icodeN 8 DontCare a   icod_ (Level    a  ) = icodeN 9 Level a+  icod_ (Dummy s)      = __IMPOSSIBLE__    value = vcase valu where     valu [a]       = valuN var   a@@ -134,20 +138,23 @@  instance EmbPrj I.Sort where   icod_ (Type  a  ) = icodeN 0 Type a-  icod_ Prop        = icodeN' Prop-  icod_ SizeUniv    = icodeN 1 SizeUniv-  icod_ Inf         = icodeN 2 Inf-  icod_ (PiSort a b) = icodeN 3 PiSort a b-  icod_ (UnivSort a) = icodeN 4 UnivSort a+  icod_ (Prop  a  ) = icodeN 1 Prop a+  icod_ SizeUniv    = icodeN 2 SizeUniv+  icod_ Inf         = icodeN 3 Inf+  icod_ (PiSort a b) = icodeN 4 PiSort a b+  icod_ (UnivSort a) = icodeN 5 UnivSort a   icod_ (MetaS a b)  = __IMPOSSIBLE__+  icod_ (DefS a b)   = icodeN 6 DefS a b+  icod_ (DummyS s)   = __IMPOSSIBLE__    value = vcase valu where-    valu []        = valuN Prop     valu [0, a]    = valuN Type  a-    valu [1]       = valuN SizeUniv-    valu [2]       = valuN Inf-    valu [3, a, b] = valuN PiSort a b-    valu [4, a]    = valuN UnivSort a+    valu [1, a]    = valuN Prop  a+    valu [2]       = valuN SizeUniv+    valu [3]       = valuN Inf+    valu [4, a, b] = valuN PiSort a b+    valu [5, a]    = valuN UnivSort a+    valu [6, a, b] = valuN DefS a b     valu _         = malformed  instance EmbPrj DisplayForm where@@ -183,9 +190,12 @@   icod_ (MutId a) = icode a   value n         = MutId `fmap` value n +instance EmbPrj CompKit where+  icod_ (CompKit a b) = icodeN' CompKit a b+  value = valueN CompKit+ instance EmbPrj Definition where-  icod_ (Defn a b c d e f g h i j k l m) =-    icodeN' Defn a b (P.killRange c) d e f g h i j k l m+  icod_ (Defn a b c d e f g h i j k l m n o p) = icodeN' Defn a b (P.killRange c) d e f g h i j k l m n o p    value = valueN Defn @@ -228,8 +238,13 @@    value = valueN ProjLams +instance EmbPrj System where+  icod_ (System a b) = icodeN' System a b++  value = valueN System+ instance EmbPrj ExtLamInfo where-  icod_ (ExtLamInfo a) = icodeN' ExtLamInfo a+  icod_ (ExtLamInfo a b) = icodeN' ExtLamInfo a b    value = valueN ExtLamInfo @@ -253,6 +268,23 @@   value 1 = return NotForced   value _ = malformed +instance EmbPrj NumGeneralizableArgs where+  icod_ NoGeneralizableArgs       = icodeN' NoGeneralizableArgs+  icod_ (SomeGeneralizableArgs a) = icodeN' SomeGeneralizableArgs a++  value = vcase valu where+    valu []  = valuN NoGeneralizableArgs+    valu [a] = valuN SomeGeneralizableArgs a+    valu _   = malformed++instance EmbPrj DoGeneralize where+  icod_ YesGeneralize = return 0+  icod_ NoGeneralize  = return 1++  value 0 = return YesGeneralize+  value 1 = return NoGeneralize+  value _ = malformed+ instance EmbPrj Occurrence where   icod_ StrictPos = return 0   icod_ Mixed     = return 1@@ -279,24 +311,48 @@     valu _     = malformed  instance EmbPrj Defn where-  icod_ Axiom                                   = icodeN 0 Axiom-  icod_ (Function    a b t c d e f g h i j k m) =-    icodeN 1 (\ a b -> Function a b t) a b c d e f g h i j k m-  icod_ (Datatype    a b c d e f g h)           = icodeN 2 Datatype a b c d e f g h-  icod_ (Record      a b c d e f g h i j)       = icodeN 3 Record a b c d e f g h i j-  icod_ (Constructor a b c d e f g h)           = icodeN 4 Constructor a b c d e f g h-  icod_ (Primitive   a b c d e)                 = icodeN 5 Primitive a b c d e-  icod_ AbstractDefn{}                          = __IMPOSSIBLE__+  icod_ Axiom                                           = icodeN 0 Axiom+  icod_ (Function    a b s t (_:_) c d e f g h i j k m) = __IMPOSSIBLE__+  icod_ (Function    a b s t []    c d e f g h i j k m) =+    icodeN 1 (\ a b s -> Function a b s t []) a b s c d e f g h i j k m+  icod_ (Datatype    a b c d e f g h i)                 = icodeN 2 Datatype a b c d e f g h i+  icod_ (Record      a b c d e f g h i j k)             = icodeN 3 Record a b c d e f g h i j k+  icod_ (Constructor a b c d e f g h i)                 = icodeN 4 Constructor a b c d e f g h i+  icod_ (Primitive   a b c d e)                         = icodeN 5 Primitive a b c d e+  icod_ AbstractDefn{}                                  = __IMPOSSIBLE__+  icod_ GeneralizableVar                                = icodeN 6 GeneralizableVar+  icod_ DataOrRecSig{}                                  = __IMPOSSIBLE__    value = vcase valu where-    valu [0]                                     = valuN Axiom-    valu [1, a, b, c, d, e, f, g, h, i, j, k, m] = valuN (\ a b -> Function a b Nothing) a b c d e f g h i j k m-    valu [2, a, b, c, d, e, f, g, h]             = valuN Datatype a b c d e f g h-    valu [3, a, b, c, d, e, f, g, h, i, j]       = valuN Record  a b c d e f g h i j-    valu [4, a, b, c, d, e, f, g, h]             = valuN Constructor a b c d e f g h-    valu [5, a, b, c, d, e]                      = valuN Primitive   a b c d e-    valu _                                       = malformed+    valu [0]                                        = valuN Axiom+    valu [1, a, b, s, c, d, e, f, g, h, i, j, k, m] = valuN (\ a b s -> Function a b s Nothing []) a b s c d e f g h i j k m+    valu [2, a, b, c, d, e, f, g, h, i]             = valuN Datatype a b c d e f g h i+    valu [3, a, b, c, d, e, f, g, h, i, j, k]       = valuN Record  a b c d e f g h i j k+    valu [4, a, b, c, d, e, f, g, h, i]             = valuN Constructor a b c d e f g h i+    valu [5, a, b, c, d, e]                         = valuN Primitive   a b c d e+    valu [6]                                        = valuN GeneralizableVar+    valu _                                          = malformed +instance EmbPrj SplitTag where+  icod_ (SplitCon c)  = icodeN 0 SplitCon c+  icod_ (SplitLit l)  = icodeN 1 SplitLit l+  icod_ SplitCatchall = icodeN' SplitCatchall++  value = vcase valu where+    valu []     = valuN SplitCatchall+    valu [0, c] = valuN SplitCon c+    valu [1, l] = valuN SplitLit l+    valu _      = malformed++instance EmbPrj a => EmbPrj (SplitTree' a) where+  icod_ (SplittingDone a) = icodeN' SplittingDone a+  icod_ (SplitAt a b)     = icodeN 0 SplitAt a b++  value = vcase valu where+    valu [a]       = valuN SplittingDone a+    valu [0, a, b] = valuN SplitAt a b+    valu _         = malformed+ instance EmbPrj FunctionFlag where   icod_ FunStatic       = icodeN 0 FunStatic   icod_ FunInline       = icodeN 1 FunInline@@ -314,7 +370,7 @@   value = valueN WithArity  instance EmbPrj a => EmbPrj (Case a) where-  icod_ (Branches a b c d e f) = icodeN' Branches a b c d e f+  icod_ (Branches a b c d e f g) = icodeN' Branches a b c d e f g    value = valueN Branches @@ -359,7 +415,7 @@   value = valueN Clause  instance EmbPrj I.ConPatternInfo where-  icod_ (ConPatternInfo a b c) = icodeN' ConPatternInfo a b c+  icod_ (ConPatternInfo a b c d) = icodeN' ConPatternInfo a b c d    value = valueN ConPatternInfo @@ -397,6 +453,8 @@   icod_ (LitP a    ) = icodeN 2 LitP a   icod_ (DotP a b  ) = icodeN 3 DotP a b   icod_ (ProjP a b ) = icodeN 4 ProjP a b+  icod_ (IApplyP a b c d) = icodeN 5 IApplyP a b c d+  icod_ (DefP a b c) = icodeN 6 DefP a b c    value = vcase valu where     valu [0, a, b] = valuN VarP a b@@ -404,6 +462,8 @@     valu [2, a]    = valuN LitP a     valu [3, a, b] = valuN DotP a b     valu [4, a, b] = valuN ProjP a b+    valu [5, a, b, c, d] = valuN IApplyP a b c d+    valu [6, a, b, c] = valuN DefP a b c     valu _         = malformed  instance EmbPrj a => EmbPrj (Builtin a) where
src/full/Agda/TypeChecking/SizedTypes.hs view
@@ -7,6 +7,7 @@  import Control.Monad.Writer +import qualified Data.Foldable as Fold import qualified Data.List as List import qualified Data.Map as Map @@ -27,10 +28,14 @@ import Agda.Utils.List as List import Agda.Utils.Maybe import Agda.Utils.Monad+import Agda.Utils.NonemptyList import Agda.Utils.Null+import Agda.Utils.Pretty (Pretty)+import Agda.Utils.Singleton import Agda.Utils.Size import Agda.Utils.Tuple +import qualified Agda.Utils.Pretty as P import qualified Agda.Utils.Warshall as W  #include "undefined.h"@@ -46,15 +51,15 @@   reportSDoc "tc.size" 10 $ do     tel <- getContextTelescope     sep-      [ text "checking that " <+> prettyTCM t <+> text " is not an empty type of sizes"+      [ "checking that " <+> prettyTCM t <+> " is not an empty type of sizes"       , if null tel then empty else do-        text "in context " <+> inTopContext (prettyTCM tel)+        "in context " <+> inTopContext (prettyTCM tel)       ]   reportSLn "tc.size" 60 $ "- raw type = " ++ show t   let postpone :: Term -> TCM ()       postpone t = do         reportSDoc "tc.size.lt" 20 $ sep-          [ text "- postponing `not empty type of sizes' check for " <+> prettyTCM t ]+          [ "- postponing `not empty type of sizes' check for " <+> prettyTCM t ]         addConstraint $ CheckSizeLtSat t   let ok :: TCM ()       ok = reportSLn "tc.size.lt" 20 $ "- succeeded: not an empty type of sizes"@@ -65,13 +70,13 @@       case b of         BoundedNo -> ok         BoundedLt b -> do-          reportSDoc "tc.size.lt" 20 $ text " - type is SIZELT" <+> prettyTCM b+          reportSDoc "tc.size.lt" 20 $ " - type is SIZELT" <+> prettyTCM b           ifBlocked b (\ _ _ -> postpone t) $ \ _ b -> do             reportSLn "tc.size.lt" 20 $ " - size bound is not blocked"             catchConstraint (CheckSizeLtSat t) $ do               unlessM (checkSizeNeverZero b) $ do                 typeError . GenericDocError =<< do-                  text "Possibly empty type of sizes " <+> prettyTCM t+                  "Possibly empty type of sizes " <+> prettyTCM t  -- | Precondition: Term is reduced and not blocked. --   Throws a 'patternViolation' if undecided@@ -99,8 +104,8 @@ --   -- We raise each type to make sense in the current context. --   let ts = zipWith raise [1..] $ map (snd . unDom) doms --   reportSDoc "tc.size" 15 $ sep---     [ text "checking that size " <+> prettyTCM (var i) <+> text " is never 0"---     , text "in context " <+> do sep $ map prettyTCM ts+--     [ "checking that size " <+> prettyTCM (var i) <+> " is never 0"+--     , "in context " <+> do sep $ map prettyTCM ts --     ] --   foldr f (return False) ts --   where@@ -126,7 +131,7 @@ --   Throws a 'patternViolation' if undecided. checkSizeVarNeverZero :: Int -> TCM Bool checkSizeVarNeverZero i = do-  reportSDoc "tc.size" 20 $ text "checkSizeVarNeverZero" <+> prettyTCM (var i)+  reportSDoc "tc.size" 20 $ "checkSizeVarNeverZero" <+> prettyTCM (var i)   -- Looking for the minimal value for size variable i,   -- we can restrict to the last i   -- entries, as only these can contain i in an upper bound.@@ -256,12 +261,12 @@   let loop v = do         v <- reduce v         case v of-          Def x []                   | Just x == inf -> return $ [DSizeInf]+          Def x []                   | Just x == inf -> return $ singleton $ DSizeInf           Def x [Apply u]            | Just x == suc -> maxViewSuc_ (fromJust suc) <$> loop (unArg u)           Def x [Apply u1, Apply u2] | Just x == max -> maxViewMax <$> loop (unArg u1) <*> loop (unArg u2)-          Var i []                      -> return $ [DSizeVar i 0]-          MetaV x us                    -> return $ [DSizeMeta x us 0]-          _                             -> return $ [DOtherSize v]+          Var i []                      -> return $ singleton $ DSizeVar i 0+          MetaV x us                    -> return $ singleton $ DSizeMeta x us 0+          _                             -> return $ singleton $ DOtherSize v   loop v  ------------------------------------------------------------------------@@ -270,9 +275,9 @@  -- | Compare two sizes. compareSizes :: Comparison -> Term -> Term -> TCM ()-compareSizes cmp u v = do+compareSizes cmp u v = verboseBracket "tc.conv.size" 10 "compareSizes" $ do   reportSDoc "tc.conv.size" 10 $ vcat-    [ text "Comparing sizes"+    [ "Comparing sizes"     , nest 2 $ sep [ prettyTCM u <+> prettyTCM cmp                    , prettyTCM v                    ]@@ -281,8 +286,8 @@     u <- reduce u     v <- reduce v     reportSDoc "tc.conv.size" 60 $-      nest 2 $ sep [ text (show u) <+> prettyTCM cmp-                   , text (show v)+      nest 2 $ sep [ pretty u <+> prettyTCM cmp+                   , pretty v                    ]   us <- sizeMaxView u   vs <- sizeMaxView v@@ -291,38 +296,43 @@ -- | Compare two sizes in max view. compareMaxViews :: Comparison -> SizeMaxView -> SizeMaxView -> TCM () compareMaxViews cmp us vs = case (cmp, us, vs) of-  (CmpLeq, _, (DSizeInf : _)) -> return ()-  (cmp,   [u], [v]) -> compareSizeViews cmp u v-  (CmpLeq, us, [v]) -> forM_ us $ \ u -> compareSizeViews cmp u v-  (CmpLeq, us, vs)  -> forM_ us $ \ u -> compareBelowMax u vs-  (CmpEq,  us, vs)  -> compareMaxViews CmpLeq us vs >> compareMaxViews CmpLeq vs us+  (CmpLeq, _, (DSizeInf :! _)) -> return ()+  (cmp, u:![], v:![]) -> compareSizeViews cmp u v+  (CmpLeq, us, v:![]) -> Fold.forM_ us $ \ u -> compareSizeViews cmp u v+  (CmpLeq, us, vs)    -> Fold.forM_ us $ \ u -> compareBelowMax u vs+  (CmpEq,  us, vs)    -> do+    compareMaxViews CmpLeq us vs+    compareMaxViews CmpLeq vs us  -- | @compareBelowMax u vs@ checks @u <= max vs@.  Precondition: @size vs >= 2@ compareBelowMax :: DeepSizeView -> SizeMaxView -> TCM ()-compareBelowMax u vs = do-  reportSDoc "tc.conv.size" 45 $ vcat-    [ text "compareBelowMax"+compareBelowMax u vs = verboseBracket "tc.conv.size" 45 "compareBelowMax" $ do+  reportSDoc "tc.conv.size" 45 $ sep+    [ pretty u+    , pretty CmpLeq+    , pretty vs     ]-  alt (dontAssignMetas $ alts $ map (compareSizeViews CmpLeq u) vs) $ do+  -- When trying several alternatives, we do not assign metas+  -- and also do not produce constraints (see 'giveUp' below).+  -- Andreas, 2019-03-28, issue #3600.+  alt (dontAssignMetas $ Fold.foldr1 alt $ fmap (compareSizeViews CmpLeq u) vs) $ do     reportSDoc "tc.conv.size" 45 $ vcat-      [ text "compareBelowMax: giving up"+      [ "compareBelowMax: giving up"       ]     u <- unDeepSizeView u     v <- unMaxView vs     size <- sizeType-    addConstraint $ ValueCmp CmpLeq size u v-  where alt  c1 c2 = c1 `catchError` const c2-        alts []     = __IMPOSSIBLE__-        alts [c]    = c-        alts (c:cs) = c `alt` alts cs+    giveUp CmpLeq size u v+  where+  alt c1 c2 = c1 `catchError` const c2  compareSizeViews :: Comparison -> DeepSizeView -> DeepSizeView -> TCM () compareSizeViews cmp s1' s2' = do   reportSDoc "tc.conv.size" 45 $ hsep-    [ text "compareSizeViews"-    , text (show s1')-    , text (show cmp)-    , text (show s2')+    [ "compareSizeViews"+    , pretty s1'+    , pretty cmp+    , pretty s2'     ]   size <- sizeType   let (s1, s2) = removeSucs (s1', s2')@@ -352,9 +362,17 @@               compareSizes cmp u'' v              else compareSizes cmp u' =<< sizeSuc 1 v     (CmpLeq, s1,        s2)         -> withUnView $ \ u v -> do-      unlessM (trivial u v) $ addConstraint $ ValueCmp CmpLeq size u v+      unlessM (trivial u v) $ giveUp CmpLeq size u v     (CmpEq, s1, s2) -> continue cmp +-- | If 'envAssignMetas' then postpone as constraint, otherwise, fail hard.+--   Failing is required if we speculatively test several alternatives.+giveUp :: Comparison -> Type -> Term -> Term -> TCM ()+giveUp cmp size u v =+  ifM (asksTC envAssignMetas)+    {-then-} (addConstraint $ ValueCmp CmpLeq size u v)+    {-else-} (typeError $ UnequalTerms cmp u v size)+ -- | Checked whether a size constraint is trivial (like @X <= X+1@). trivial :: Term -> Term -> TCM Bool trivial u v = do@@ -364,9 +382,9 @@           -- Andreas, 2012-02-24  filtering out more trivial constraints fixes           -- test/lib-succeed/SizeInconsistentMeta4.agda     reportSDoc "tc.conv.size" 60 $-      nest 2 $ sep [ if triv then text "trivial constraint" else empty-                   , text (show a) <+> text "<="-                   , text (show b)+      nest 2 $ sep [ if triv then "trivial constraint" else empty+                   , pretty a <+> "<="+                   , pretty b                    ]     return triv   `catchError` \_ -> return False@@ -464,23 +482,24 @@ data OldSizeExpr   = SizeMeta MetaId [Int] -- ^ A size meta applied to de Bruijn indices.   | Rigid Int             -- ^ A de Bruijn index.-  deriving (Eq)+  deriving (Eq, Show) -instance Show OldSizeExpr where-  show (SizeMeta m _) = "X" ++ show (fromIntegral m :: Int)-  show (Rigid i)      = "c" ++ show i+instance Pretty OldSizeExpr where+  pretty (SizeMeta m _) = P.text $ "X" ++ show (fromIntegral m :: Int)+  pretty (Rigid i)      = P.text $ "c" ++ show i  -- | Size constraints we can solve. data OldSizeConstraint   = Leq OldSizeExpr Int OldSizeExpr     -- ^ @Leq a +n b@ represents @a =< b + n@.     --   @Leq a -n b@ represents @a + n =< b@.+  deriving (Show) -instance Show OldSizeConstraint where-  show (Leq a n b)-    | n == 0    = show a ++ " =< " ++ show b-    | n > 0     = show a ++ " =< " ++ show b ++ " + " ++ show n-    | otherwise = show a ++ " + " ++ show (-n) ++ " =< " ++ show b+instance Pretty OldSizeConstraint where+  pretty (Leq a n b)+    | n == 0    = P.pretty a P.<+> "=<" P.<+> P.pretty b+    | n > 0     = P.pretty a P.<+> "=<" P.<+> P.pretty b P.<+> "+" P.<+> P.text (show n)+    | otherwise = P.pretty a P.<+> "+" P.<+> P.text (show (-n)) P.<+> "=<" P.<+> P.pretty b  -- | Compute a set of size constraints that all live in the same context --   from constraints over terms of type size that may live in different@@ -508,7 +527,7 @@   case c of     ValueCmp CmpLeq _ u v -> do         reportSDoc "tc.size.solve" 50 $ sep-          [ text "converting size constraint"+          [ "converting size constraint"           , prettyTCM c           ]         (a, n) <- oldSizeExpr u@@ -526,7 +545,7 @@ oldSizeExpr u = do   u <- reduce u -- Andreas, 2009-02-09.                 -- This is necessary to surface the solutions of metavariables.-  reportSDoc "tc.conv.size" 60 $ text "oldSizeExpr:" <+> prettyTCM u+  reportSDoc "tc.conv.size" 60 $ "oldSizeExpr:" <+> prettyTCM u   s <- sizeView u   case s of     SizeInf     -> patternViolation@@ -538,6 +557,7 @@       _ -> patternViolation   where     isVar (Proj{})  = Nothing+    isVar (IApply _ _ v) = isVar (Apply (defaultArg v))     isVar (Apply v) = case unArg v of       Var i [] -> Just i       _        -> Nothing@@ -597,7 +617,7 @@      let -- Error for giving up         cannotSolve = typeError . GenericDocError =<<-          vcat (text "Cannot solve size constraints" : map prettyTCM cs0)+          vcat ("Cannot solve size constraints" : map prettyTCM cs0)          -- Size metas in constraints.         metas0 :: [(MetaId, Int)]  -- meta id + arity@@ -671,7 +691,7 @@                 v = term e              reportSDoc "tc.size.solve" 20 $ sep-              [ pretty m <+> text ":="+              [ pretty m <+> ":="               , nest 2 $ prettyTCM v               ] 
src/full/Agda/TypeChecking/SizedTypes/Solve.hs view
@@ -56,6 +56,7 @@ import Control.Monad.Reader (asks)  import Data.Foldable (Foldable, foldMap, forM_)+import qualified Data.Foldable as Fold import Data.Function import qualified Data.List as List import Data.Monoid@@ -92,8 +93,9 @@ import Agda.Utils.Function import Agda.Utils.Functor import Agda.Utils.Lens+import Agda.Utils.NonemptyList as NeList -import qualified Agda.Utils.List as List hiding ( uncons )+import qualified Agda.Utils.List as List  import Agda.Utils.Maybe import Agda.Utils.Monad@@ -130,7 +132,7 @@       ] ++ map prettyTCM cs0   let -- Error for giving up       cannotSolve = typeError . GenericDocError =<<-        vcat (text "Cannot solve size constraints" : map prettyTCM cs0)+        vcat ("Cannot solve size constraints" : map prettyTCM cs0)    -- 2. Cluster the constraints by common size metas. @@ -146,9 +148,9 @@       sizeMetaSet `Set.intersection` Set.fromList (allMetas c))    -- Now, some constraints may have no metas (clcs), the others have at least one (othercs).-  let classify :: (a, [b]) -> Either a (a, (b,[b]))+  let classify :: (a, [b]) -> Either a (a, NonemptyList b)       classify (cl, [])     = Left  cl-      classify (cl, (x:xs)) = Right (cl, (x,xs))+      classify (cl, (x:xs)) = Right (cl, x :! xs)   let (clcs, othercs) = List.mapEither classify cms    -- We cluster the constraints by their metas.@@ -163,19 +165,18 @@   -- Solve the clusters.    constrainedMetas <- Set.unions <$> do-    forM  (ccs) $ \ (cs :: [CC]) -> do-      when (null cs) __IMPOSSIBLE__+    forM  (ccs) $ \ (cs :: NonemptyList CC) -> do        -- Convert each constraint in the cluster to the largest context.       -- (Keep fingers crossed). -      enterClosure (List.maximumBy (compare `on` (length . envContext . clEnv)) cs) $ \ _ -> do+      enterClosure (Fold.maximumBy (compare `on` (length . envContext . clEnv)) cs) $ \ _ -> do         -- Get all constraints that can be cast to the longest context.         cs' :: [TCM.Constraint] <- catMaybes <$> do-          mapM (runMaybeT . castConstraintToCurrentContext) cs+          mapM (runMaybeT . castConstraintToCurrentContext) $ toList cs          reportSDoc "tc.size.solve" 20 $ vcat $-          [ text "converted size constraints to context: " <+> do+          [ "converted size constraints to context: " <+> do               tel <- getContextTelescope               inTopContext $ prettyTCM tel           ] ++ map (nest 2 . prettyTCM) cs'@@ -192,7 +193,7 @@     --       for cs0 $ \ Closure{ clValue = ValueCmp _ _ u v } ->     --         allMetas u ++ allMetas v -    -- Set the unconstrained size metas to ∞.+    -- Set the unconstrained, open size metas to ∞.     ms <- S.getSizeMetas False -- do not get interaction metas     unless (null ms) $ do       inf <- primSizeInf@@ -200,8 +201,8 @@         unless (m `Set.member` constrainedMetas) $ do         unlessM (isFrozen m) $ do         reportSDoc "tc.size.solve" 20 $-          text "solution " <+> prettyTCM (MetaV m []) <+>-          text " := "      <+> prettyTCM inf+          "solution " <+> prettyTCM (MetaV m []) <+>+          " := "      <+> prettyTCM inf         assignMeta 0 m t (List.downFrom $ size tel) inf    -- -- Double check.@@ -267,17 +268,17 @@   sigma <- liftTCM $ getModuleParameterSub modN    -- Debug printing.-  reportSDoc "tc.constr.cast" 40 $ text "casting constraint" $$ do+  reportSDoc "tc.constr.cast" 40 $ "casting constraint" $$ do     tel <- getContextTelescope     inTopContext $ nest 2 $ vcat $-      [ text "current module                = " <+> prettyTCM modM-      , text "current module telescope      = " <+> prettyTCM gamma1-      , text "current context               = " <+> prettyTCM tel-      , text "constraint module             = " <+> prettyTCM modN-      , text "constraint module telescope   = " <+> prettyTCM delta1-      , text "constraint context            = " <+> (prettyTCM =<< enterClosure cl (const $ getContextTelescope))-      , text "constraint                    = " <+> enterClosure cl prettyTCM-      , text "module parameter substitution = " <+> prettyTCM sigma+      [ "current module                = " <+> prettyTCM modM+      , "current module telescope      = " <+> prettyTCM gamma1+      , "current context               = " <+> prettyTCM tel+      , "constraint module             = " <+> prettyTCM modN+      , "constraint module telescope   = " <+> prettyTCM delta1+      , "constraint context            = " <+> (prettyTCM =<< enterClosure cl (const $ getContextTelescope))+      , "constraint                    = " <+> enterClosure cl prettyTCM+      , "module parameter substitution = " <+> prettyTCM sigma       ]    -- If gamma2 < 0, we must be in the wrong context.@@ -321,12 +322,12 @@ castConstraintToCurrentContext cl = do   -- The checkpoint of the contraint   let cp = envCurrentCheckpoint $ clEnv cl-  sigma <- caseMaybeM (view $ eCheckpoints . key cp)+  sigma <- caseMaybeM (viewTC $ eCheckpoints . key cp)           (do             -- We are not in a descendant of the constraint checkpoint.             -- Here be dragons!!-            gamma <- asks envContext -- The target context-            let findInGamma (Dom _ (x, t)) =+            gamma <- asksTC envContext -- The target context+            let findInGamma (Dom {unDom = (x, t)}) =                   -- match by name (hazardous)                   -- This is one of the seven deadly sins (not respecting alpha).                   List.findIndex ((x ==) . fst . unDom) gamma@@ -340,9 +341,8 @@             guard $ getAll $ runFree (All . (`VarSet.member` coveredVars)) IgnoreAll (clValue cl)             -- Turn cand into a substitution.             -- Since we ignored the free variables in sorts, we better patch up-            -- the substitution with some dummy term (Sort Prop) rather than __IMPOSSIBLE__.-            let dummy = Sort Prop-            return $ parallelS $ map (maybe dummy var) cand+            -- the substitution with some dummy term rather than __IMPOSSIBLE__.+            return $ parallelS $ map (maybe __DUMMY_TERM__ var) cand           ) return -- Phew, we've got the checkpoint! All is well.   -- Apply substitution to constraint and pray that the Gods are merciful on us.   return $ applySubst sigma (clValue cl)@@ -364,19 +364,19 @@     forM ccs $ \ (c0, HypSizeConstraint cxt hids hs sc) -> do       case simplify1 (\ sc -> return [sc]) sc of         Left _ -> typeError . GenericDocError =<< do-          text "Contradictory size constraint" <+> prettyTCM c0+          "Contradictory size constraint" <+> prettyTCM c0         Right cs -> return $ (c0,) . HypSizeConstraint cxt hids hs <$> cs    -- Cluster constraints according to the meta variables they mention.   -- @csNoM@ are the constraints that do not mention any meta.   let (csNoM, csMs) = (`List.partitionMaybe` ccs') $ \ p@(c0, c) ->-        fmap (p,) $ List.uncons $ map (metaId . sizeMetaId) $ Set.toList $ flexs c+        fmap (p,) $ NeList.fromList $ map (metaId . sizeMetaId) $ Set.toList $ flexs c   -- @css@ are the clusters of constraints.-      css :: [[(CC,HypSizeConstraint)]]+      css :: [NonemptyList (CC,HypSizeConstraint)]       css = cluster' csMs    -- Check that the closed constraints are valid.-  solveCluster flag csNoM+  whenJust (NeList.fromList csNoM) $ solveCluster flag    -- Now, process the clusters.   forM_ css $ solveCluster flag@@ -385,16 +385,16 @@  -- | Solve a cluster of constraints sharing some metas. ---solveCluster :: DefaultToInfty -> [(CC,HypSizeConstraint)] -> TCM ()-solveCluster flag [] = return ()+solveCluster :: DefaultToInfty -> NonemptyList (CC,HypSizeConstraint) -> TCM () solveCluster flag ccs = do-  let cs = map snd ccs+  let cs = fmap snd ccs+  let prettyCs   = map prettyTCM $ NeList.toList cs   let err reason = typeError . GenericDocError =<< do         vcat $-          [ text $ "Cannot solve size constraints" ] ++ map prettyTCM cs +++          [ text $ "Cannot solve size constraints" ] ++ prettyCs ++           [ text $ "Reason: " ++ reason ]   reportSDoc "tc.size.solve" 20 $ vcat $-    [ text "Solving constraint cluster" ] ++ map prettyTCM cs+    [ "Solving constraint cluster" ] ++ prettyCs   -- Find the super context of all contexts. {-   -- We use the @'ctxId'@s.@@ -409,7 +409,7 @@           _          -> a       res = foldl' max (Right ci) cis'       noContext ((c,is),(c',is')) = typeError . GenericDocError =<< vcat-        [ text "Cannot solve size constraints; the following constraints have no common typing context:"+        [ "Cannot solve size constraints; the following constraints have no common typing context:"         , prettyTCM c         , prettyTCM c'         ]@@ -417,7 +417,7 @@ -}   -- We rely on the fact that contexts are only extended...   -- Just take the longest context.-  let HypSizeConstraint gamma hids hs _ = List.maximumBy (compare `on` (length . sizeContext)) cs+  let HypSizeConstraint gamma hids hs _ = Fold.maximumBy (compare `on` (length . sizeContext)) cs   -- Length of longest context.   let n = size gamma @@ -426,11 +426,11 @@   -- Canonicalize the constraints.   -- This is unsound in the presence of hypotheses.       csC :: [SizeConstraint]-      csC = applyWhen (null hs) (mapMaybe canonicalizeSizeConstraint) csL+      csC = applyWhen (null hs) (mapMaybe canonicalizeSizeConstraint) $ NeList.toList csL   reportSDoc "tc.size.solve" 30 $ vcat $-    [ text "Size hypotheses" ] +++    [ "Size hypotheses" ] ++     map (prettyTCM . HypSizeConstraint gamma hids hs) hs ++-    [ text "Canonicalized constraints" ] +++    [ "Canonicalized constraints" ] ++     map (prettyTCM . HypSizeConstraint gamma hids hs) csC    -- -- ALT:@@ -461,8 +461,8 @@   --     csC = for cs $ \ (HypSizeConstraint cxt _ _ c) -> sub (size cxt) c    -- reportSDoc "tc.size.solve" 30 $ vcat $-  --   [ text "Size hypotheses" ]           ++ map prettyC hs ++-  --   [ text "Canonicalized constraints" ] ++ map prettyC csC+  --   [ "Size hypotheses" ]           ++ map prettyC hs +++  --   [ "Canonicalized constraints" ] ++ map prettyC csC    -- Convert size metas to flexible vars.   let metas :: [SizeMeta]@@ -479,7 +479,7 @@   -- --    g :: Size.Graph NamedRigid Int Label   -- g <- either err return $ constraintGraph csF hg   -- reportSDoc "tc.size.solve" 40 $ vcat $-  --   [ text "Constraint graph"+  --   [ "Constraint graph"   --   , text (show g)   --   ] @@ -508,12 +508,12 @@     t <- getMetaType x     reportSDoc "tc.size.solve" 20 $ inTopContext $ modifyContext (const gamma) $ do       let args = map (Apply . defaultArg . var) xs-      text "solution " <+> prettyTCM (MetaV x args) <+> text " := " <+> prettyTCM u+      "solution " <+> prettyTCM (MetaV x args) <+> " := " <+> prettyTCM u     reportSDoc "tc.size.solve" 60 $ vcat       [ text $ "  xs = " ++ show xs       , text $ "  u  = " ++ show u       ]-    ifM (isFrozen x) (return Set.empty) $ do+    ifM (isFrozen x `or2M` (not <$> asksTC envAssignMetas)) (return Set.empty) $ do       assignMeta n x t xs u       return $ Set.singleton x     -- WRONG:@@ -532,7 +532,7 @@   let noIP = Set.null $ Set.intersection ims ms    unless (null ms) $ reportSDoc "tc.size.solve" 30 $ fsep $-    [ text "cluster did not solve these size metas: " ] ++ map prettyTCM (Set.toList ms)+    [ "cluster did not solve these size metas: " ] ++ map prettyTCM (Set.toList ms)    solvedAll <- do     -- If no metas are left, we have solved this cluster completely.@@ -548,12 +548,12 @@         -- If one variable is frozen, we cannot set it (and hence not all) to ∞         let no = do               reportSDoc "tc.size.solve" 30 $-                prettyTCM (MetaV m []) <+> text "is frozen, cannot set it to ∞"+                prettyTCM (MetaV m []) <+> "is frozen, cannot set it to ∞"               return False-        ifM (isFrozen m `or2M` do not <$> asks envAssignMetas) no $ {-else-} do+        ifM (isFrozen m `or2M` do not <$> asksTC envAssignMetas) no $ {-else-} do           reportSDoc "tc.size.solve" 20 $-            text "solution " <+> prettyTCM (MetaV m []) <+>-            text " := "      <+> prettyTCM inf+            "solution " <+> prettyTCM (MetaV m []) <+>+            " := "      <+> prettyTCM inf           t <- jMetaType . mvJudgement <$> lookupMeta m           TelV tel core <- telView t           unlessM (isJust <$> isSizeType core) __IMPOSSIBLE__@@ -562,10 +562,10 @@    -- Double check.   when solvedAll $ do-    let cs0 = map fst ccs+    let cs0 = map fst $ toList ccs         -- Error for giving up         cannotSolve = typeError . GenericDocError =<<-          vcat (text "Cannot solve size constraints" : map prettyTCM cs0)+          vcat ("Cannot solve size constraints" : map prettyTCM cs0)     flip catchError (const cannotSolve) $       noConstraints $         forM_ cs0 $ \ cl -> enterClosure cl solveConstraint@@ -739,7 +739,7 @@       -- text ("[#cxt=" ++ show (size cxt) ++ "]") <+> do       prettyList (map prettyTCM cxtNames) <+> do       applyUnless (null hs)-       (((hcat $ punctuate (text ", ") $ map prettyTCM hs) <+> text "|-") <+>)+       (((hcat $ punctuate ", " $ map prettyTCM hs) <+> "|-") <+>)        (prettyTCM c)  -- | Turn a constraint over de Bruijn indices into a size constraint.@@ -750,7 +750,7 @@     case clValue c of       ValueCmp CmpLeq _ u v -> do         reportSDoc "tc.size.solve" 50 $ sep $-          [ text "converting size constraint"+          [ "converting size constraint"           , prettyTCM c           ]         ma <- sizeExpr u@@ -770,7 +770,7 @@ sizeExpr u = do   u <- reduce u -- Andreas, 2009-02-09.                 -- This is necessary to surface the solutions of metavariables.-  reportSDoc "tc.conv.size" 60 $ text "sizeExpr:" <+> prettyTCM u+  reportSDoc "tc.conv.size" 60 $ "sizeExpr:" <+> prettyTCM u   s <- sizeView u   case s of     SizeInf     -> return $ Just Infty@@ -783,6 +783,7 @@       _           -> return Nothing   where     isVar (Proj{})  = Nothing+    isVar (IApply _ _ v) = isVar (Apply (defaultArg v))     isVar (Apply v) = case unArg v of       Var i [] -> Just i       _        -> Nothing
src/full/Agda/TypeChecking/SizedTypes/Syntax.hs view
@@ -141,7 +141,7 @@  instance (Pretty r, Pretty f) => Pretty (Solution r f) where   pretty (Solution sol) = prettyList $ for (Map.toList sol) $ \ (x, e) ->-    pretty x <+> text ":=" <+> pretty e+    pretty x <+> ":=" <+> pretty e  emptySolution :: Solution r f emptySolution = Solution Map.empty@@ -247,22 +247,22 @@  instance (Pretty r, Pretty f) => Pretty (SizeExpr' r f) where   pretty (Const n)   = pretty n-  pretty (Infty)     = text "∞"+  pretty (Infty)     = "∞"   pretty (Rigid i 0) = pretty i   pretty (Rigid i n) = pretty i <> text ("+" ++ show n)   pretty (Flex  x 0) = pretty x   pretty (Flex  x n) = pretty x <> text ("+" ++ show n)  instance Pretty Polarity where-  pretty Least    = text "-"-  pretty Greatest = text "+"+  pretty Least    = "-"+  pretty Greatest = "+"  instance Pretty flex => Pretty (PolarityAssignment flex) where   pretty (PolarityAssignment pol flex) = pretty pol <> pretty flex  instance Pretty Cmp where-  pretty Le = text "≤"-  pretty Lt = text "<"+  pretty Le = "≤"+  pretty Lt = "<"  instance (Pretty r, Pretty f) => Pretty (Constraint' r f) where   pretty (Constraint a cmp b) = pretty a <+> pretty cmp <+> pretty b
src/full/Agda/TypeChecking/SizedTypes/WarshallSolver.hs view
@@ -103,7 +103,7 @@  instance Pretty Weight where   pretty (Offset x) = pretty x-  pretty Infinity   = text "∞"+  pretty Infinity   = "∞"  instance Ord Weight where   x        <= Infinity = True@@ -200,7 +200,7 @@  instance Pretty Label where   pretty (Label cmp w) = pretty cmp <> pretty w-  pretty LInf          = text "∞"+  pretty LInf          = "∞"  instance MeetSemiLattice Label where   -- one label is neutral@@ -242,8 +242,8 @@   deriving (Show, Eq, Ord)  instance (Pretty rigid, Pretty flex) => Pretty (Node rigid flex) where-  pretty NodeZero      = text "0"-  pretty NodeInfty     = text "∞"+  pretty NodeZero      = "0"+  pretty NodeInfty     = "∞"   pretty (NodeRigid x) = pretty x   pretty (NodeFlex  x) = pretty x 
src/full/Agda/TypeChecking/Sort.hs view
@@ -48,7 +48,8 @@ inferUnivSort :: Sort -> TCM Sort inferUnivSort s = do   s <- reduce s-  case univSort' s of+  ui <- univInf+  case univSort' ui s of     Just s' -> return s'     Nothing -> do       addConstraint $ HasBiggerSort s
src/full/Agda/TypeChecking/Substitute.hs view
@@ -1,6 +1,7 @@-{-# LANGUAGE CPP                  #-}-{-# LANGUAGE DeriveDataTypeable   #-}-{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE BangPatterns       #-}+{-# LANGUAGE CPP                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE UndecidableInstances   #-}  {-# OPTIONS_GHC -fno-warn-orphans #-} @@ -29,13 +30,17 @@ import Debug.Trace (trace) import Language.Haskell.TH.Syntax (thenCmp) -- lexicographic combination of Ordering +import Agda.Interaction.Options+ import Agda.Syntax.Common+import Agda.Syntax.Position import Agda.Syntax.Internal import Agda.Syntax.Internal.Pattern import qualified Agda.Syntax.Abstract as A import Agda.Syntax.Position (Range)  import Agda.TypeChecking.Monad.Base+import Agda.TypeChecking.Monad.Options (typeInType) import Agda.TypeChecking.Free as Free import Agda.TypeChecking.CompiledClause import Agda.TypeChecking.Positivity.Occurrence as Occ@@ -46,7 +51,9 @@ import Agda.Utils.Empty import Agda.Utils.Functor import Agda.Utils.List+import Agda.Utils.Monad import Agda.Utils.Permutation+import Agda.Utils.Pretty import Agda.Utils.Size import Agda.Utils.Tuple import Agda.Utils.HashMap (HashMap)@@ -64,12 +71,14 @@       Lam _ b     ->         case es of           Apply a : es0 -> lazyAbsApp b (unArg a) `applyE` es0+          IApply _ _ a : es0 -> lazyAbsApp b a `applyE` es0           _             -> __IMPOSSIBLE__       MetaV x es' -> MetaV x (es' ++ es)       Lit{}       -> __IMPOSSIBLE__       Level{}     -> __IMPOSSIBLE__       Pi _ _      -> __IMPOSSIBLE__-      Sort _      -> __IMPOSSIBLE__+      Sort s      -> Sort $ s `applyE` es+      Dummy{}     -> __IMPOSSIBLE__       DontCare mv -> dontCare $ mv `applyE` es  -- Andreas, 2011-10-02         -- need to go under DontCare, since "with" might resurrect irrelevant term @@ -79,22 +88,29 @@ canProject f v =   case v of     (Con (ConHead _ _ fs) _ vs) -> do-      i <- List.elemIndex f fs-      isApplyElim =<< headMaybe (drop i vs)+      (fld, i) <- findWithIndex ((f==) . unArg) fs+      -- Andreas, 2018-06-12, issue #2170+      -- The ArgInfo from the ConHead is more accurate (relevance subtyping!).+      setArgInfo (getArgInfo fld) <.> isApplyElim =<< headMaybe (drop i vs)     _ -> Nothing  -- | Eliminate a constructed term. conApp :: ConHead -> ConInfo -> Elims -> Elims -> Term conApp ch                  ci args []             = Con ch ci args conApp ch                  ci args (a@Apply{} : es) = conApp ch ci (args ++ [a]) es+conApp ch                  ci args (a@IApply{} : es) = conApp ch ci (args ++ [a]) es conApp ch@(ConHead c _ fs) ci args (Proj o f : es) =-  let failure = flip trace __IMPOSSIBLE__ $+  let failure err = flip trace err $         "conApp: constructor " ++ show c ++-        " with fields " ++ show fs +++        " with fields\n" ++ unlines (map (("  " ++) . show) fs) +++        " and args\n" ++ unlines (map (("  " ++) . prettyShow) args) ++         " projected by " ++ show f-      isApply e = fromMaybe __IMPOSSIBLE__ $ isApplyElim e-      i = maybe failure id            $ List.elemIndex f fs-      v = maybe failure (argToDontCare . isApply)  $ headMaybe $ drop i args+      isApply e = fromMaybe (failure __IMPOSSIBLE__) $ isApplyElim e+      (fld, i) = fromMaybe (failure __IMPOSSIBLE__) $ findWithIndex ((f==) . unArg) fs+      -- Andreas, 2018-06-12, issue #2170+      -- We safe-guard the projected value by DontCare using the ArgInfo stored at the record constructor,+      -- since the ArgInfo in the constructor application might be inaccurate because of subtyping.+      v = maybe (failure __IMPOSSIBLE__) (relToDontCare fld . argToDontCare . isApply) $ headMaybe $ drop i args   in  applyE v es    -- -- Andreas, 2016-07-20 futile attempt to magically fix ProjOrigin@@ -136,10 +152,13 @@  -- protect irrelevant fields (see issue 610) argToDontCare :: Arg Term -> Term-argToDontCare (Arg ai v)-  | Irrelevant <- getRelevance ai     = dontCare v-  | otherwise                         = v+argToDontCare (Arg ai v) = relToDontCare ai v +relToDontCare :: LensRelevance a => a -> Term -> Term+relToDontCare ai v+  | Irrelevant <- getRelevance ai = dontCare v+  | otherwise                     = v+ -- Andreas, 2016-01-19: In connection with debugging issue #1783, -- I consider the Apply instance for Type harmful, as piApply is not -- safe if the type is not sufficiently reduced.@@ -167,7 +186,10 @@  instance Apply Sort where   applyE s [] = s-  applyE s _  = __IMPOSSIBLE__+  applyE s es = case s of+    MetaS x es' -> MetaS x $ es' ++ es+    DefS  d es' -> DefS  d $ es' ++ es+    _ -> __IMPOSSIBLE__  -- @applyE@ does not make sense for telecopes, definitions, clauses etc. @@ -176,10 +198,14 @@   apply EmptyTel          _        = __IMPOSSIBLE__   apply (ExtendTel _ tel) (t : ts) = lazyAbsApp tel (unArg t) `apply` ts +  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es+ instance Apply Definition where-  apply (Defn info x t pol occ df m c inst copy ma inj d) args =-    Defn info x (piApply t args) (apply pol args) (apply occ args) df m c inst copy ma inj (apply d args)+  apply (Defn info x t pol occ gens gpars df m c inst copy ma nc inj d) args =+    Defn info x (piApply t args) (apply pol args) (apply occ args) (apply gens args) (drop (length args) gpars) df m c inst copy ma nc inj (apply d args) +  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es+ instance Apply RewriteRule where   apply r args =     let newContext = apply (rewContext r) args@@ -194,12 +220,21 @@        , rewType    = applyNLPatSubst sub (rewType r)        } +  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es+ instance {-# OVERLAPPING #-} Apply [Occ.Occurrence] where   apply occ args = List.drop (length args) occ+  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es  instance {-# OVERLAPPING #-} Apply [Polarity] where   apply pol args = List.drop (length args) pol+  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es +instance Apply NumGeneralizableArgs where+  apply NoGeneralizableArgs       args = NoGeneralizableArgs+  apply (SomeGeneralizableArgs n) args = SomeGeneralizableArgs (n - length args)+  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es+ -- | Make sure we only drop variable patterns. instance {-# OVERLAPPING #-} Apply [NamedArg (Pattern' a)] where   apply ps args = loop (length args) ps@@ -213,34 +248,45 @@             DotP{}  -> __IMPOSSIBLE__             LitP{}  -> __IMPOSSIBLE__             ConP{}  -> __IMPOSSIBLE__+            DefP{}  -> __IMPOSSIBLE__             ProjP{} -> __IMPOSSIBLE__+            IApplyP{} -> recurse +  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es+ instance Apply Projection where   apply p args = p     { projIndex = projIndex p - size args     , projLams  = projLams p `apply` args     }+  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es  instance Apply ProjLams where   apply (ProjLams lams) args = ProjLams $ List.drop (length args) lams+  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es  instance Apply Defn where   apply d [] = d   apply d args = case d of     Axiom{} -> d+    DataOrRecSig n -> DataOrRecSig (n - length args)+    GeneralizableVar{} -> d     AbstractDefn d -> AbstractDefn $ apply d args     Function{ funClauses = cs, funCompiled = cc, funInv = inv+            , funExtLam = extLam             , funProjection = Nothing } ->       d { funClauses    = apply cs args         , funCompiled   = apply cc args         , funInv        = apply inv args+        , funExtLam     = modifySystem (`apply` args) <$> extLam         }      Function{ funClauses = cs, funCompiled = cc, funInv = inv+            , funExtLam = extLam             , funProjection = Just p0} ->       case p0 `apply` args of         p@Projection{ projIndex = n }-          | n < 0     -> __IMPOSSIBLE__+          | n < 0     -> d { funProjection = __IMPOSSIBLE__ } -- TODO (#3123): we actually get here!           -- case: applied only to parameters           | n > 0     -> d { funProjection = Just p }           -- case: applied also to record value (n == 0)@@ -249,6 +295,7 @@                 , funCompiled       = apply cc args'                 , funInv            = apply inv args'                 , funProjection     = if isVar0 then Just p{ projIndex = 0 } else Nothing+                , funExtLam         = modifySystem (\ _ -> __IMPOSSIBLE__) <$> extLam                 }               where                 larg  = last args -- the record value@@ -283,8 +330,11 @@     Primitive{ primClauses = cs } ->       d { primClauses = apply cs args } +  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es+ instance Apply PrimFun where-    apply (PrimFun x ar def) args   = PrimFun x (ar - size args) $ \vs -> def (args ++ vs)+  apply (PrimFun x ar def) args = PrimFun x (ar - size args) $ \ vs -> def (args ++ vs)+  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es  instance Apply Clause where     -- This one is a little bit tricksy after the parameter refinement change.@@ -342,8 +392,11 @@               where v' = raise (n - 1) v             DotP{}  -> mkSub tm n ps vs             ConP c _ ps' -> mkSub tm n (ps' ++ ps) (projections c v ++ vs)+            DefP o q ps' -> mkSub tm n (ps' ++ ps) vs             LitP{}  -> __IMPOSSIBLE__             ProjP{} -> __IMPOSSIBLE__+            IApplyP _ _ _ (DBPatVar _ i) -> mkSub tm (n - 1) (substP i v' ps) vs `composeS` singletonS i (tm v')+              where v' = raise (n - 1) v         mkSub _ _ _ _ = __IMPOSSIBLE__          -- The parameter patterns 'ps' are all variables or dot patterns, or eta@@ -362,17 +415,21 @@             VarP _ (DBPatVar _ i) -> newTel (n - 1) (subTel (size tel - 1 - i) v tel) (substP i (raise (n - 1) v) ps) vs             DotP{}              -> newTel n tel ps vs             ConP c _ ps'        -> newTel n tel (ps' ++ ps) (projections c v ++ vs)+            DefP _ q ps'        -> newTel n tel (ps' ++ ps) vs             LitP{}              -> __IMPOSSIBLE__             ProjP{}             -> __IMPOSSIBLE__+            IApplyP _ _ _ (DBPatVar _ i) -> newTel (n - 1) (subTel (size tel - 1 - i) v tel) (substP i (raise (n - 1) v) ps) vs         newTel _ tel _ _ = __IMPOSSIBLE__ -        projections c v = [ applyE v [Proj ProjSystem f] | f <- conFields c ]+        projections c v = [ relToDontCare ai $ applyE v [Proj ProjSystem f] | Arg ai f <- conFields c ]          -- subTel i v (Δ₁ (xᵢ : A) Δ₂) = Δ₁ Δ₂[xᵢ = v]         subTel i v EmptyTel = __IMPOSSIBLE__         subTel 0 v (ExtendTel _ tel) = absApp tel v         subTel i v (ExtendTel a tel) = ExtendTel a $ subTel (i - 1) (raise 1 v) <$> tel +    applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es+ instance Apply CompiledClauses where   apply cc args = case cc of     Fail     -> Fail@@ -386,21 +443,45 @@       | otherwise -> __IMPOSSIBLE__     where       len = length args+  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es +instance Apply ExtLamInfo where+  apply (ExtLamInfo m sys) args = ExtLamInfo m (apply sys args)+  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es++instance Apply System where+  -- We assume we apply a system only to arguments introduced by+  -- lambda lifting.+  apply (System tel sys) args+      = if nargs > ntel then __IMPOSSIBLE__+        else System newTel (map (map (f -*- id) -*- f) sys)++    where+      f = applySubst sigma+      nargs = length args+      ntel = size tel+      newTel = apply tel args+      -- newTel ⊢ σ : tel+      sigma = liftS (ntel - nargs) (parallelS (reverse $ map unArg args))++  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es+ instance Apply a => Apply (WithArity a) where   apply  (WithArity n a) args = WithArity n $ apply  a args   applyE (WithArity n a) es   = WithArity n $ applyE a es  instance Apply a => Apply (Case a) where-  apply (Branches cop cs eta ls m lz) args =-    Branches cop (apply cs args) (second (`apply` args) <$> eta) (apply ls args) (apply m args) lz-  applyE (Branches cop cs eta ls m lz) es =-    Branches cop (applyE cs es) (second (`applyE` es) <$> eta)(applyE ls es) (applyE m es) lz+  apply (Branches cop cs eta ls m b lz) args =+    Branches cop (apply cs args) (second (`apply` args) <$> eta) (apply ls args) (apply m args) b lz+  applyE (Branches cop cs eta ls m b lz) es =+    Branches cop (applyE cs es) (second (`applyE` es) <$> eta)(applyE ls es) (applyE m es) b lz  instance Apply FunctionInverse where   apply NotInjective  args = NotInjective   apply (Inverse inv) args = Inverse $ apply inv args +  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es+ instance Apply DisplayTerm where   apply (DTerm v)          args = DTerm $ apply v args   apply (DDot v)           args = DDot  $ apply v args@@ -445,6 +526,7 @@  instance DoDrop a => Apply (Drop a) where   apply x args = dropMore (size args) x+  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es  instance DoDrop a => Abstract (Drop a) where   abstract tel x = unDrop (size tel) x@@ -456,6 +538,8 @@     where       m = size args +  applyE t es = apply t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es+ instance Abstract Permutation where   abstract tel (Perm n xs) = Perm (n + m) $ [0..m - 1] ++ map (+ m) xs     where@@ -492,8 +576,9 @@   ExtendTel arg xtel `abstract` tel = ExtendTel arg $ xtel <&> (`abstract` tel)  instance Abstract Definition where-  abstract tel (Defn info x t pol occ df m c inst copy ma inj d) =-    Defn info x (abstract tel t) (abstract tel pol) (abstract tel occ) df m c inst copy ma inj (abstract tel d)+  abstract tel (Defn info x t pol occ gens gpars df m c inst copy ma nc inj d) =+    Defn info x (abstract tel t) (abstract tel pol) (abstract tel occ) (abstract tel gens)+                (replicate (size tel) Nothing ++ gpars) df m c inst copy ma nc inj (abstract tel d)  -- | @tel ⊢ (Γ ⊢ lhs ↦ rhs : t)@ becomes @tel, Γ ⊢ lhs ↦ rhs : t)@ --   we do not need to change lhs, rhs, and t since they live in Γ.@@ -510,6 +595,10 @@   abstract tel []  = []   abstract tel pol = replicate (size tel) Invariant ++ pol -- TODO: check polarity +instance Abstract NumGeneralizableArgs where+  abstract tel NoGeneralizableArgs       = NoGeneralizableArgs+  abstract tel (SomeGeneralizableArgs n) = SomeGeneralizableArgs (size tel + n)+ instance Abstract Projection where   abstract tel p = p     { projIndex = size tel + projIndex p@@ -518,19 +607,27 @@  instance Abstract ProjLams where   abstract tel (ProjLams lams) = ProjLams $-    map (\ (Dom ai (x, _)) -> Arg ai x) (telToList tel) ++ lams+    map (\ !dom -> argFromDom (fst <$> dom)) (telToList tel) ++ lams +instance Abstract System where+  abstract tel (System tel1 sys) = System (abstract tel tel1) sys+ instance Abstract Defn where   abstract tel d = case d of     Axiom{} -> d+    DataOrRecSig n -> DataOrRecSig (size tel + n)+    GeneralizableVar{} -> d     AbstractDefn d -> AbstractDefn $ abstract tel d     Function{ funClauses = cs, funCompiled = cc, funInv = inv+            , funExtLam = extLam             , funProjection = Nothing  } ->       d { funClauses  = abstract tel cs         , funCompiled = abstract tel cc         , funInv      = abstract tel inv+        , funExtLam   = modifySystem (abstract tel) <$> extLam         }     Function{ funClauses = cs, funCompiled = cc, funInv = inv+            , funExtLam = extLam             , funProjection = Just p } ->       -- Andreas, 2015-05-11 if projection was applied to Var 0       -- then abstract over last element of tel (the others are params).@@ -538,6 +635,7 @@         d' { funClauses  = abstract tel1 cs            , funCompiled = abstract tel1 cc            , funInv      = abstract tel1 inv+           , funExtLam   = modifySystem (\ _ -> __IMPOSSIBLE__) <$> extLam            }         where           d' = d { funProjection = Just $ abstract tel p }@@ -581,17 +679,17 @@   abstract tel (WithArity n a) = WithArity n $ abstract tel a  instance Abstract a => Abstract (Case a) where-  abstract tel (Branches cop cs eta ls m lz) =+  abstract tel (Branches cop cs eta ls m b lz) =     Branches cop (abstract tel cs) (second (abstract tel) <$> eta)-                 (abstract tel ls) (abstract tel m) lz+                 (abstract tel ls) (abstract tel m) b lz  telVars :: Int -> Telescope -> [Arg DeBruijnPattern] telVars m = map (fmap namedThing) . (namedTelVars m)  namedTelVars :: Int -> Telescope -> [NamedArg DeBruijnPattern] namedTelVars m EmptyTel                     = []-namedTelVars m (ExtendTel (Dom info a) tel) =-  Arg info (namedDBVarP (m-1) $ absName tel) :+namedTelVars m (ExtendTel !dom tel) =+  Arg (domInfo dom) (namedDBVarP (m-1) $ absName tel) :   namedTelVars (m-1) (unAbs tel)  instance Abstract FunctionInverse where@@ -613,7 +711,7 @@ abstractArgs :: Abstract a => Args -> a -> a abstractArgs args x = abstract tel x     where-        tel   = foldr (\(Arg info x) -> ExtendTel (Dom info $ sort Prop) . Abs x)+        tel   = foldr (\arg@(Arg info x) -> ExtendTel (__DUMMY_TYPE__ <$ domFromArg arg) . Abs x)                       EmptyTel               $ zipWith (<$) names args         names = cycle $ map (stringToArgName . (:[])) ['a'..'z']@@ -654,6 +752,7 @@     Pi a b      -> uncurry Pi $ applySubst rho (a,b)     Sort s      -> Sort $ applySubst rho s     DontCare mv -> dontCare $ applySubst rho mv+    Dummy{}     -> t  instance Subst Term a => Subst Term (Type' a) where   applySubst rho (El s t) = applySubst rho s `El` applySubst rho t@@ -661,12 +760,14 @@ instance Subst Term Sort where   applySubst rho s = case s of     Type n     -> Type $ sub n-    Prop       -> Prop+    Prop n     -> Prop $ sub n     Inf        -> Inf     SizeUniv   -> SizeUniv     PiSort s1 s2 -> piSort (sub s1) (sub s2)-    UnivSort s -> univSort $ sub s+    UnivSort s -> univSort Nothing $ sub s     MetaS x es -> MetaS x $ sub es+    DefS d es  -> DefS d $ sub es+    DummyS{}   -> s     where sub x = applySubst rho x  instance Subst Term Level where@@ -694,10 +795,12 @@ instance Subst Term Pattern where   applySubst rho p = case p of     ConP c mt ps -> ConP c (applySubst rho mt) $ applySubst rho ps+    DefP o q ps  -> DefP o q $ applySubst rho ps     DotP o t     -> DotP o $ applySubst rho t     VarP o s     -> p     LitP l       -> p     ProjP{}      -> p+    IApplyP o t u x -> IApplyP o (applySubst rho t) (applySubst rho u) x  instance Subst Term A.ProblemEq where   applySubst rho (A.ProblemEq p v a) =@@ -783,6 +886,7 @@ instance Subst Term Constraint where   applySubst rho c = case c of     ValueCmp cmp a u v       -> ValueCmp cmp (rf a) (rf u) (rf v)+    ValueCmpOnFace cmp p t u v -> ValueCmpOnFace cmp (rf p) (rf t) (rf u) (rf v)     ElimCmp ps fs a v e1 e2  -> ElimCmp ps fs (rf a) (rf v) (rf e1) (rf e2)     TypeCmp cmp a b          -> TypeCmp cmp (rf a) (rf b)     TelCmp a b cmp tel1 tel2 -> TelCmp (rf a) (rf b) cmp (rf tel1) (rf tel2)@@ -791,17 +895,19 @@     Guarded c cs             -> Guarded (rf c) cs     IsEmpty r a              -> IsEmpty r (rf a)     CheckSizeLtSat t         -> CheckSizeLtSat (rf t)-    FindInScope m b cands    -> FindInScope m b (rf cands)+    FindInstance m b cands   -> FindInstance m b (rf cands)     UnBlock{}                -> c     CheckFunDef{}            -> c     HasBiggerSort s          -> HasBiggerSort (rf s)     HasPTSRule s1 s2         -> HasPTSRule (rf s1) (rf s2)+    UnquoteTactic m t h g    -> UnquoteTactic m (rf t) (rf h) (rf g)     where       rf x = applySubst rho x  instance Subst t a => Subst t (Elim' a) where   applySubst rho e = case e of     Apply v -> Apply $ applySubst rho v+    IApply x y r -> IApply (applySubst rho x) (applySubst rho y) (applySubst rho r)     Proj{}  -> e  instance Subst t a => Subst t (Abs a) where@@ -841,7 +947,7 @@   applySubst rho (x,y,z,u) = (applySubst rho x, applySubst rho y, applySubst rho z, applySubst rho u)  instance Subst Term Candidate where-  applySubst rho (Candidate u t eti ov) = Candidate (applySubst rho u) (applySubst rho t) eti ov+  applySubst rho (Candidate u t ov) = Candidate (applySubst rho u) (applySubst rho t) ov  instance Subst Term EqualityView where   applySubst rho (OtherType t) = OtherType@@ -875,11 +981,13 @@   Just _          -> case p of     (VarP _ x) -> VarP o x     (DotP _ u) -> DotP o u-    (ConP c (ConPatternInfo (Just _) b l) ps)-      -> ConP c (ConPatternInfo (Just o) b l) ps+    (ConP c (ConPatternInfo (Just _) ft b l) ps)+      -> ConP c (ConPatternInfo (Just o) ft b l) ps+    DefP _ q ps -> DefP o q ps     ConP{}  -> __IMPOSSIBLE__     LitP{}  -> __IMPOSSIBLE__     ProjP{} -> __IMPOSSIBLE__+    (IApplyP _ t u x) -> IApplyP o t u x  instance Subst DeBruijnPattern DeBruijnPattern where   applySubst IdS p = p@@ -890,8 +998,13 @@       lookupS rho $ dbPatVarIndex x     DotP o u     -> DotP o $ applyPatSubst rho u     ConP c ci ps -> ConP c ci $ applySubst rho ps+    DefP o q ps  -> DefP o q $ applySubst rho ps     LitP x       -> p     ProjP{}      -> p+    IApplyP o t u x -> case useName (dbPatVarName x) $ lookupS rho $ dbPatVarIndex x of+                        IApplyP _ _ _ y -> IApplyP o (applyPatSubst rho t) (applyPatSubst rho u) y+                        VarP  _ y -> IApplyP o (applyPatSubst rho t) (applyPatSubst rho u) y+                        _ -> __IMPOSSIBLE__     where       useName :: PatVarName -> DeBruijnPattern -> DeBruijnPattern       useName n (VarP o x)@@ -966,21 +1079,26 @@ bindsToTel = bindsToTel' nameToArgName  -- | Turn a typed binding @(x1 .. xn : A)@ into a telescope.-bindsWithHidingToTel' :: (Name -> a) -> [WithHiding Name] -> Dom Type -> ListTel' a-bindsWithHidingToTel' f []                    t = []-bindsWithHidingToTel' f (WithHiding h x : xs) t =-  fmap (f x,) (mapHiding (mappend h) t) : bindsWithHidingToTel' f xs (raise 1 t)--bindsWithHidingToTel :: [WithHiding Name] -> Dom Type -> ListTel-bindsWithHidingToTel = bindsWithHidingToTel' nameToArgName+namedBindsToTel :: [NamedArg Name] -> Type -> Telescope+namedBindsToTel []       t = EmptyTel+namedBindsToTel (x : xs) t =+  ExtendTel (t <$ domFromNamedArgName x) $ Abs (nameToArgName $ namedArg x) $ namedBindsToTel xs (raise 1 t) +domFromNamedArgName :: NamedArg Name -> Dom ()+domFromNamedArgName x = () <$ domFromNamedArg (fmap forceName x)+  where+    -- If no explicit name is given we use the bound name for the label.+    forceName (Named Nothing x) = Named (Just $ Ranged (getRange x) $ nameToArgName x) x+    forceName x = x  -- ** Abstracting in terms and types  -- | @mkPi dom t = telePi (telFromList [dom]) t@ mkPi :: Dom (ArgName, Type) -> Type -> Type-mkPi (Dom info (x, a)) b = el $ Pi (Dom info a) (mkAbs x b)+mkPi !dom b = el $ Pi a (mkAbs x b)   where+    x = fst $ unDom dom+    a = snd <$> dom     el = El $ piSort (getSort a) (Abs x (getSort b)) -- piSort checks x freeIn  mkLam :: Arg ArgName -> Term -> Term@@ -1015,7 +1133,7 @@   teleNoAbs :: a -> Term -> Term  instance TeleNoAbs ListTel where-  teleNoAbs tel t = foldr (\ (Dom ai (x, _)) -> Lam ai . NoAbs x) t tel+  teleNoAbs tel t = foldr (\ (Dom{domInfo = ai, unDom = (x, _)}) -> Lam ai . NoAbs x) t tel  instance TeleNoAbs Telescope where   teleNoAbs tel = teleNoAbs $ telToList tel@@ -1097,8 +1215,19 @@   Level l    == Level l'     = l == l'   MetaV m vs == MetaV m' vs' = m == m' && vs == vs'   DontCare _ == DontCare _   = True+  Dummy{}    == Dummy{}      = True   _          == _            = False +instance Eq a => Eq (Pattern' a) where+  VarP _ x        == VarP _ y          = x == y+  DotP _ u        == DotP _ v          = u == v+  ConP c _ ps     == ConP c' _ qs      = c == c && ps == qs+  LitP l          == LitP l'           = l == l'+  ProjP _ f       == ProjP _ g         = f == g+  IApplyP _ u v x == IApplyP _ u' v' y = u == u' && v == v' && x == y+  DefP _ f ps     == DefP _ g qs       = f == g && ps == qs+  _               == _                 = False+ instance Ord Term where   Var a b    `compare` Var x y    = compare x a `thenCmp` compare b y -- sort de Bruijn indices down (#2765)   Var{}      `compare` _          = LT@@ -1128,6 +1257,9 @@   MetaV{}    `compare` _          = LT   _          `compare` MetaV{}    = GT   DontCare{} `compare` DontCare{} = EQ+  DontCare{} `compare` _          = LT+  _          `compare` DontCare{} = GT+  Dummy{}    `compare` Dummy{}    = EQ  -- Andreas, 2017-10-04, issue #2775, ignore irrelevant arguments during with-abstraction. --@@ -1165,26 +1297,39 @@ instance (Subst t a, Eq a)  => Eq  (Elim' a) where   Apply  a == Apply  b = a == b   Proj _ x == Proj _ y = x == y+  IApply x y r == IApply x' y' r' = x == x' && y == y' && r == r'   _ == _ = False  instance (Subst t a, Ord a) => Ord (Elim' a) where   Apply  a `compare` Apply  b = a `compare` b   Proj _ x `compare` Proj _ y = x `compare` y-  Apply{}  `compare` Proj{}   = LT-  Proj{}   `compare` Apply{}  = GT+  IApply x y r `compare` IApply x' y' r' = compare x x' `mappend` compare y y' `mappend` compare r r'+  Apply{}  `compare` _        = LT+  _        `compare` Apply{}  = GT+  Proj{}   `compare` _        = LT+  _        `compare` Proj{}   = GT + --------------------------------------------------------------------------- -- * Sort stuff ---------------------------------------------------------------------------  -- | Get the next higher sort.-univSort' :: Sort -> Maybe Sort-univSort' (Type l) = Just $ Type $ levelSuc l-univSort' s        = Nothing+univSort' :: Maybe Sort -> Sort -> Maybe Sort+univSort' univInf (Type l) = Just $ Type $ levelSuc l+univSort' univInf (Prop l) = Just $ Type $ levelSuc l+univSort' univInf Inf      = univInf+univSort' univInf s        = Nothing -univSort :: Sort -> Sort-univSort s = fromMaybe (UnivSort s) $ univSort' s+univSort :: Maybe Sort -> Sort -> Sort+univSort univInf s = fromMaybe (UnivSort s) $ univSort' univInf s +univInf :: (HasOptions m) => m (Maybe Sort)+univInf =+  ifM ((optOmegaInOmega <$> pragmaOptions) `or2M` typeInType)+  {-then-} (return $ Just Inf)+  {-else-} (return Nothing)+ -- | Compute the sort of a function type from the sorts of its --   domain and codomain. funSort' :: Sort -> Sort -> Maybe Sort@@ -1194,6 +1339,9 @@   (Type (Max as) , Type (Max bs)) -> Just $ Type $ levelMax $ as ++ bs   (SizeUniv      , b            ) -> Just b   (_             , SizeUniv     ) -> Just SizeUniv+  (Prop (Max as) , Type (Max bs)) -> Just $ Type $ levelMax $ as ++ bs+  (Type (Max as) , Prop (Max bs)) -> Just $ Prop $ levelMax $ as ++ bs+  (Prop (Max as) , Prop (Max bs)) -> Just $ Prop $ levelMax $ as ++ bs   (a             , b            ) -> Nothing  funSort :: Sort -> Sort -> Sort@@ -1204,7 +1352,9 @@ piSort' :: Sort -> Abs Sort -> Maybe Sort piSort' a      (NoAbs _ b) = funSort' a b piSort' a bAbs@(Abs   _ b) = case occurrence 0 b of-    NoOccurrence  -> funSort' a $ noabsApp {-'-} __IMPOSSIBLE__ bAbs+    -- Andreas, Jesper, AIM XXIX, 2019-03-18, issue #3631+    -- Remember the NoAbs here!+    NoOccurrence  -> Just $ funSort a $ noabsApp __IMPOSSIBLE__ bAbs     -- Andreas, 2017-01-18, issue #2408:     -- The sort of @.(a : A) → Set (f a)@ in context @f : .A → Level@     -- is @dLub Set λ a → Set (lsuc (f a))@, but @DLub@s are not serialized.
src/full/Agda/TypeChecking/Substitute/Class.hs view
@@ -3,6 +3,7 @@ module Agda.TypeChecking.Substitute.Class where  import Control.Arrow ((***), second)+import Data.Maybe  import Agda.Syntax.Common import Agda.Syntax.Internal@@ -11,6 +12,7 @@ import Agda.TypeChecking.Substitute.DeBruijn  import Agda.Utils.Empty+import Agda.Utils.List  #include "undefined.h" import Agda.Utils.Impossible@@ -26,7 +28,10 @@   applyE :: t -> Elims -> t    apply t args = applyE t $ map Apply args-  applyE t es  = apply  t $ map argFromElim es+  -- Andreas, 2018-06-18, issue #3136+  -- This default instance should be removed to get more precise+  -- crash locations (raise the IMPOSSIBLE in a more specific place).+  -- applyE t es  = apply  t $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es     -- precondition: all @es@ are @Apply@s  -- | Apply to some default arguments.@@ -198,9 +203,7 @@  -- | Γ ⊢ (strengthenS ⊥ |Δ|) : Γ,Δ strengthenS :: Empty -> Int -> Substitution' a-strengthenS err n-  | n < 0     = __IMPOSSIBLE__-  | otherwise = iterate (Strengthen err) idS !! n+strengthenS err = indexWithDefault __IMPOSSIBLE__ $ iterate (Strengthen err) idS  lookupS :: Subst a a => Substitution' a -> Nat -> a lookupS rho i = case rho of
src/full/Agda/TypeChecking/Substitute/DeBruijn.hs view
@@ -52,3 +52,7 @@       Max [p] -> deBruijnView p       _ -> Nothing +instance DeBruijn DBPatVar where+  debruijnNamedVar = DBPatVar+  deBruijnView = Just . dbPatVarIndex+
src/full/Agda/TypeChecking/SyntacticEquality.hs view
@@ -18,10 +18,12 @@ import Control.Arrow ((***)) import Control.Monad.State hiding (mapM) +import Agda.Interaction.Options (optSyntacticEquality)+ import Agda.Syntax.Common import Agda.Syntax.Internal -import Agda.TypeChecking.Monad (ReduceM)+import Agda.TypeChecking.Monad (ReduceM, MonadReduce(..), pragmaOptions) import Agda.TypeChecking.Reduce import Agda.TypeChecking.Reduce.Monad import Agda.TypeChecking.Substitute@@ -42,8 +44,11 @@  {-# SPECIALIZE checkSyntacticEquality :: Term -> Term -> ReduceM ((Term, Term), Bool) #-} {-# SPECIALIZE checkSyntacticEquality :: Type -> Type -> ReduceM ((Type, Type), Bool) #-}-checkSyntacticEquality :: (SynEq a) => a -> a -> ReduceM ((a, a), Bool)-checkSyntacticEquality v v' = synEq v v' `runStateT` True+checkSyntacticEquality :: (SynEq a, MonadReduce m) => a -> a -> m ((a, a), Bool)+checkSyntacticEquality v v' = liftReduce $ do+  ifM (optSyntacticEquality <$> pragmaOptions)+  {-then-} (synEq v v' `runStateT` True)+  {-else-} (return ((v,v'), False))  -- | Monad for checking syntactic equality type SynEqM = StateT Bool ReduceM@@ -74,6 +79,10 @@   synEq' :: a -> a -> SynEqM (a,a)   synEq' a a' = ifEqual (uncurry synEq) (a, a') +instance SynEq Bool where+  synEq x y | x == y = return (x,y)+  synEq x y | otherwise = inequal (x,y)+ -- | Syntactic term equality ignores 'DontCare' stuff. instance SynEq Term where   synEq v v' = do@@ -84,13 +93,14 @@       (Def   f vs, Def   f' vs') | f == f' -> Def f   <$$> synEq vs vs'       (MetaV x vs, MetaV x' vs') | x == x' -> MetaV x <$$> synEq vs vs'       (Lit   l   , Lit   l'    ) | l == l' -> pure2 $ v-      (Lam   h b , Lam   h' b' ) | h == h' -> Lam h   <$$> synEq b b'+      (Lam   h b , Lam   h' b' )           -> Lam <$$> synEq h h' <**> synEq b b'       (Level l   , Level l'    )           -> levelTm <$$> synEq l l'       (Sort  s   , Sort  s'    )           -> Sort    <$$> synEq s s'       (Pi    a b , Pi    a' b' )           -> Pi      <$$> synEq a a' <**> synEq' b b'       (DontCare _, DontCare _  )           -> pure (v, v')          -- Irrelevant things are syntactically equal. ALT:          -- DontCare <$$> synEq v v'+      (Dummy{}   , Dummy{}     )           -> pure (v, v')       _                                    -> inequal (v, v')  instance SynEq Level where@@ -128,11 +138,13 @@     case (s, s') of       (Type l  , Type l'   ) -> Type <$$> synEq l l'       (PiSort a b, PiSort a' b') -> piSort <$$> synEq a a' <**> synEq' b b'-      (UnivSort a, UnivSort a') -> univSort <$$> synEq a a'+      (UnivSort a, UnivSort a') -> UnivSort <$$> synEq a a'       (SizeUniv, SizeUniv  ) -> pure2 s-      (Prop    , Prop      ) -> pure2 s+      (Prop l  , Prop l'   ) -> Prop <$$> synEq l l'       (Inf     , Inf       ) -> pure2 s       (MetaS x es , MetaS x' es') | x == x' -> MetaS x <$$> synEq es es'+      (DefS  d es , DefS  d' es') | d == d' -> DefS d  <$$> synEq es es'+      (DummyS{}, DummyS{}) -> pure (s, s')       _ -> inequal (s, s')  -- | Syntactic equality ignores sorts.@@ -149,6 +161,8 @@     case (e, e') of       (Proj _ f, Proj _ f') | f == f' -> pure2 e       (Apply a, Apply a') -> Apply <$$> synEq a a'+      (IApply u v r, IApply u' v' r')+                          -> (IApply u v *** IApply u' v') <$> synEq r r'       _                   -> inequal (e, e')  instance (Subst t a, SynEq a) => SynEq (Abs a) where@@ -173,7 +187,9 @@   synEq (Arg ai a) (Arg ai' a') = Arg <$$> synEq ai ai' <**> synEq a a'  instance SynEq a => SynEq (Dom a) where-  synEq (Dom ai a) (Dom ai' a') = Dom <$$> synEq ai ai' <**> synEq a a'+  synEq d@(Dom ai b x a) d'@(Dom ai' b' x' a')+    | x == x'   = Dom <$$> synEq ai ai' <**> synEq b b' <**> pure2 x <**> synEq a a'+    | otherwise = inequal (d, d')  instance SynEq ArgInfo where   synEq ai@(ArgInfo h r o _) ai'@(ArgInfo h' r' o' _)
src/full/Agda/TypeChecking/Telescope.hs view
@@ -5,9 +5,9 @@ import Prelude hiding (null)  import Control.Applicative hiding (empty)-import Control.Monad (unless, guard)+import Control.Monad -import Data.Foldable (forM_)+import Data.Foldable (forM_, find) import Data.IntSet (IntSet) import qualified Data.IntSet as IntSet import qualified Data.List as List@@ -18,10 +18,12 @@ import Agda.Syntax.Internal.Pattern import Agda.Syntax.Position +import Agda.TypeChecking.Monad.Builtin import Agda.TypeChecking.Monad import Agda.TypeChecking.Reduce import Agda.TypeChecking.Substitute import Agda.TypeChecking.Free+import Agda.TypeChecking.Warnings  import Agda.Utils.Functor import Agda.Utils.List@@ -78,19 +80,19 @@ teleArgs :: (DeBruijn a) => Telescope -> [Arg a] teleArgs tel =   [ Arg info (deBruijnVar i)-  | (i, Dom info (n,_)) <- zip (downFrom $ size l) l ]+  | (i, Dom {domInfo = info, unDom = (n,_)}) <- zip (downFrom $ size l) l ]   where l = telToList tel  withNamedArgsFromTel :: [a] -> Telescope -> [NamedArg a] xs `withNamedArgsFromTel` tel =   [ Arg info (Named (Just $ Ranged noRange $ argNameToString name) x)-  | (x, Dom info (name,_)) <- zip xs l ]+  | (x, Dom {domInfo = info, unDom = (name,_)}) <- zip xs l ]   where l = telToList tel  teleNamedArgs :: (DeBruijn a) => Telescope -> [NamedArg a] teleNamedArgs tel =-  [ Arg info (Named (Just $ Ranged noRange $ argNameToString name) (deBruijnVar i))-  | (i, Dom info (name,_)) <- zip (downFrom $ size l) l ]+  [ fmap (deBruijnVar i <$) $ namedArgFromDom dom+  | (i, dom) <- zip (downFrom $ size l) l ]   where l = telToList tel  -- | A variant of `teleNamedArgs` which takes the argument names (and the argument info)@@ -100,7 +102,7 @@ tele2NamedArgs :: (DeBruijn a) => Telescope -> Telescope -> [NamedArg a] tele2NamedArgs tel0 tel =   [ Arg info (Named (Just $ Ranged noRange $ argNameToString argName) (debruijnNamedVar varName i))-  | (i, Dom info (argName,_), Dom _ (varName,_)) <- zip3 (downFrom $ size l) l0 l ]+  | (i, Dom{domInfo = info, unDom = (argName,_)}, Dom{unDom = (varName,_)}) <- zip3 (downFrom $ size l) l0 l ]   where   l  = telToList tel   l0 = telToList tel0@@ -149,7 +151,7 @@     ts = flattenTel tel      directDependencies :: Int -> IntSet-    directDependencies i = allFreeVars $ ts !! (n-1-i)+    directDependencies i = allFreeVars $ indexWithDefault __IMPOSSIBLE__ ts (n-1-i)      allDependencies :: IntSet -> IntSet -> IntSet     allDependencies =@@ -210,7 +212,8 @@     checkDependencies soFar []     = True     checkDependencies soFar (j:js) = ok && checkDependencies (IntSet.insert j soFar) js       where-        fv' = allFreeVars $ ts0 !! (n-1-j)+        fv' = allFreeVars $  -- newline because of CPP+                indexWithDefault __IMPOSSIBLE__ ts0 (n-1-j)         fv  = fv' `IntSet.intersection` IntSet.fromAscList [ 0 .. n-1 ]         ok  = fv `IntSet.isSubsetOf` soFar @@ -227,6 +230,17 @@     m     = size is     (tel1, tel2) = telFromList -*- telFromList $ splitAt m $ telToList tel' +instantiateTelescopeN+  :: Telescope    -- ^ ⊢ Γ+  -> [(Int,Term)] -- ^ Γ ⊢ var k_i : A_i ascending order, Γ ⊢ u_i : A_i+  -> Maybe (Telescope,    -- ⊢ Γ'+            Substitution) -- Γ' ⊢ σ : Γ+instantiateTelescopeN tel []         = return (tel, IdS)+instantiateTelescopeN tel ((k,t):xs) = do+  (tel', sigma, _) <- instantiateTelescope tel k t+  (tel'', sigma')  <- instantiateTelescopeN tel' (map (subtract 1 -*- applyPatSubst sigma) xs)+  return (tel'', applyPatSubst sigma sigma')+ -- | Try to instantiate one variable in the telescope (given by its de Bruijn --   level) with the given value, returning the new telescope and a --   substitution to the old one. Returns Nothing if the given value depends@@ -280,7 +294,7 @@     (ts1,a:ts2) = fromMaybe __IMPOSSIBLE__ $                     splitExactlyAt k $ telToList gamma -    cpi         = ConPatternInfo+    cpi         = noConPatternInfo       { conPRecord = Just PatOSystem       , conPType   = Just $ snd <$> argFromDom a       , conPLazy   = True@@ -317,49 +331,227 @@   where     absV a x (TelV tel t) = TelV (ExtendTel a (Abs x tel)) t +telViewPath :: Type -> TCM TelView+telViewPath = telViewUpToPath (-1)++-- | @telViewUpToPath n t@ takes off $t$+--   the first @n@ (or arbitrary many if @n < 0@) function domains or Path types.+telViewUpToPath :: Int -> Type -> TCM TelView+telViewUpToPath 0 t = return $ TelV EmptyTel t+telViewUpToPath n t = do+  vt <- pathViewAsPi $ t+  case vt of+    Left (a,b)     -> absV a (absName b) <$> telViewUpToPath (n - 1) (absBody b)+    Right (El _ t) | Pi a b <- t+                   -> absV a (absName b) <$> telViewUpToPath (n - 1) (absBody b)+    Right t        -> return $ TelV EmptyTel t+  where+    absV a x (TelV tel t) = TelV (ExtendTel a (Abs x tel)) t++-- | [[ (i,(x,y)) ]] = [(i=0) -> x, (i=1) -> y]+type Boundary = Boundary' (Term,Term)+type Boundary' a = [(Term,a)]++-- | Like @telViewUpToPath@ but also returns the @Boundary@ expected+-- by the Path types encountered. The boundary terms live in the+-- telescope given by the @TelView@.+-- Each point of the boundary has the type of the codomain of the Path type it got taken from, see @fullBoundary@.+telViewUpToPathBoundary' :: Int -> Type -> TCM (TelView,Boundary)+telViewUpToPathBoundary' 0 t = return $ (TelV EmptyTel t,[])+telViewUpToPathBoundary' n t = do+  vt <- pathViewAsPi' $ t+  case vt of+    Left ((a,b),xy) -> addEndPoints xy . absV a (absName b) <$> telViewUpToPathBoundary' (n - 1) (absBody b)+    Right (El _ t) | Pi a b <- t+                   -> absV a (absName b) <$> telViewUpToPathBoundary' (n - 1) (absBody b)+    Right t        -> return $ (TelV EmptyTel t,[])+  where+    absV a x (TelV tel t, cs) = (TelV (ExtendTel a (Abs x tel)) t, cs)+    addEndPoints xy (telv@(TelV tel _),cs) = (telv, (var $ size tel - 1, xyInTel):cs)+      where+       xyInTel = raise (size tel) xy+++fullBoundary :: Telescope -> Boundary -> Boundary+fullBoundary tel bs =+      -- tel = Γ+      -- ΔΓ ⊢ b+      -- Δ ⊢ a = PiPath Γ bs b+      -- Δ.Γ ⊢ T is the codomain of the PathP at variable i+      -- Δ.Γ ⊢ i : I+      -- Δ.Γ ⊢ [ (i=0) -> t_i; (i=1) -> u_i ] : T+      -- Δ.Γ | PiPath Γ bs A ⊢ teleElims tel bs : b+   let es = teleElims tel bs+       l  = size tel+   in map (\ (t@(Var i []), xy) -> (t, xy `applyE` (drop (l - i) es))) bs++-- | @(TelV Γ b, [(i,t_i,u_i)]) <- telViewUpToPathBoundary n a@+--  Input:  Δ ⊢ a+--  Output: ΔΓ ⊢ b+--          ΔΓ ⊢ i : I+--          ΔΓ ⊢ [ (i=0) -> t_i; (i=1) -> u_i ] : b+telViewUpToPathBoundary :: Int -> Type -> TCM (TelView,Boundary)+telViewUpToPathBoundary i a = do+   (telv@(TelV tel b), bs) <- telViewUpToPathBoundary' i a+   return $ (telv, fullBoundary tel bs)++-- | @(TelV Γ b, [(i,t_i,u_i)]) <- telViewUpToPathBoundaryP n a@+--  Input:  Δ ⊢ a+--  Output: Δ.Γ ⊢ b+--          Δ.Γ ⊢ T is the codomain of the PathP at variable i+--          Δ.Γ ⊢ i : I+--          Δ.Γ ⊢ [ (i=0) -> t_i; (i=1) -> u_i ] : T+-- Useful to reconstruct IApplyP patterns after teleNamedArgs Γ.+telViewUpToPathBoundaryP :: Int -> Type -> TCM (TelView,Boundary)+telViewUpToPathBoundaryP = telViewUpToPathBoundary'++telViewPathBoundaryP :: Type -> TCM (TelView,Boundary)+telViewPathBoundaryP = telViewUpToPathBoundaryP (-1)+++-- | @teleElimsB args bs = es@+--  Input:  Δ.Γ ⊢ args : Γ+--          Δ.Γ ⊢ T is the codomain of the PathP at variable i+--          Δ.Γ ⊢ i : I+--          Δ.Γ ⊢ bs = [ (i=0) -> t_i; (i=1) -> u_i ] : T+--  Output: Δ.Γ | PiPath Γ bs A ⊢ es : A+teleElims :: DeBruijn a => Telescope -> Boundary' (a,a) -> [Elim' a]+teleElims tel [] = map Apply $ teleArgs tel+teleElims tel boundary = recurse (teleArgs tel)+  where+    recurse = fmap updateArg+    matchVar x =+      snd <$> flip find boundary (\case+        (Var i [],_) -> i == x+        _            -> __IMPOSSIBLE__)+    updateArg a@(Arg info p) =+      case deBruijnView p of+        Just i | Just (t,u) <- matchVar i -> IApply t u p+        _                                 -> Apply a++pathViewAsPi :: Type -> TCM (Either (Dom Type, Abs Type) Type)+pathViewAsPi t = either (Left . fst) Right <$> pathViewAsPi' t++pathViewAsPi' :: Type -> TCM (Either ((Dom Type, Abs Type), (Term,Term)) Type)+pathViewAsPi' t = do+  pathViewAsPi'whnf <*> reduce t++pathViewAsPi'whnf :: TCM (Type -> Either ((Dom Type, Abs Type), (Term,Term)) Type)+pathViewAsPi'whnf = do+  view <- pathView'+  minterval  <- getBuiltin' builtinInterval+  return $ \ t -> case view t of+    PathType s l p a x y | Just interval <- minterval ->+      let name | Lam _ (Abs n _) <- unArg a = n+               | otherwise = "i"+          i = El Inf interval+      in+        Left $ ((defaultDom $ i, Abs name $ El (raise 1 s) $ raise 1 (unArg a) `apply` [defaultArg $ var 0]), (unArg x, unArg y))++    _    -> Right t++-- | returns Left (a,b) in case the type is @Pi a b@ or @PathP b _ _@+--   assumes the type is in whnf.+piOrPath :: Type -> TCM (Either (Dom Type, Abs Type) Type)+piOrPath t = do+  t <- pathViewAsPi'whnf <*> pure t+  case t of+    Left (p,_) -> return $ Left p+    Right (El _ (Pi a b)) -> return $ Left (a,b)+    Right t -> return $ Right t++telView'UpToPath :: Int -> Type -> TCM TelView+telView'UpToPath 0 t = return $ TelV EmptyTel t+telView'UpToPath n t = do+  vt <- pathViewAsPi'whnf <*> pure t+  case vt of+    Left ((a,b),_)     -> absV a (absName b) <$> telViewUpToPath (n - 1) (absBody b)+    Right (El _ t) | Pi a b <- t+                   -> absV a (absName b) <$> telViewUpToPath (n - 1) (absBody b)+    Right t        -> return $ TelV EmptyTel t+  where+    absV a x (TelV tel t) = TelV (ExtendTel a (Abs x tel)) t++telView'Path :: Type -> TCM TelView+telView'Path = telView'UpToPath (-1)++isPath :: Type -> TCM (Maybe (Dom Type, Abs Type))+isPath t = either Just (const Nothing) <$> pathViewAsPi t++telePatterns :: (DeBruijn a, DeBruijn (Pattern' a)) =>+                 Telescope -> Boundary -> [NamedArg (Pattern' a)]+telePatterns = telePatterns' teleNamedArgs++telePatterns' :: (DeBruijn a, DeBruijn (Pattern' a)) =>+                (forall a. (DeBruijn a) => Telescope -> [NamedArg a]) -> Telescope -> Boundary -> [NamedArg (Pattern' a)]+telePatterns' f tel [] = f tel+telePatterns' f tel boundary = recurse $ f tel+  where+    recurse = (fmap . fmap . fmap) updateVar+    matchVar x =+      snd <$> flip find boundary (\case+        (Var i [],_) -> i == x+        _            -> __IMPOSSIBLE__)+    o = PatOSystem+    updateVar x =+      case deBruijnView x of+        Just i | Just (t,u) <- matchVar i -> IApplyP o t u x+        _                           -> VarP o x+ -- | Decomposing a function type. -mustBePi :: MonadTCM tcm => Type -> tcm (Dom Type, Abs Type)+mustBePi :: MonadReduce m => Type -> m (Dom Type, Abs Type) mustBePi t = ifNotPiType t __IMPOSSIBLE__ $ \ a b -> return (a,b)  -- | If the given type is a @Pi@, pass its parts to the first continuation. --   If not (or blocked), pass the reduced type to the second continuation.-ifPi :: MonadTCM tcm => Term -> (Dom Type -> Abs Type -> tcm a) -> (Term -> tcm a) -> tcm a+ifPi :: MonadReduce m => Term -> (Dom Type -> Abs Type -> m a) -> (Term -> m a) -> m a ifPi t yes no = do-  t <- liftTCM $ reduce t+  t <- reduce t   case t of     Pi a b -> yes a b     _      -> no t  -- | If the given type is a @Pi@, pass its parts to the first continuation. --   If not (or blocked), pass the reduced type to the second continuation.-ifPiType :: MonadTCM tcm => Type -> (Dom Type -> Abs Type -> tcm a) -> (Type -> tcm a) -> tcm a+ifPiType :: MonadReduce m => Type -> (Dom Type -> Abs Type -> m a) -> (Type -> m a) -> m a ifPiType (El s t) yes no = ifPi t yes (no . El s)  -- | If the given type is blocked or not a @Pi@, pass it reduced to the first continuation. --   If it is a @Pi@, pass its parts to the second continuation.-ifNotPi :: MonadTCM tcm => Term -> (Term -> tcm a) -> (Dom Type -> Abs Type -> tcm a) -> tcm a+ifNotPi :: MonadReduce m => Term -> (Term -> m a) -> (Dom Type -> Abs Type -> m a) -> m a ifNotPi = flip . ifPi  -- | If the given type is blocked or not a @Pi@, pass it reduced to the first continuation. --   If it is a @Pi@, pass its parts to the second continuation.-ifNotPiType :: MonadTCM tcm => Type -> (Type -> tcm a) -> (Dom Type -> Abs Type -> tcm a) -> tcm a+ifNotPiType :: MonadReduce m => Type -> (Type -> m a) -> (Dom Type -> Abs Type -> m a) -> m a ifNotPiType = flip . ifPiType --- | A safe variant of piApply.+ifNotPiOrPathType :: (MonadReduce tcm, MonadTCM tcm) => Type -> (Type -> tcm a) -> (Dom Type -> Abs Type -> tcm a) -> tcm a+ifNotPiOrPathType t no yes = do+  ifPiType t yes (\ t -> either (uncurry yes . fst) (const $ no t) =<< (liftTCM pathViewAsPi'whnf <*> pure t)) -piApplyM :: Type -> Args -> TCM Type-piApplyM t []           = return t-piApplyM t (arg : args) = do-  (_, b) <- mustBePi t-  absApp b (unArg arg) `piApplyM` args -piApply1 :: MonadTCM tcm => Type -> Term -> tcm Type-piApply1 t v = do-  (_, b) <- mustBePi t-  return $ absApp b v+-- | A safe variant of 'piApply'. +class PiApplyM a where+  piApplyM :: MonadReduce m => Type -> a -> m Type++instance PiApplyM Term where+  piApplyM t v = ifNotPiType t __IMPOSSIBLE__ {-else-} $ \ _ b -> return $ absApp b v++instance PiApplyM a => PiApplyM (Arg a) where+  piApplyM t = piApplyM t . unArg++instance PiApplyM a => PiApplyM (Named n a) where+  piApplyM t = piApplyM t . namedThing++instance PiApplyM a => PiApplyM [a] where+  piApplyM t = foldl (\ mt v -> mt >>= (`piApplyM` v)) (return t)++ -- | Compute type arity+ typeArity :: Type -> TCM Nat typeArity t = do   TelV tel _ <- telView t@@ -372,36 +564,41 @@ data OutputTypeName   = OutputTypeName QName   | OutputTypeVar+  | OutputTypeVisiblePi   | OutputTypeNameNotYetKnown   | NoOutputTypeName --- | Strips all Pi's and return the head definition name, if possible.-getOutputTypeName :: Type -> TCM OutputTypeName+-- | Strips all hidden and instance Pi's and return the argument+--   telescope and head definition name, if possible.+getOutputTypeName :: Type -> TCM (Telescope, OutputTypeName) getOutputTypeName t = do-  TelV tel t' <- telView t-  ifBlocked (unEl t') (\ _ _ -> return OutputTypeNameNotYetKnown) $ \ _ v ->+  TelV tel t' <- telViewUpTo' (-1) notVisible t+  ifBlocked (unEl t') (\ _ _ -> return (tel , OutputTypeNameNotYetKnown)) $ \ _ v ->     case v of       -- Possible base types:-      Def n _  -> return $ OutputTypeName n-      Sort{}   -> return NoOutputTypeName-      Var n _  -> return OutputTypeVar+      Def n _  -> return (tel , OutputTypeName n)+      Sort{}   -> return (tel , NoOutputTypeName)+      Var n _  -> return (tel , OutputTypeVar)+      Pi{}     -> return (tel , OutputTypeVisiblePi)       -- Not base types:       Con{}    -> __IMPOSSIBLE__       Lam{}    -> __IMPOSSIBLE__       Lit{}    -> __IMPOSSIBLE__       Level{}  -> __IMPOSSIBLE__       MetaV{}  -> __IMPOSSIBLE__-      Pi{}     -> __IMPOSSIBLE__       DontCare{} -> __IMPOSSIBLE__+      Dummy s    -> __IMPOSSIBLE_VERBOSE__ s +-- | Register the definition with the given type as an instance addTypedInstance :: QName -> Type -> TCM () addTypedInstance x t = do-  n <- getOutputTypeName t+  (tel , n) <- getOutputTypeName t   case n of     OutputTypeName n -> addNamedInstance x n     OutputTypeNameNotYetKnown -> addUnknownInstance x-    NoOutputTypeName -> typeError $ WrongInstanceDeclaration-    OutputTypeVar -> typeError $ WrongInstanceDeclaration+    NoOutputTypeName -> warning $ WrongInstanceDeclaration+    OutputTypeVar -> warning $ WrongInstanceDeclaration+    OutputTypeVisiblePi -> warning $ InstanceWithExplicitArg x  resolveUnknownInstanceDefs :: TCM () resolveUnknownInstanceDefs = do
src/full/Agda/TypeChecking/Telescope.hs-boot view
@@ -1,9 +1,16 @@  module Agda.TypeChecking.Telescope where +import Agda.Syntax.Common import Agda.Syntax.Internal import Agda.TypeChecking.Monad.Base import Agda.TypeChecking.Substitute -piApplyM :: Type -> Args -> TCM Type+class PiApplyM a where+  piApplyM :: MonadReduce m => Type -> a -> m Type++instance PiApplyM Term where+instance PiApplyM a => PiApplyM (Arg a) where+instance PiApplyM a => PiApplyM [a] where+ telView :: Type -> TCM TelView
+ src/full/Agda/TypeChecking/Telescope/Path.hs view
@@ -0,0 +1,91 @@+{-# LANGUAGE CPP #-}++module Agda.TypeChecking.Telescope.Path where++import Prelude hiding (null)++import Control.Applicative hiding (empty)+import Control.Monad (unless, guard)++import Data.Foldable (forM_, find)+import qualified Data.List as List+import Data.Maybe++import Agda.Syntax.Common+import Agda.Syntax.Internal+import Agda.Syntax.Internal.Pattern+import Agda.Syntax.Position++import Agda.TypeChecking.Free+import Agda.TypeChecking.Monad.Builtin+import Agda.TypeChecking.Monad+import Agda.TypeChecking.Pretty+import Agda.TypeChecking.Reduce+import Agda.TypeChecking.Substitute+import Agda.TypeChecking.Telescope++import Agda.Utils.Functor+import Agda.Utils.List+import Agda.Utils.Size++#include "undefined.h"+import Agda.Utils.Impossible+++-- | In an ambient context Γ, @telePiPath f Δ t bs@ builds a type that+-- can be @telViewPathBoundaryP'ed@ into (TelV Δ t, bs').+--   Γ.Δ ⊢ t+--   bs = [(i,u_i)]+--   Δ = Δ0,(i : I),Δ1+--   ∀ b ∈ {0,1}.  Γ.Δ0 | u_i .b : (telePiPath f Δ1 t bs)(i = b)+--   Γ ⊢ telePiPath f Δ t bs+telePiPath :: (Abs Type -> Abs Type) -> Telescope -> Type -> Boundary -> TCM Type+telePiPath reAbs tel t bs = do+  pp <- primPathP+  io <- primIOne+  let+    argN = Arg defaultArgInfo+    argH = Arg $ setHiding Hidden defaultArgInfo+    getLevel :: Abs Type -> TCM Level+    getLevel b = do+      s <- reduce $ getSort <$> b+      case s of+        NoAbs _ (Type l) -> return l+        Abs n (Type l) | NoOccurrence <- occurrence 0 s -> return $ noabsApp __IMPOSSIBLE__ (Abs n l)+        _ -> typeError . GenericError . show =<<+             (text "The type is non-fibrant or its sort depends on an interval variable" <+> prettyTCM (unAbs b))+             -- TODO better Type Error+    telePiPath :: [Int] -> Telescope -> TCM Type+    telePiPath []     EmptyTel          = pure $ t+    telePiPath (x:xs) (ExtendTel a tel)+      = case List.find (\ (t,_) -> t == var x) bs of+          Just (_,u) -> do+            -- assume a = 𝕀+            b <- b+            l <- getLevel b+            return $ El (Type l) $+              pp `apply` [ argH (Level l)+                         , argN (Lam defaultArgInfo (unEl <$> b))+                         , argN $ fst u+                         , argN $ snd u+                         ]+          Nothing    -> do+            b <- b+            return $ El (piSort (getSort a) (getSort <$> b)) (Pi a (reAbs b))+      where+        b  = traverse (telePiPath xs) tel+    telePiPath _     EmptyTel = __IMPOSSIBLE__+    telePiPath []    _        = __IMPOSSIBLE__+  telePiPath (downFrom (size tel)) tel+++iApplyVars :: DeBruijn a => [NamedArg (Pattern' a)] -> [Int]+iApplyVars ps = flip concatMap (map namedArg ps) $ \case+                             IApplyP _ t u x ->+                               [fromMaybe __IMPOSSIBLE__ (deBruijnView x)]+                             VarP{} -> []+                             ProjP{}-> []+                             LitP{} -> []+                             DotP{} -> []+                             DefP _ _ ps -> iApplyVars ps+                             ConP _ _ ps -> iApplyVars ps
src/full/Agda/TypeChecking/Unquote.hs view
@@ -26,8 +26,10 @@ import Agda.Syntax.Info import Agda.Syntax.Translation.ReflectedToAbstract +import Agda.TypeChecking.Constraints import Agda.TypeChecking.Monad import Agda.TypeChecking.Monad.Builtin+import Agda.TypeChecking.Monad.Env import Agda.TypeChecking.Pretty import Agda.TypeChecking.Reduce import Agda.TypeChecking.Substitute@@ -85,8 +87,8 @@  runUnquoteM :: UnquoteM a -> TCM (Either UnquoteError (a, [QName])) runUnquoteM m = do-  cxt <- asks envContext-  s   <- get+  cxt <- asksTC envContext+  s   <- getTC   z   <- unpackUnquoteM m cxt (Clean, s)   case z of     Left err              -> return $ Left err@@ -98,9 +100,6 @@         Function{funClauses = []} -> genericError $ "Missing definition for " ++ prettyShow x         _       -> return () -liftU :: TCM a -> UnquoteM a-liftU = lift . lift . lift . lift- liftU1 :: (TCM (UnquoteRes a) -> TCM (UnquoteRes b)) -> UnquoteM a -> UnquoteM b liftU1 f m = packUnquoteM $ \ cxt s -> f (unpackUnquoteM m cxt s) @@ -113,22 +112,22 @@     modifyContext (const cxt) $ unpackUnquoteM m cxt s  isCon :: ConHead -> TCM Term -> UnquoteM Bool-isCon con tm = do t <- liftU tm+isCon con tm = do t <- liftTCM tm                   case t of                     Con con' _ _ -> return (con == con')                     _ -> return False  isDef :: QName -> TCM Term -> UnquoteM Bool isDef f tm = do-  t <- liftU (etaContract =<< normalise =<< tm)+  t <- liftTCM $ etaContract =<< normalise =<< tm   case t of     Def g _ -> return (f == g)     _       -> return False  reduceQuotedTerm :: Term -> UnquoteM Term reduceQuotedTerm t = do-  b <- liftU $ ifBlocked t (\ m _ -> pure $ Left  m)-                           (\ _ t -> pure $ Right t)+  b <- ifBlocked t {-then-} (\ m _ -> pure $ Left  m)+                   {-else-} (\ _ t -> pure $ Right t)   case b of     Left m  -> do s <- gets snd; throwError $ BlockedOnMeta s m     Right t -> return t@@ -147,22 +146,22 @@  ensureDef :: QName -> UnquoteM QName ensureDef x = do-  i <- liftU $ either (const Axiom) theDef <$> getConstInfo' x  -- for recursive unquoteDecl+  i <- either (const Axiom) theDef <$> getConstInfo' x  -- for recursive unquoteDecl   case i of     Constructor{} -> do-      def <- liftU $ prettyTCM =<< primAgdaTermDef-      con <- liftU $ prettyTCM =<< primAgdaTermCon+      def <- liftTCM $ prettyTCM =<< primAgdaTermDef+      con <- liftTCM $ prettyTCM =<< primAgdaTermCon       throwError $ ConInsteadOfDef x (show def) (show con)     _ -> return x  ensureCon :: QName -> UnquoteM QName ensureCon x = do-  i <- liftU $ either (const Axiom) theDef <$> getConstInfo' x  -- for recursive unquoteDecl+  i <- either (const Axiom) theDef <$> getConstInfo' x  -- for recursive unquoteDecl   case i of     Constructor{} -> return x     _ -> do-      def <- liftU $ prettyTCM =<< primAgdaTermDef-      con <- liftU $ prettyTCM =<< primAgdaTermCon+      def <- liftTCM $ prettyTCM =<< primAgdaTermDef+      con <- liftTCM $ prettyTCM =<< primAgdaTermCon       throwError $ DefInsteadOfCon x (show def) (show con)  pickName :: R.Type -> String@@ -336,20 +335,17 @@     where hint x | not (null x) = x                  | otherwise    = "_" -getCurrentPath :: TCM AbsolutePath-getCurrentPath = fromMaybe __IMPOSSIBLE__ <$> asks envCurrentPath- instance Unquote MetaId where   unquote t = do     t <- reduceQuotedTerm t     case t of-      Lit (LitMeta r f x) -> liftU $ do+      Lit (LitMeta r f x) -> liftTCM $ do         live <- (f ==) <$> getCurrentPath         unless live $ do             m <- fromMaybe __IMPOSSIBLE__ <$> lookupModuleFromSource f             typeError . GenericDocError =<<-              sep [ text "Can't unquote stale metavariable"-                  , pretty m <> text "." <> pretty x ]+              sep [ "Can't unquote stale metavariable"+                  , pretty m <> "." <> pretty x ]         return x       _ -> throwError $ NonCanonical "meta variable" t @@ -376,7 +372,7 @@   unquote t = do     t <- reduceQuotedTerm t     let litMeta r x = do-          file <- liftU getCurrentPath+          file <- getCurrentPath           return $ LitMeta r file x     case t of       Con c _ es | Just [x] <- allApplyElims es ->@@ -474,13 +470,13 @@ --   (quoted). unquoteTCM :: I.Term -> I.Term -> UnquoteM I.Term unquoteTCM m hole = do-  qhole <- liftU $ quoteTerm hole+  qhole <- liftTCM $ quoteTerm hole   evalTCM (m `apply` [defaultArg qhole])  evalTCM :: I.Term -> UnquoteM I.Term evalTCM v = do   v <- reduceQuotedTerm v-  liftU $ reportSDoc "tc.unquote.eval" 90 $ text "evalTCM" <+> prettyTCM v+  liftTCM $ reportSDoc "tc.unquote.eval" 90 $ "evalTCM" <+> prettyTCM v   let failEval = throwError $ NonCanonical "type checking computation" v    case v of@@ -511,6 +507,8 @@              , (f `isDef` primAgdaTCMUnquoteTerm, tcFun1 (tcUnquoteTerm (mkT (unElim l) (unElim a))) u)              , (f `isDef` primAgdaTCMBlockOnMeta, uqFun1 tcBlockOnMeta u)              , (f `isDef` primAgdaTCMDebugPrint,  tcFun3 tcDebugPrint l a u)+             , (f `isDef` primAgdaTCMNoConstraints, tcNoConstraints (unElim u))+             , (f `isDef` primAgdaTCMRunSpeculative, tcRunSpeculative (unElim u))              ]              failEval     I.Def f [_, _, u, v] ->@@ -524,13 +522,13 @@              failEval     _ -> failEval   where-    unElim = unArg . argFromElim+    unElim = unArg . fromMaybe __IMPOSSIBLE__ . isApplyElim     tcBind m k = do v <- evalTCM m                     evalTCM (k `apply` [defaultArg v])      process :: (InstantiateFull a, Normalise a) => a -> TCM a     process v = do-      norm <- view eUnquoteNormalise+      norm <- viewTC eUnquoteNormalise       if norm then normalise v else instantiateFull v      mkT l a = El s a@@ -544,7 +542,7 @@     tcWithNormalisation :: Term -> Term -> UnquoteM Term     tcWithNormalisation b m = do       v <- unquote b-      liftU1 (locally eUnquoteNormalise $ const v) (evalTCM m)+      liftU1 (locallyTC eUnquoteNormalise $ const v) (evalTCM m)      uqFun1 :: Unquote a => (a -> UnquoteM b) -> Elim -> UnquoteM b     uqFun1 fun a = do@@ -552,7 +550,7 @@       fun a      tcFun1 :: Unquote a => (a -> TCM b) -> Elim -> UnquoteM b-    tcFun1 fun = uqFun1 (liftU . fun)+    tcFun1 fun = uqFun1 (liftTCM . fun)      uqFun2 :: (Unquote a, Unquote b) => (a -> b -> UnquoteM c) -> Elim -> Elim -> UnquoteM c     uqFun2 fun a b = do@@ -568,10 +566,10 @@       fun a b c      tcFun2 :: (Unquote a, Unquote b) => (a -> b -> TCM c) -> Elim -> Elim -> UnquoteM c-    tcFun2 fun = uqFun2 (\ x y -> liftU (fun x y))+    tcFun2 fun = uqFun2 (\ x y -> liftTCM (fun x y))      tcFun3 :: (Unquote a, Unquote b, Unquote c) => (a -> b -> c -> TCM d) -> Elim -> Elim -> Elim -> UnquoteM d-    tcFun3 fun = uqFun3 (\ x y z -> liftU (fun x y z))+    tcFun3 fun = uqFun3 (\ x y z -> liftTCM (fun x y z))      tcFreshName :: Str -> TCM Term     tcFreshName s = do@@ -594,10 +592,10 @@     tcCommit = do       dirty <- gets fst       when (dirty == Dirty) $-        liftU $ typeError $ GenericError "Cannot use commitTC after declaring new definitions."-      s <- liftU get+        typeError $ GenericError "Cannot use commitTC after declaring new definitions."+      s <- getTC       modify (second $ const s)-      liftU primUnitUnit+      liftTCM primUnitUnit      tcTypeError :: [ErrorPart] -> TCM a     tcTypeError err = typeError . GenericDocError =<< fsep (map prettyTCM err)@@ -607,6 +605,9 @@       reportSDoc s (fromIntegral n) $ fsep (map prettyTCM msg)       primUnitUnit +    tcNoConstraints :: Term -> UnquoteM Term+    tcNoConstraints m = liftU1 noConstraints (evalTCM m)+     tcInferType :: R.Term -> TCM Term     tcInferType v = do       (_, a) <- inferExpr =<< toAbstract_ v@@ -620,7 +621,7 @@       quoteTerm =<< process v      tcQuoteTerm :: Term -> UnquoteM Term-    tcQuoteTerm v = liftU $ quoteTerm =<< process v+    tcQuoteTerm v = liftTCM $ quoteTerm =<< process v      tcUnquoteTerm :: Type -> R.Term -> TCM Term     tcUnquoteTerm a v = do@@ -639,14 +640,14 @@       quoteTerm =<< reduce =<< instantiateFull v      tcGetContext :: UnquoteM Term-    tcGetContext = liftU $ do+    tcGetContext = liftTCM $ do       as <- map (fmap snd) <$> getContext       as <- etaContract =<< process as       buildList <*> mapM quoteDom as      extendCxt :: Arg R.Type -> UnquoteM a -> UnquoteM a     extendCxt a m = do-      a <- liftU $ traverse (isType_ <=< toAbstract_) a+      a <- liftTCM $ traverse (isType_ <=< toAbstract_) a       liftU1 (addContext (domFromArg a :: Dom Type)) m      tcExtendContext :: Term -> Term -> UnquoteM Term@@ -688,12 +689,12 @@     tcDeclareDef (Arg i x) a = inOriginalContext $ do       setDirty       let r = getRelevance i-      when (hidden i) $ liftU $ typeError . GenericDocError =<<-        text "Cannot declare hidden function" <+> prettyTCM x+      when (hidden i) $ liftTCM $ typeError . GenericDocError =<<+        "Cannot declare hidden function" <+> prettyTCM x       tell [x]-      liftU $ do+      liftTCM $ do         reportSDoc "tc.unquote.decl" 10 $ sep-          [ text "declare" <+> prettyTCM x <+> text ":"+          [ "declare" <+> prettyTCM x <+> ":"           , nest 2 $ prettyTCM a           ]         a <- isType_ =<< toAbstract_ a@@ -706,16 +707,16 @@     tcDeclarePostulate :: Arg QName -> R.Type -> UnquoteM Term     tcDeclarePostulate (Arg i x) a = inOriginalContext $ do       clo <- commandLineOptions-      when (Lens.getSafeMode clo) $ liftU $ typeError . GenericDocError =<<-        text "Cannot postulate '" <+> prettyTCM x <+> text ":" <+> prettyTCM a <+> text "' with safe flag"+      when (Lens.getSafeMode clo) $ liftTCM $ typeError . GenericDocError =<<+        "Cannot postulate '" <+> prettyTCM x <+> ":" <+> prettyTCM a <+> "' with safe flag"       setDirty       let r = getRelevance i-      when (hidden i) $ liftU $ typeError . GenericDocError =<<-        text "Cannot declare hidden function" <+> prettyTCM x+      when (hidden i) $ liftTCM $ typeError . GenericDocError =<<+        "Cannot declare hidden function" <+> prettyTCM x       tell [x]-      liftU $ do+      liftTCM $ do         reportSDoc "tc.unquote.decl" 10 $ sep-          [ text "declare Postulate" <+> prettyTCM x <+> text ":"+          [ "declare Postulate" <+> prettyTCM x <+> ":"           , nest 2 $ prettyTCM a           ]         a <- isType_ =<< toAbstract_ a@@ -726,7 +727,7 @@         primUnitUnit      tcDefineFun :: QName -> [R.Clause] -> UnquoteM Term-    tcDefineFun x cs = inOriginalContext $ (setDirty >>) $ liftU $ do+    tcDefineFun x cs = inOriginalContext $ (setDirty >>) $ liftTCM $ do       whenM (isLeft <$> getConstInfo' x) $         genericError $ "Missing declaration for " ++ prettyShow x       cs <- mapM (toAbstract_ . QNamed x) cs@@ -734,3 +735,14 @@       let i = mkDefInfo (nameConcrete $ qnameName x) noFixity' PublicAccess ConcreteDef noRange       checkFunDef NotDelayed i x cs       primUnitUnit++    tcRunSpeculative :: Term -> UnquoteM Term+    tcRunSpeculative mu = do+      oldState <- getTC+      u <- reduce =<< evalTCM mu+      case u of+        Con _ _ [Apply (Arg { unArg = x }), Apply (Arg { unArg = b })] -> do+          unlessM (unquote b) $ putTC oldState+          return x+        _ -> liftTCM $ typeError . GenericDocError =<<+          "Should be a pair: " <+> prettyTCM u
src/full/Agda/TypeChecking/Warnings.hs view
@@ -34,8 +34,8 @@ {-# SPECIALIZE warning_ :: Warning -> TCM TCWarning #-} warning_ :: MonadTCM tcm => Warning -> tcm TCWarning warning_ w = do-  r <- view eRange-  c <- view eCall+  r <- viewTC eRange+  c <- viewTC eCall   b <- liftTCM areWeCaching   -- NicifierIssues print their own error locations in their list of   -- issues (but we might need to keep the overall range `r` for@@ -69,7 +69,7 @@     tcwarn <- warning_ w'     if wmode ^. warn2Error && warningName w' `elem` wmode ^. warningSet     then pure (Just tcwarn)-    else Nothing <$ (stTCWarnings %= add w' tcwarn)+    else Nothing <$ (stTCWarnings `modifyTCLens` add w' tcwarn)    let errs = catMaybes merrs   unless (null errs) $ typeError $ NonFatalErrors errs
src/full/Agda/TypeChecking/With.hs view
@@ -222,11 +222,11 @@             where             fromWithP (A.WithP _ p) = p             fromWithP _ = __IMPOSSIBLE__-      reportSDoc "tc.with" 50 $ text "inheritedPats:" <+> vcat [ prettyA p <+> text "=" <+> prettyTCM v <+> text ":" <+> prettyTCM a+      reportSDoc "tc.with" 50 $ "inheritedPats:" <+> vcat [ prettyA p <+> "=" <+> prettyTCM v <+> ":" <+> prettyTCM a                                                                | A.ProblemEq p v a <- inheritedPats ]       (strippedPats, ps') <- stripWithClausePatterns cxtNames f aux t delta qs npars perm ps-      reportSDoc "tc.with" 50 $ hang (text "strippedPats:") 2 $-                                  vcat [ prettyA p <+> text "==" <+> prettyTCM v <+> (text ":" <+> prettyTCM t)+      reportSDoc "tc.with" 50 $ hang "strippedPats:" 2 $+                                  vcat [ prettyA p <+> "==" <+> prettyTCM v <+> (":" <+> prettyTCM t)                                        | A.ProblemEq p v t <- strippedPats ]       rhs <- buildRHS strippedPats rhs       let (ps1, ps2) = splitAt n1 ps'@@ -234,7 +234,7 @@                      (inheritedPats ++ strippedPats)                      rhs wh catchall       reportSDoc "tc.with" 20 $ vcat-        [ text "buildWithClause returns" <+> prettyA result+        [ "buildWithClause returns" <+> prettyA result         ]       return result @@ -289,7 +289,7 @@    test : (s : Nat × Stream Nat) (t : Stream Nat) → SEq (delay s) t → SEq t (delay s)   ~force (test (a     , as) t p) with force t-  ~force (test (suc n , as) t p) | b , bs = {!!}+  ~force (test (suc n , as) t p) | b , bs = ? @  With function:@@ -339,27 +339,27 @@   -- instantiations from qs, so we make sure   -- that t is the top-level type of the parent function and add patterns for   -- the module parameters to ps before stripping.-  let paramPat i _ = A.VarP $ A.BindName (cxtNames !! i)+  let paramPat i _ = A.VarP $ A.BindName $ indexWithDefault __IMPOSSIBLE__ cxtNames i       ps' = zipWith (fmap . fmap . paramPat) [0..] (take npars qs) ++ ps   psi <- insertImplicitPatternsT ExpandLast ps' t   reportSDoc "tc.with.strip" 10 $ vcat-    [ text "stripping patterns"-    , nest 2 $ text "t   = " <+> prettyTCM t-    , nest 2 $ text "ps  = " <+> fsep (punctuate comma $ map prettyA ps)-    , nest 2 $ text "ps' = " <+> fsep (punctuate comma $ map prettyA ps')-    , nest 2 $ text "psi = " <+> fsep (punctuate comma $ map prettyA psi)-    , nest 2 $ text "qs  = " <+> fsep (punctuate comma $ map (prettyTCM . namedArg) qs)-    , nest 2 $ text "perm= " <+> text (show perm)+    [ "stripping patterns"+    , nest 2 $ "t   = " <+> prettyTCM t+    , nest 2 $ "ps  = " <+> fsep (punctuate comma $ map prettyA ps)+    , nest 2 $ "ps' = " <+> fsep (punctuate comma $ map prettyA ps')+    , nest 2 $ "psi = " <+> fsep (punctuate comma $ map prettyA psi)+    , nest 2 $ "qs  = " <+> fsep (punctuate comma $ map (prettyTCM . namedArg) qs)+    , nest 2 $ "perm= " <+> text (show perm)     ]    -- Andreas, 2015-11-09 Issue 1710: self starts with parent-function, not with-function!   (ps', strippedPats) <- runWriterT $ strip (Def parent []) t psi qs   reportSDoc "tc.with.strip" 50 $ nest 2 $-    text "strippedPats:" <+> vcat [ prettyA p <+> text "=" <+> prettyTCM v <+> text ":" <+> prettyTCM a | A.ProblemEq p v a <- strippedPats ]+    "strippedPats:" <+> vcat [ prettyA p <+> "=" <+> prettyTCM v <+> ":" <+> prettyTCM a | A.ProblemEq p v a <- strippedPats ]   let psp = permute perm ps'   reportSDoc "tc.with.strip" 10 $ vcat-    [ nest 2 $ text "ps' = " <+> fsep (punctuate comma $ map prettyA ps')-    , nest 2 $ text "psp = " <+> fsep (punctuate comma $ map prettyA $ psp)+    [ nest 2 $ "ps' = " <+> fsep (punctuate comma $ map prettyA ps')+    , nest 2 $ "psp = " <+> fsep (punctuate comma $ map prettyA $ psp)     ]   return (strippedPats, psp)   where@@ -377,10 +377,10 @@     -- Case: out of with-clause patterns.     strip self t [] qs@(_ : _) = do       reportSDoc "tc.with.strip" 15 $ vcat-        [ text "strip (out of A.Patterns)"-        , nest 2 $ text "qs  =" <+> fsep (punctuate comma $ map (prettyTCM . namedArg) qs)-        , nest 2 $ text "self=" <+> prettyTCM self-        , nest 2 $ text "t   =" <+> prettyTCM t+        [ "strip (out of A.Patterns)"+        , nest 2 $ "qs  =" <+> fsep (punctuate comma $ map (prettyTCM . namedArg) qs)+        , nest 2 $ "self=" <+> prettyTCM self+        , nest 2 $ "t   =" <+> prettyTCM t         ]       -- Andreas, 2015-06-11, issue 1551:       -- As the type t develops, we need to insert more implicit patterns,@@ -412,15 +412,15 @@     strip self t ps0@(p0 : ps) qs0@(q : qs) = do       p <- liftTCM $ (traverse . traverse) expandLitPattern p0       reportSDoc "tc.with.strip" 15 $ vcat-        [ text "strip"-        , nest 2 $ text "ps0 =" <+> fsep (punctuate comma $ map prettyA ps0)-        , nest 2 $ text "exp =" <+> prettyA p-        , nest 2 $ text "qs0 =" <+> fsep (punctuate comma $ map (prettyTCM . namedArg) qs0)-        , nest 2 $ text "self=" <+> prettyTCM self-        , nest 2 $ text "t   =" <+> prettyTCM t+        [ "strip"+        , nest 2 $ "ps0 =" <+> fsep (punctuate comma $ map prettyA ps0)+        , nest 2 $ "exp =" <+> prettyA p+        , nest 2 $ "qs0 =" <+> fsep (punctuate comma $ map (prettyTCM . namedArg) qs0)+        , nest 2 $ "self=" <+> prettyTCM self+        , nest 2 $ "t   =" <+> prettyTCM t         ]       case namedArg q of-        ProjP o d -> case A.maybePostfixProjP p of+        ProjP o d -> case A.isProjP p of           Just (o', AmbQ ds) -> do             -- Andreas, 2016-12-28, issue #2360:             -- We disambiguate the projection in the with clause@@ -446,11 +446,14 @@         -- we can strip the dot from the with clause.         VarP PatODot x | A.DotP _ u <- namedArg p                        , A.Var y <- unScope u ->-          (setNamedArg p (A.VarP (A.BindName y)) :) <$>+          (setNamedArg p (A.VarP $ A.BindName y) :) <$>             recurse (var (dbPatVarIndex x))          VarP _ x  -> (p :) <$> recurse (var (dbPatVarIndex x)) +        IApplyP{}  -> typeError $ GenericError $ "with clauses not supported in the presence of Path patterns" -- TODO maybe we can support them now?+        DefP{}  -> typeError $ GenericError $ "with clauses not supported in the presence of hcomp patterns" -- TODO this should actually be impossible+         DotP o v  -> do           (a, _) <- mustBePi t           tell [ProblemEq (namedArg p) v a]@@ -458,7 +461,7 @@          q'@(ConP c ci qs') -> do          reportSDoc "tc.with.strip" 60 $-           text "parent pattern is constructor " <+> prettyTCM c+           "parent pattern is constructor " <+> prettyTCM c          (a, b) <- mustBePi t          -- The type of the current pattern is a datatype.          Def d es <- liftTCM $ normalise (unEl $ unDom a)@@ -510,7 +513,7 @@            p@(A.PatternSynP pi' c' ps') -> do              reportSDoc "impossible" 10 $-               text "stripWithClausePatterns: encountered pattern synonym " <+> prettyA p+               "stripWithClausePatterns: encountered pattern synonym " <+> prettyA p              __IMPOSSIBLE__            p -> do@@ -524,21 +527,25 @@            p@(A.PatternSynP pi' c' [ps']) -> do              reportSDoc "impossible" 10 $-               text "stripWithClausePatterns: encountered pattern synonym " <+> prettyA p+               "stripWithClausePatterns: encountered pattern synonym " <+> prettyA p              __IMPOSSIBLE__            _ -> mismatch       where         recurse v = do-          t' <- piApply1 t v+          caseMaybeM (liftTCM $ isPath t) (return ()) $ \ _ ->+            typeError $ GenericError $+              "With-clauses currently not supported under Path abstraction."++          t' <- piApplyM t v           strip (self `apply1` v) t' ps qs          mismatch = addContext delta $ typeError $           WithClausePatternMismatch (namedArg p0) q         mismatchOrigin o o' = addContext delta . typeError . GenericDocError =<< fsep-          [ text "With clause pattern"+          [ "With clause pattern"           , prettyA p0-          , text "is not an instance of its parent pattern"+          , "is not an instance of its parent pattern"           , P.fsep <$> prettyTCMPatterns [q]           , text $ "since the parent pattern is " ++ prettyProjOrigin o ++                    " and the with clause pattern is " ++ prettyProjOrigin o'@@ -575,25 +582,27 @@           Defn {defType = ct, theDef = Constructor{conPars = np}}  <- getConInfo c           -- Compute the argument telescope for the constructor           let ct' = ct `piApply` take np us-          TelV tel' _ <- liftTCM $ telView ct'+          TelV tel' _ <- liftTCM $ telViewPath ct'+          -- (TelV tel' _, _boundary) <- liftTCM $ telViewPathBoundaryP ct'            reportSDoc "tc.with.strip" 20 $-            vcat [ text "ct  = " <+> prettyTCM ct-                 , text "ct' = " <+> prettyTCM ct'-                 , text "np  = " <+> text (show np)-                 , text "us  = " <+> prettyList (map prettyTCM us)-                 , text "us' = " <+> prettyList (map prettyTCM $ take np us)+            vcat [ "ct  = " <+> prettyTCM ct+                 , "ct' = " <+> prettyTCM ct'+                 , "np  = " <+> text (show np)+                 , "us  = " <+> prettyList (map prettyTCM us)+                 , "us' = " <+> prettyList (map prettyTCM $ take np us)                  ] +          -- TODO Andrea: preserve IApplyP patterns in v, see _boundary?           -- Compute the new type           let v  = Con c ci [ Apply $ Arg info (var i) | (i, Arg info _) <- zip (downFrom $ size qs') qs' ]               t' = tel' `abstract` absApp (raise (size tel') b) v               self' = tel' `abstract` apply1 (raise (size tel') self) v  -- Issue 1546            reportSDoc "tc.with.strip" 15 $ sep-            [ text "inserting implicit"+            [ "inserting implicit"             , nest 2 $ prettyList $ map prettyA (ps' ++ ps)-            , nest 2 $ text ":" <+> prettyTCM t'+            , nest 2 $ ":" <+> prettyTCM t'             ]            -- Insert implicit patterns (just for the constructor arguments)@@ -674,25 +683,25 @@                  . flip (foldr addContext) (for [1..n] $ \ i -> "w" ++ show i)                  . addContext delta2   reportSDoc "tc.with.display" 20 $ vcat-    [ text "withDisplayForm"+    [ "withDisplayForm"     , nest 2 $ vcat-      [ text "f      =" <+> text (prettyShow f)-      , text "aux    =" <+> text (prettyShow aux)-      , text "delta1 =" <+> prettyTCM delta1-      , text "delta2 =" <+> do addContext delta1 $ prettyTCM delta2-      , text "n      =" <+> text (show n)-      , text "perm   =" <+> text (show perm)-      , text "top    =" <+> do addFullCtx $ prettyTCM topArgs-      , text "qs     =" <+> prettyList (map pretty qs)-      , text "qsToTm =" <+> prettyTCM tqs0 -- ctx would be permuted form of delta1 ++ delta2-      , text "ys     =" <+> text (show ys)-      , text "rho    =" <+> text (prettyShow rho)-      , text "qs[rho]=" <+> do addFullCtx $ prettyTCM tqs-      , text "dt     =" <+> do addFullCtx $ prettyTCM dt+      [ "f      =" <+> text (prettyShow f)+      , "aux    =" <+> text (prettyShow aux)+      , "delta1 =" <+> prettyTCM delta1+      , "delta2 =" <+> do addContext delta1 $ prettyTCM delta2+      , "n      =" <+> text (show n)+      , "perm   =" <+> text (show perm)+      , "top    =" <+> do addFullCtx $ prettyTCM topArgs+      , "qs     =" <+> prettyList (map pretty qs)+      , "qsToTm =" <+> prettyTCM tqs0 -- ctx would be permuted form of delta1 ++ delta2+      , "ys     =" <+> text (show ys)+      , "rho    =" <+> text (prettyShow rho)+      , "qs[rho]=" <+> do addFullCtx $ prettyTCM tqs+      , "dt     =" <+> do addFullCtx $ prettyTCM dt       ]     ]   reportSDoc "tc.with.display" 70 $ nest 2 $ vcat-      [ text "raw    =" <+> text (show display)+      [ "raw    =" <+> text (show display)       ]    return display@@ -719,6 +728,7 @@      toTerm :: DeBruijnPattern -> DisplayTerm     toTerm p = case p of+      IApplyP o _ _ x -> DTerm $ var $ dbPatVarIndex x -- TODO, should be an Elim' DisplayTerm ?       ProjP _ d   -> DDef d [] -- WRONG. TODO: convert spine to non-spine ... DDef d . defaultArg       VarP PatODot x -> DDot  $ var $ dbPatVarIndex x       VarP o x      -> DTerm  $ var $ dbPatVarIndex x@@ -726,3 +736,4 @@       DotP o t    -> DDot   $ t       ConP c cpi ps -> DCon c (fromConPatternInfo cpi) $ toTerms ps       LitP l      -> DTerm  $ Lit l+      DefP o q ps -> DDef q $ map Apply $ toTerms ps
src/full/Agda/Utils/Benchmark.hs view
@@ -97,7 +97,7 @@     aggrTimes = do       (a, (t, aggrT)) <- zip accounts times0       return $ if t == aggrT || null a-               then Boxes.text ""+               then ""                else Boxes.text $ "(" ++ prettyShow aggrT ++ ")"      -- Generate a table.@@ -113,7 +113,7 @@            sum times : times     -- Thid column: Aggregate times.     col3 = Boxes.vcat Boxes.right $-           Boxes.text "" : aggrTimes+           "" : aggrTimes      showAccount [] = "Miscellaneous"     showAccount ks = List.intercalate "." $ map prettyShow ks
src/full/Agda/Utils/Cluster.hs view
@@ -10,33 +10,38 @@ import Control.Monad  -- An imperative union-find library:-import Data.Equivalence.Monad+import Data.Equivalence.Monad (runEquivM, equateAll, classDesc)  import Data.Char import Data.Functor import qualified Data.IntMap as IntMap+import Data.Semigroup +import Agda.Utils.Functor+import Agda.Utils.NonemptyList+import Agda.Utils.Singleton+ -- | Characteristic identifiers. type C = Int --- | Given a function @f :: a -> (C,[C])@ which returns a non-empty list of+-- | Given a function @f :: a -> NonemptyList C@ which returns a non-empty list of --   characteristics @C@ of @a@, partition a list of @a@s into groups --   such that each element in a group shares at least one characteristic --   with at least one other element of the group.-cluster :: (a -> (C,[C])) -> [a] -> [[a]]+cluster :: (a -> NonemptyList C) -> [a] -> [NonemptyList a] cluster f as = cluster' $ map (\ a -> (a, f a)) as  -- | Partition a list of @a@s paired with a non-empty list of --   characteristics @C@ into groups --   such that each element in a group shares at least one characteristic --   with at least one other element of the group.-cluster' :: [(a,(C,[C]))] -> [[a]]+cluster' :: [(a, NonemptyList C)] -> [NonemptyList a] cluster' acs = runEquivM id const $ do   -- Construct the equivalence classes of characteristics.-  forM_ acs $ \ (_,(c,cs)) -> equateAll $ c:cs+  forM_ acs $ \ (_, c :! cs) -> equateAll $ c:cs   -- Pair each element with its class.-  cas <- forM acs $ \ (a,(c,_)) -> (`IntMap.singleton` [a]) <$> classDesc c+  cas <- forM acs $ \ (a, c :! _) -> classDesc c <&> \ k -> IntMap.singleton k (singleton a)   -- Create a map from class to elements.-  let m = IntMap.unionsWith (++) cas+  let m = IntMap.unionsWith (<>) cas   -- Return the values of the map   return $ IntMap.elems m
src/full/Agda/Utils/Float.hs view
@@ -12,7 +12,7 @@     LT -> True     _  -> False   where-    -- Also implemented in the GHC/UHC backends+    -- Also implemented in the GHC backend     compareFloat :: Double -> Double -> Ordering     compareFloat x y       | identicalIEEE x y          = EQ
src/full/Agda/Utils/Graph/AdjacencyMap/Unidirectional.hs view
@@ -89,7 +89,7 @@ import qualified Data.Map.Strict as Map import Data.Map.Strict (Map) import qualified Data.Maybe as Maybe-import Data.Maybe (maybeToList, fromMaybe, catMaybes)+import Data.Maybe (maybeToList, fromMaybe) import qualified Data.Set as Set import Data.Set (Set) import qualified Data.Tree as Tree@@ -171,7 +171,7 @@  instance (Pretty n, Pretty e) => Pretty (Edge n e) where   pretty (Edge s t e) =-    pretty s <+> text "--(" <> pretty e <> text ")-->" <+> pretty t+    pretty s <+> "--(" <> pretty e <> ")-->" <+> pretty t  ------------------------------------------------------------------------ -- Queries
+ src/full/Agda/Utils/Graph/TopSort.hs view
@@ -0,0 +1,41 @@+{-# language ViewPatterns #-}+module Agda.Utils.Graph.TopSort+    ( topSort+    ) where++import Data.List+import Data.Maybe+import Data.Function+import qualified Data.Set as Set+import qualified Data.Map as Map+import Control.Arrow++mergeBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]+mergeBy _ [] xs = xs+mergeBy _ xs [] = xs+mergeBy f (x:xs) (y:ys)+    | f x y = x: mergeBy f xs (y:ys)+    | otherwise = y: mergeBy f (x:xs) ys++-- | topoligical sort with smallest-numbered available vertex first+-- | input: nodes, edges+-- | output is Nothing if the graph is not a DAG+topSort :: Ord n => [n] -> [(n, n)] -> Maybe [n]+topSort nodes edges = mergeBy (<) nodes' <$> g m is+  where+    g m []+        | Map.null m = Just []+        | otherwise = Nothing+    g m ((n, Set.toList -> cs): ns)+        = (n:) <$> g m' (mergeBy ((<) `on` fst) ns [(c, s) | c<-cs, (0, s) <- maybeToList $ Map.lookup c m'])+      where+        m' = foldr (Map.adjust $ first (+(-1))) (Map.delete n m) cs++    is = map (second snd) . filter ((==0) . fst . snd) $ Map.toList m++    nodes' = Set.toList $ Set.fromList nodes `Set.difference` Set.fromList (concatMap (\(a,b)->[a,b]) edges)++    m = foldr f mempty $ nub edges+    f (b, a)+        = Map.alter (Just . maybe (1, mempty) (first (+1))) b+        . Map.alter (Just . maybe (0, Set.singleton b) (second $ Set.insert b)) a
src/full/Agda/Utils/Hash.hs view
@@ -9,23 +9,31 @@ import qualified Data.Hash as H import qualified Data.List as L import Data.Digest.Murmur64+import qualified Data.Text.Encoding as T+import Data.Text.Lazy (Text)+import qualified Data.Text.Lazy as T  import Agda.Utils.FileName+import Agda.Utils.IO.UTF8 (readTextFile)  type Hash = Word64  hashByteString :: ByteString -> Hash hashByteString = H.asWord64 . B.foldl' (\h b -> H.combine h (H.hashWord8 b)) (H.hashWord8 0) -hashFile :: AbsolutePath -> IO Hash-hashFile file = do-  s <- B.readFile (filePath file)-  return $ hashByteString s+hashTextFile :: AbsolutePath -> IO Hash+hashTextFile file = do+  s <- readTextFile (filePath file)+  return $ hashText s +-- | Hashes a piece of 'Text'.++hashText :: Text -> Hash+hashText = hashByteString . T.encodeUtf8 . T.toStrict+ combineHashes :: [Hash] -> Hash combineHashes hs = H.asWord64 $ L.foldl' H.combine (H.hashWord8 0) $ L.map H.hash hs  -- | Hashing a module name for unique identifiers. hashString :: String -> Word64 hashString = asWord64 . hash64-
+ src/full/Agda/Utils/IO/TempFile.hs view
@@ -0,0 +1,19 @@+-- | Common syntax highlighting functions for Emacs and JSON++module Agda.Utils.IO.TempFile+  ( writeToTempFile+  ) where++import qualified Agda.Utils.IO.UTF8 as UTF8++import qualified Control.Exception as E+import qualified System.Directory as D+import qualified System.IO as IO++-- | Creates a temporary file, writes some stuff, and returns the filepath+writeToTempFile :: String -> IO FilePath+writeToTempFile content = do+  dir      <- D.getTemporaryDirectory+  E.bracket (IO.openTempFile dir "agda2-mode") (IO.hClose . snd) $ \ (filepath, handle) -> do+    UTF8.hPutStr handle content+    return filepath
src/full/Agda/Utils/IO/UTF8.hs view
@@ -8,35 +8,39 @@   ) where  import Data.Text.Lazy (Text)+import qualified Data.Text.Lazy as T import qualified Data.Text.Lazy.IO as T import qualified System.IO as IO  -- | Converts many character sequences which may be interpreted as -- line or paragraph separators into '\n'.+--+-- Note that '\r\n' is assumed to have already been converted to '\n'. -convertLineEndings :: String -> String--- ASCII:-convertLineEndings ('\x000D' : '\x000A' : s) = '\n' : convertLineEndings s  -- CR LF-convertLineEndings ('\x000A'            : s) = '\n' : convertLineEndings s  -- LF  (Line feed)-convertLineEndings ('\x000D'            : s) = '\n' : convertLineEndings s  -- CR  (Carriage return)-convertLineEndings ('\x000C'            : s) = '\n' : convertLineEndings s  -- FF  (Form feed)--- Unicode:-convertLineEndings ('\x0085'            : s) = '\n' : convertLineEndings s  -- NEXT LINE-convertLineEndings ('\x2028'            : s) = '\n' : convertLineEndings s  -- LINE SEPARATOR-convertLineEndings ('\x2029'            : s) = '\n' : convertLineEndings s  -- PARAGRAPH SEPARATOR--- Not a line ending:-convertLineEndings (c                   : s) = c    : convertLineEndings s-convertLineEndings ""                        = ""+convertLineEndings :: Text -> Text+convertLineEndings = T.map convert+  where+  -- ASCII:+  convert '\x000D' = '\n'  -- CR  (Carriage return)+  convert '\x000C' = '\n'  -- FF  (Form feed)+  -- Unicode:+  convert '\x0085' = '\n'  -- NEXT LINE+  convert '\x2028' = '\n'  -- LINE SEPARATOR+  convert '\x2029' = '\n'  -- PARAGRAPH SEPARATOR+  -- Not a line ending (or '\x000A'):+  convert c        = c --- | Reads a UTF8-encoded text file and converts all Unicode line--- endings into '\n'.+-- | Reads a UTF8-encoded text file and converts many character+-- sequences which may be interpreted as line or paragraph separators+-- into '\n'. -readTextFile :: FilePath -> IO String+readTextFile :: FilePath -> IO Text readTextFile file = convertLineEndings <$> do   h <- IO.openFile file IO.ReadMode-  IO.hSetNewlineMode h IO.noNewlineTranslation+  IO.hSetNewlineMode h $+    IO.NewlineMode { IO.inputNL = IO.CRLF, IO.outputNL = IO.LF }   IO.hSetEncoding h IO.utf8-  IO.hGetContents h+  T.hGetContents h  -- | Writes UTF8-encoded text to the handle, which should be opened -- for writing and in text mode. The native convention for line
src/full/Agda/Utils/Impossible.hs view
@@ -21,6 +21,11 @@     --   Used when we reach a program point which can in principle     --   be reached, but not for a certain run. +  | ImpMissingDefinitions [String] String+    -- ^ We reached a program point without all the required+    -- primitives or BUILTIN to proceed forward.+    -- @MissingDefinitions needed forthis@+ instance Show Impossible where   show (Impossible file line) = unlines     [ "An internal error has occurred. Please report this as a bug."@@ -30,6 +35,9 @@     [ "We reached a program point we did not want to reach."     , "Location of the error: " ++ file ++ ":" ++ show line     ]+  show (ImpMissingDefinitions needed forthis) = unlines+    [ "The following builtins or primitives need to be bound to use " ++ forthis ++ ":"]+    ++ unwords needed  instance Exception Impossible 
src/full/Agda/Utils/List.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE ScopedTypeVariables #-}+ -- | Utility functions for lists.  module Agda.Utils.List where@@ -17,12 +19,21 @@  import Agda.Utils.Tuple +-- | Append a single element at the end.+--   Time: O(length); use only on small lists.+snoc :: [a] -> a -> [a]+snoc xs x = xs ++ [x]+ -- | Case distinction for lists, with list first. --   Cf. 'Agda.Utils.Null.ifNull'. caseList :: [a] -> b -> (a -> [a] -> b) -> b-caseList []     n c = n-caseList (x:xs) n c = c x xs+caseList xs n c = listCase n c xs +-- | Case distinction for lists, with list first.+--   Cf. 'Agda.Utils.Null.ifNull'.+caseListM :: Monad m => m [a] -> m b -> (a -> [a] -> m b) -> m b+caseListM mxs n c = listCase n c =<< mxs+ -- | Case distinction for lists, with list last. listCase :: b -> (a -> [a] -> b) -> [a] -> b listCase n c []     = n@@ -32,13 +43,21 @@ headMaybe :: [a] -> Maybe a headMaybe = listToMaybe --- | Head function (safe). Returns a value on empty lists.+-- | Head function (safe). Returns a default value on empty lists. -- -- > headWithDefault 42 []      = 42 -- > headWithDefault 42 [1,2,3] = 1 headWithDefault :: a -> [a] -> a headWithDefault def = fromMaybe def . headMaybe +-- | Tail function (safe).+tailMaybe :: [a] -> Maybe [a]+tailMaybe = fmap snd . uncons++-- | Tail function (safe).  Returns a default list on empty lists.+tailWithDefault :: [a] -> [a] -> [a]+tailWithDefault def = fromMaybe def . tailMaybe+ -- | Last element (safe). lastMaybe :: [a] -> Maybe a lastMaybe [] = Nothing@@ -52,6 +71,17 @@   loop x y (z:xs) = loop y z xs last2 _ = Nothing +-- | Drop from the end of a list.+--   @dropEnd n = reverse . drop n . reverse@+--   (Forces the whole list even for @n==0@.)+dropEnd :: forall a. Int -> [a] -> [a]+dropEnd n = snd . foldr f (n, [])+  where+  f :: a -> (Int, [a]) -> (Int, [a])+  f x (n, xs)+    | n <= 0    = (0, x:xs)+    | otherwise = (n-1, xs)+ -- | Opposite of cons @(:)@, safe. uncons :: [a] -> Maybe (a, [a]) uncons []     = Nothing@@ -68,12 +98,28 @@   loop a []      = ([], a)   loop a (b : bs) = mapFst (a:) $ loop b bs +-- | init, safe.+initMaybe :: [a] -> Maybe [a]+initMaybe = fmap fst . initLast+ -- | Lookup function (partially safe). (!!!) :: [a] -> Int -> Maybe a []       !!! _         = Nothing (x : _)  !!! 0         = Just x (_ : xs) !!! n         = xs !!! (n - 1) +-- | Lookup function with default value for index out of range.+--   The name is chosen akin to 'Data.List.genericIndex'.+indexWithDefault :: a -> [a] -> Int -> a+indexWithDefault a []       _ = a+indexWithDefault a (x : _)  0 = x+indexWithDefault a (_ : xs) n = indexWithDefault a xs (n - 1)++-- | Find an element satisfying a predicate and return it with its index.+--   TODO: more efficient implementation!?+findWithIndex :: (a -> Bool) -> [a] -> Maybe (a, Int)+findWithIndex p as = headMaybe $ filter (p . fst) $ zip as [0..]+ -- | downFrom n = [n-1,..1,0] downFrom :: Integral a => a -> [a] downFrom n | n <= 0     = []@@ -108,6 +154,19 @@   Left  b -> (b:bs, cs)   Right c -> (bs, c:cs) +-- | Split off the largest suffix whose elements satisfy a predicate.+--+--   @spanEnd p xs = (ys, zs)@+--   where @xs = ys ++ zs@+--   and @all p zs@+--   and @maybe True (not . p) (lastMaybe yz)@.+spanEnd :: forall a. (a -> Bool) -> [a] -> ([a], [a])+spanEnd p = snd . foldr f (True, ([], []))+  where+  f :: a -> (Bool, ([a], [a])) -> (Bool, ([a], [a]))+  f x (b', (xs, ys)) = (b, if b then (xs, x:ys) else (x:xs, ys))+    where b = b' && p x+ -- | A generalized version of @takeWhile@. --   (Cf. @mapMaybe@ vs. @filter@). takeWhileJust :: (a -> Maybe b) -> [a] -> [b]@@ -174,21 +233,39 @@     | eq p r    = loop pat rest     | otherwise = Nothing --- | Result of 'preOrSuffix'.-data PreOrSuffix a-  = IsPrefix a [a] -- ^ First list is prefix of second.-  | IsSuffix a [a] -- ^ First list is suffix of second.-  | IsBothfix      -- ^ The lists are equal.-  | IsNofix        -- ^ The lists are incomparable.+-- | @stripSuffix suf xs = Just pre@ iff @xs = pre ++ suf@.+stripSuffix :: Eq a => Suffix a -> [a] -> Maybe (Prefix a)+stripSuffix [] = Just+stripSuffix s  = stripReversedSuffix (reverse s) --- | Compare lists with respect to prefix partial order.-preOrSuffix :: Eq a => [a] -> [a] -> PreOrSuffix a-preOrSuffix []     []     = IsBothfix-preOrSuffix []     (b:bs) = IsPrefix b bs-preOrSuffix (a:as) []     = IsSuffix a as-preOrSuffix (a:as) (b:bs)-  | a == b    = preOrSuffix as bs-  | otherwise = IsNofix+type ReversedSuffix a = [a]++-- | @stripReversedSuffix rsuf xs = Just pre@ iff @xs = pre ++ reverse suf@.+stripReversedSuffix :: forall a. Eq a => ReversedSuffix a -> [a] -> Maybe (Prefix a)+stripReversedSuffix rs = final . foldr step (SSSStrip rs)+  where+  -- Step of the automaton (reading input from right to left).+  step :: a -> StrSufSt a -> StrSufSt a+  step x = \case+    SSSMismatch   -> SSSMismatch+    SSSResult xs  -> SSSResult (x:xs)+    SSSStrip []   -> SSSResult [x]+    SSSStrip (y:ys)+      | x == y    -> SSSStrip ys+      | otherwise -> SSSMismatch++  -- Output of the automaton.+  final :: StrSufSt a -> Maybe (Prefix a)+  final = \case+    SSSResult xs -> Just xs+    SSSStrip []  -> Just []+    _            -> Nothing  -- We have not stripped the whole suffix or encountered a mismatch.++-- | Internal state for stripping suffix.+data StrSufSt a+  = SSSMismatch                 -- ^ Error.+  | SSSStrip (ReversedSuffix a) -- ^ "Negative string" to remove from end. List may be empty.+  | SSSResult [a]               -- ^ "Positive string" (result). Non-empty list.  -- | Split a list into sublists. Generalisation of the prelude function --   @words@.
src/full/Agda/Utils/ListT.hs view
@@ -23,6 +23,10 @@ newtype ListT m a = ListT { runListT :: m (Maybe (a, ListT m a)) }   deriving (Functor) +-- | Boilerplate function to lift 'MonadReader' through the 'ListT' transformer.+mapListT :: (m (Maybe (a, ListT m a)) -> n (Maybe (b, ListT n b))) -> ListT m a -> ListT n b+mapListT f = ListT . f . runListT+ -- * List operations  -- | The empty lazy list.
src/full/Agda/Utils/Monad.hs view
@@ -8,8 +8,14 @@     )     where -import Prelude             hiding (concat)-import Control.Monad       hiding (mapM, forM)+import Prelude       hiding (concat)+import Control.Monad hiding (mapM, forM)++#if __GLASGOW_HASKELL__ >= 800+import qualified Control.Monad.Fail as Fail+#endif++import Control.Monad.Identity ( Identity ) import Control.Monad.State import Control.Monad.Writer import Data.Traversable as Trav hiding (for, sequence)@@ -23,10 +29,20 @@   )  import Agda.Utils.List+import Agda.Utils.Null (ifNotNullM)  #include "undefined.h" import Agda.Utils.Impossible +---------------------------------------------------------------------------++#if __GLASGOW_HASKELL__ >= 800+instance Fail.MonadFail Identity where+  fail = error+#endif++---------------------------------------------------------------------------+ -- | Binary bind. (==<<) :: Monad m => (a -> b -> m c) -> (m a, m b) -> m c k ==<< (ma, mb) = ma >>= \ a -> k a =<< mb@@ -107,6 +123,14 @@ forM' :: (Foldable t, Monad m, Monoid b) => t a -> (a -> m b) -> m b forM' = flip mapM' +-- Variations of Traversable++mapMM :: (Traversable t, Monad m) => (a -> m b) -> m (t a) -> m (t b)+mapMM f mxs = Trav.mapM f =<< mxs++forMM :: (Traversable t, Monad m) => m (t a) -> (a -> m b) -> m (t b)+forMM = flip mapMM+ -- Continuation monad -----------------------------------------------------  -- Andreas, 2017-04-11, issue #2543@@ -134,6 +158,13 @@ dropWhileM :: Monad m => (a -> m Bool) -> [a] -> m [a] dropWhileM p []       = return [] dropWhileM p (x : xs) = ifM (p x) (dropWhileM p xs) (return (x : xs))++-- | A monadic version of @'dropWhileEnd' :: (a -> Bool) -> [a] -> m [a]@.+--   Effects happen starting at the end of the list until @p@ becomes false.+dropWhileEndM :: Monad m => (a -> m Bool) -> [a] -> m [a]+dropWhileEndM p []       = return []+dropWhileEndM p (x : xs) = ifNotNullM (dropWhileEndM p xs) (return . (x:)) $ {-else-}+  ifM (p x) (return []) (return [x])  -- | A ``monadic'' version of @'partition' :: (a -> Bool) -> [a] -> ([a],[a]) partitionM :: (Functor m, Applicative m) => (a -> m Bool) -> [a] -> m ([a],[a])
src/full/Agda/Utils/NonemptyList.hs view
@@ -1,13 +1,17 @@ {-# LANGUAGE DeriveDataTypeable #-}+ -- | Nonempty lists.-module Agda.Utils.NonemptyList-  ( module Agda.Utils.NonemptyList-  , toList ) where +module Agda.Utils.NonemptyList where+ import Control.Monad+ import Data.Data (Data)-import Data.Foldable (Foldable, toList)+import Data.Foldable (Foldable)+  -- The toList method of Foldable may do something stupid,+  -- like traversing the list just to build a list again. import Data.Traversable (Traversable)+import Data.Maybe import Data.Semigroup import qualified Data.List as List @@ -29,6 +33,20 @@ instance Show a => Show (NonemptyList a) where   showsPrec _ = showList . toList +-- | Implementing conversion to list manually, since @Foldable.toList@+--   might recurse over the tail and, thus, destroy sharing.+toList :: NonemptyList a -> [a]+toList (x :! xs) = x : xs++-- | Converting a list (safe).+fromList :: [a] -> Maybe (NonemptyList a)+fromList []       = Nothing+fromList (x : xs) = Just $ x :! xs++-- | Prepending an element.+consNe :: a -> NonemptyList a -> NonemptyList a+consNe x (y :! zs) = x :! (y : zs)+ -- | Returns the union of the argument lists seen as sets. The order of the --   elements in the result is not specified. Precondition: arguments contain --   no duplicates.@@ -56,4 +74,3 @@ -- | Check if an element is present in a list. elemNe :: Eq a => a -> NonemptyList a -> Bool elemNe y (x :! xs) = elem y (x : xs)-
src/full/Agda/Utils/Null.hs view
@@ -106,8 +106,14 @@ ifNull :: (Null a) => a -> b -> (a -> b) -> b ifNull a b k = if null a then b else k a +ifNotNull :: (Null a) => a -> (a -> b) -> b -> b+ifNotNull a k b = ifNull a b k+ ifNullM :: (Monad m, Null a) => m a -> m b -> (a -> m b) -> m b ifNullM ma mb k = ma >>= \ a -> ifNull a mb k++ifNotNullM :: (Monad m, Null a) => m a -> (a -> m b) -> m b -> m b+ifNotNullM ma k mb = ifNullM ma mb k  whenNull :: (Monad m, Null a) => a -> m () -> m () whenNull = when . null
src/full/Agda/Utils/Parser/MemoisedCPS.hs view
@@ -161,7 +161,7 @@ -- | Parses a single token.  token :: ParserClass p k r tok => p tok-token = doc (text "·") (sat' Just)+token = doc "·" (sat' Just)  -- | Parses a given token. @@ -203,7 +203,7 @@       Nothing -> do         insertTable (Value IntMap.empty [k])         unP p input i $ \j r -> do-          Just (Value rs ks) <- lookupTable+          ~(Just (Value rs ks)) <- lookupTable           insertTable (Value (alter j [] (r :) rs) ks)           concat <$> mapM (\k -> k j r) ks  -- See note [Reverse ks?].       Just (Value rs ks) -> do@@ -282,14 +282,14 @@   return  = pure   p >>= f =     pg (parser p >>= parser . f)-       ((\(d, p) -> (mparens (p < bindP) d <+> text ">>= ?", bindP))+       ((\(d, p) -> (mparens (p < bindP) d <+> ">>= ?", bindP))           <$> docs p)  instance Functor (ParserWithGrammar k r tok) where   fmap f p = pg (fmap f (parser p)) (docs p)  instance Applicative (ParserWithGrammar k r tok) where-  pure x    = pg (pure x) (return (text "ε", atomP))+  pure x    = pg (pure x) (return ("ε", atomP))   p1 <*> p2 =     pg (parser p1 <*> parser p2)        (liftM2 (\(d1, p1) (d2, p2) ->@@ -305,12 +305,12 @@   (\(d, p) -> (mparens (p < starP) d <+> text s, starP)) <$> docs p  instance Alternative (ParserWithGrammar k r tok) where-  empty     = pg empty (return (text "∅", atomP))+  empty     = pg empty (return ("∅", atomP))   p1 <|> p2 =     pg (parser p1 <|> parser p2)        (liftM2 (\(d1, p1) (d2, p2) ->                    (sep [ mparens (p1 < choiceP) d1-                        , text "|"+                        , "|"                         , mparens (p2 < choiceP) d2                         ], choiceP))                (docs p1) (docs p2))@@ -340,7 +340,7 @@  instance ParserClass (ParserWithGrammar k r tok) k r tok where   parse p                 = parse (parser p)-  sat' p                  = pg (sat' p) (return (text "<sat ?>", atomP))+  sat' p                  = pg (sat' p) (return ("<sat ?>", atomP))   annotate f p            = pg (parser p) (f <$> docs p)   memoise key p           = pg (memoise key (parser p))                                (memoiseDocs key p)@@ -350,8 +350,8 @@     d       $+$     nest 2 (foldr1 ($+$) $-      text "where" :-      map (\(k, d) -> fst (prettyKey k) <+> text "∷=" <+>+      "where" :+      map (\(k, d) -> fst (prettyKey k) <+> "∷=" <+>                         maybe __IMPOSSIBLE__ fst d)           (Map.toList ds))     where
src/full/Agda/Utils/Pretty.hs view
@@ -9,7 +9,13 @@  import Data.Int ( Int32 ) import Data.Data (Data(..))+import qualified Data.Map as Map +#if __GLASGOW_HASKELL__ < 800+import qualified Data.Semigroup as S+#endif++import qualified Text.PrettyPrint as P import Text.PrettyPrint hiding (TextDetails(Str), empty)  import Agda.Utils.NonemptyList@@ -17,6 +23,13 @@ #include "undefined.h" import Agda.Utils.Impossible +#if __GLASGOW_HASKELL__ < 800+-- ASR (2019-03-27). I used @(<>)@ from the monoid instance because I+-- cannot hide this instance.+instance S.Semigroup Doc where+  (<>) = (<>)+#endif+ -- * Pretty class  -- | While 'Show' is for rendering data in Haskell syntax,@@ -54,9 +67,12 @@ instance Pretty Doc where   pretty = id +instance Pretty () where+  pretty _ = P.empty+ instance Pretty a => Pretty (Maybe a) where-  prettyPrec p Nothing  = text "Nothing"-  prettyPrec p (Just x) = mparens (p > 0) $ text "Just" <+> prettyPrec 10 x+  prettyPrec p Nothing  = "Nothing"+  prettyPrec p (Just x) = mparens (p > 0) $ "Just" <+> prettyPrec 10 x  instance Pretty a => Pretty [a] where   pretty = prettyList
src/full/Agda/Utils/Singleton.hs view
@@ -23,11 +23,15 @@ import Data.Set (Set) import qualified Data.Set as Set +import Agda.Utils.NonemptyList (NonemptyList((:!)))+ class Singleton el coll | coll -> el where   singleton :: el -> coll  instance Singleton a   (Maybe a)   where singleton = Just instance Singleton a   [a]         where singleton = (:[])+instance Singleton a   (NonemptyList a)+                                   where singleton = (:! []) instance Singleton a   (Seq a)     where singleton = Seq.singleton instance Singleton a   (Set a)     where singleton = Set.singleton instance Singleton Int IntSet      where singleton = IntSet.singleton@@ -67,4 +71,3 @@  -- newtype Wrap a = Wrap a --   deriving (Singleton)  -- Fails-
src/full/Agda/Utils/String.hs view
@@ -31,6 +31,7 @@            | c `elem` escapeChars = ['\\', c]            | otherwise            = [c] +  escapeChars :: String   escapeChars = "\"\\"  -- | Turns the string into a Haskell string literal, avoiding escape@@ -102,7 +103,7 @@  -- | Remove trailing whitespace. rtrim :: String -> String-rtrim = reverse . ltrim . reverse+rtrim = List.dropWhileEnd isSpace  -- | Remove leading and trailing whitesapce. trim :: String -> String
src/full/Agda/Utils/Suffix.hs view
@@ -88,16 +88,3 @@ addSuffix s (Prime n)     = s ++ replicate n '\'' addSuffix s (Index i)     = s ++ show i addSuffix s (Subscript i) = s ++ map toSubscriptDigit (show i)---- | Add first available @Suffix@ to a name.--nameVariant-  :: (String -> Bool) -- ^ Is the given name already taken?-  -> String           -- ^ Name of which we want an available variant.-  -> String           -- ^ Name extended by suffix that is not taken already.-nameVariant taken x-  | taken x   = addSuffix x $ trampoline step $ Subscript 1-  | otherwise = x-  where-    -- if the current suffix is taken, repeat with next suffix, else done-    step s = if taken (addSuffix x s) then Right (nextSuffix s) else Left s
src/full/Agda/Utils/Three.hs view
@@ -1,4 +1,4 @@--- | Tools for a 3-element type.+-- | Tools for 3-way partitioning.  module Agda.Utils.Three where @@ -22,3 +22,38 @@       Two   -> (as, x:bs, cs)       Three -> (as, bs, x:cs)     where (as, bs, cs) = loop xs++-- | Disjoint sum of three.+--+data Either3 a b c+  = In1 a+  | In2 b+  | In3 c+  deriving (Eq, Ord, Show)++-- | Partition a list into 3 groups.+--+--   Preserves the relative order or elements.+--+partitionEithers3 :: [Either3 a b c] -> ([a], [b], [c])+partitionEithers3 = \case+  []     -> ([], [], [])+  (x:xs) -> case x of+      In1 a -> (a:as, bs, cs)+      In2 b -> (as, b:bs, cs)+      In3 c -> (as, bs, c:cs)+    where (as, bs, cs) = partitionEithers3 xs++mapEither3M :: Applicative m => (a -> m (Either3 b c d)) -> [a] -> m ([b], [c], [d])+mapEither3M f xs = partitionEithers3 <$> traverse f xs+-- mapEither3M f = \case+--     []     -> return ([], [], [])+--     (x:xs) -> liftA2 (flip prepend) (f x) (mapEither3M f xs)+--   where+--   prepend (as, bs, cs) = \case+--     In1 b -> (b:bs, cs, ds)+--     In2 c -> (bs, c:cs, ds)+--     In3 d -> (bs, cs, d:ds)++forEither3M :: Applicative m => [a] -> (a -> m (Either3 b c d)) -> m ([b], [c], [d])+forEither3M = flip mapEither3M
+ src/full/Agda/Utils/TypeLits.hs view
@@ -0,0 +1,34 @@+{-# LANGUAGE DataKinds      #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE GADTs          #-}+++-- | Type level literals, inspired by GHC.TypeLits.++module Agda.Utils.TypeLits where++-- | Singleton for type level booleans.++data SBool (b :: Bool) where+  STrue  :: SBool 'True+  SFalse :: SBool 'False++eraseSBool :: SBool b -> Bool+eraseSBool b = case b of+  STrue  -> True+  SFalse -> False++-- | A known boolean is one we can obtain a singleton for.+--   Concrete values are trivially known.++class KnownBool (b :: Bool) where+  boolSing :: SBool b++instance KnownBool 'True where+  boolSing = STrue++instance KnownBool 'False where+  boolSing = SFalse++boolVal :: forall proxy b. KnownBool b => proxy b -> Bool+boolVal _ = eraseSBool (boolSing :: SBool b)
+ src/full/Agda/Utils/WithDefault.hs view
@@ -0,0 +1,37 @@+{-# LANGUAGE DataKinds      #-}+{-# LANGUAGE KindSignatures #-}++-- | Potentially uninitialised Booleans++-- The initial motivation for this small library is to be able to distinguish+-- between a boolean option with a default value and an option which has been+-- set to what happens to be the default value. In one case the default can be+-- overriden (e.g. --cubical implies --without-K) while in the other case the+-- user has made a mistake which they need to fix.++module Agda.Utils.WithDefault where++import Agda.Utils.TypeLits++-- We don't want to have to remember for each flag whether its default value+-- is True or False. So we bake it into the representation: the flag's type+-- will mention its default value as a phantom parameter.++data WithDefault (b :: Bool) = Default | Value Bool+  deriving (Eq, Show)++-- The main mode of operation of these flags, apart from setting them explicitly,+-- is to toggle them one way or the other if they hadn't been already.++setDefault :: Bool -> WithDefault b -> WithDefault b+setDefault b t = case t of+  Default -> Value b+  _ -> t++-- Provided that the default value is a known boolean (in practice we only use+-- True or False), we can collapse a potentially uninitialised value to a boolean.++collapseDefault :: KnownBool b => WithDefault b -> Bool+collapseDefault w = case w of+  Default -> boolVal w+  Value b -> b
src/full/Agda/VersionCommit.hs view
@@ -13,10 +13,12 @@  -- | Information about current git commit, generated at compile time commitInfo :: Maybe String-commitInfo = case $(gitHash) of-  "UNKNOWN" -> Nothing-  hash      -> Just $ abbrev hash ++ dirty+commitInfo+  | hash == "UNKNOWN" = Nothing+  | otherwise         = Just $ abbrev hash ++ dirty   where+    hash = $(gitHash)+     -- | Check if any tracked files have uncommitted changes     dirty | $(gitDirtyTracked) = "-dirty"           | otherwise          = ""
src/full/undefined.h view
@@ -5,3 +5,9 @@  #define __UNREACHABLE__ (throwImpossible (Unreachable __FILE__ __LINE__)) #define __CRASH_WHEN__ (\ k n -> whenExactVerbosity k n __UNREACHABLE__)++#define __DUMMY_TERM__  (dummyTerm  __FILE__ __LINE__)+#define __DUMMY_TYPE__  (dummyType  __FILE__ __LINE__)+#define __DUMMY_SORT__  (dummySort  __FILE__ __LINE__)+#define __DUMMY_LEVEL__ (dummyLevel __FILE__ __LINE__)+#define __DUMMY_DOM__   (dummyDom   __FILE__ __LINE__)
stack-7.10.3.yaml view
@@ -14,3 +14,5 @@ # Local packages, usually specified by relative directory name packages: - '.'+- 'src/fix-agda-whitespace'+- 'src/size-solver'
stack-8.0.2.yaml view
@@ -7,3 +7,5 @@ # Local packages, usually specified by relative directory name packages: - '.'+- 'src/fix-agda-whitespace'+- 'src/size-solver'
stack-8.2.2.yaml view
@@ -7,3 +7,5 @@ # Local packages, usually specified by relative directory name packages: - '.'+- 'src/fix-agda-whitespace'+- 'src/size-solver'
stack-8.4.4.yaml view
@@ -1,5 +1,7 @@-resolver: lts-12.16+resolver: lts-12.26  # Local packages, usually specified by relative directory name packages: - '.'+- 'src/fix-agda-whitespace'+- 'src/size-solver'
+ stack-8.6.4.yaml view
@@ -0,0 +1,20 @@+resolver: lts-13.16++extra-deps:+- EdisonCore-1.3.2.1+- data-hash-0.2.0.1+- equivalence-0.3.4+- geniplate-mirror-0.7.6+- EdisonAPI-1.3.1+- STMonadTrans-0.4.3++flags:+  time-locale-compat:+    old-locale: false++  transformers-compat:+    five-three: true++# Local packages, usually specified by relative directory name+packages:+- '.'